§ 14. Условия выбора и сложные логические выражения
Основные темы параграфа:
♦ примеры, сложных логических выражений; ♦ логическое умножение (и); ♦ логическое сложение (или); ♦ отрицание; ♦ приоритеты логических операций; ♦ запрос на выборку и сложные логические выражения.
Примеры сложных логических выражений
Рассмотрим еще одну группу высказываний (табл. 3.5) и их логические значения.
Таблица 3.5. Высказывания и их логические значения
Высказывание
| Значение
|
БД «Факультативы»
|
|
1. Русанов занимается геологией.
| Истина
|
2. Шляпина посещает факультативы.
| Истина
|
БД «Успеваемость»
|
|
3. У Аликина по физике то ли 4, то ли 5.
| Истина
|
4. У Галкиной по алгебре не двойка.
| Истина
|
БД «Погода»
|
|
5. 15 марта 2004 года были осадки.
| Истина
|
6. 17 марта 2004 года влажность была меньше 100%
| Ложь
|
БД «Домашняя библиотека»
|
|
7. В библиотеке есть книги Беляева А.Р., изданные не ранее 1990 года.
| Истина
|
8. В библиотеке есть книги Толстого Л.Н. или Тургенева И.С.
| Истина
|
Каждое из этих высказываний объединяет в себе значения нескольких
полей одновременно. Поэтому они не могут быть записаны в форме простых
логических выражений.
Вот как записываются соответствующие логические выражения:
1. ФАМИЛИЯ="Русанов" и ГЕОЛОГИЯ 2. ФАМИЛИЯ="Шляпина" и (ЦВЕТОВОДСТВО или ГЕОЛОГИЯ или ТАНЦЫ) 3. УЧЕНИК="Аликин Петр" и (ФИЗИКА=4 или ФИЗИКА=5) 4. не АЛГЕБРА=2 и Ученик="Галкина Нина" 5. ДАТА=15/03/04 и (ОСАДКИ="дождь" или ОСАДКИ="снег"). 6. ДАТА=17/03/04 и ВЛАЖНОСТЬ<100 7. АВТОР= "Беляев А.Р." и ГОД>=1990 8. АВТОР= "Толстой Л.Н." или АВТОР=" Тургенев И.С."
Здесь кроме знакомых вам отношений
и имен логических полей используются смысловые связки «и», «или», «не».
Это служебные слова, которые выполняют роль знаков логических операций.
Познакомимся с тремя логическими операциями:
• операция логического умножения (конъюнкция); знак операции «и»; • операция логического сложения (дизъюнкция); знак операции «или»; • операция отрицания; знак операции «не».
Выражения, содержащие логические операции, будем называть сложными логическими выражениями.
Операции логического умножения и сложения — двуместные. Это
значит, что они связывают между собой две логические величины (два
логических операнда).
Логическое умножение (и)
В результате логического умножения (конъюкции) получается истина, если оба операнда истинны.
Пусть требуется получить справку о книгах Беляева А.Р., изданных
не раньше 1990 года, с указанием названия книги, года издания и полки,
на которой стоит книга. Соответствующая команда имеет вид:
.выбрать НАЗВАНИЕ, ГОД, ПОЛКА где АВТОР= "Беляев А.Р." и ГОД>=1990
Формирование справки происходит в такой последовательности: сначала вырезаются и склеиваются в одну таблицу все строки, удовлетворяющие первому отношению: АВТОР=Беляев А.Р. Получается следующее:
НОМЕР
| АВТОР
| НАЗВАНИЕ
| ГОД
| ПОЛКА
|
0001
| Беляев А.Р.
| Человек-амфибия
| 1987
| 5
|
0005
| Беляев А.Р.
| Звезда КЭЦ
| 1990
| 5
|
0008
| Беляев А.Р.
| Избранное
| 1994
| 7
|
Затем из этой таблицы вырезаются строки, удовлетворяющие второму отношению: ГОД>=1990. Получаем:
НОМЕР
| АВТОР
| НАЗВАНИЕ
| ГОД
| ПОЛКА
|
0005
| Беляев А.Р.
| Звезда КЭЦ
| 1990
| 5
|
0008
| Беляев А.Р.
| Избранное
| 1994
| 7
|
И наконец, вырезаются столбцы, указанные в списке полей команды. На экран выведется справка:
НАЗВАНИЕ
| ГОД
| ПОЛКА
|
Звезда КЭЦ
| 1990
| 5
|
Избранное
| 1994
| 7
|
Логическое сложение (или)
В результате логического сложения (дизъюнкции) получается истина, если значение хотя бы одного операнда истинно.
Пусть, например, мы хотим получить список всех книг Толстого Л.Н. и Тургенева И.С. Запрос на выборку пишется так:
.выбрать где АВТОР="Толстой Л.Н." или АВТОР="Тургенев И.С."
В этом случае строки, удовлетворяющие условиям АВТОР="Толстой Л.
Н." или АВТОР="Тургенев И. С.", вырезаются одновременно из исходной
таблицы. После их склеивания получаем:
НОМЕР
| АВТОР
| НАЗВАНИЕ
| ГОД
| ПОЛКА
|
0003
| Тургенев И.С.
| Повести и рассказы
| 1982
| 1
|
0007
| Толстой Л.Н.
| Повести и рассказы
| 1986
| 1
|
Отрицание
Отрицание изменяет значение логической величины на противоположное: не истина = ложь; не ложь = истина.
Отрицание — одноместная операция. Это значит, что она применяется к одному логическому операнду.
Например, требуется получить список всех книг, кроме книг Беляева. Запрос такой:
.выбрать АВТОР, НАЗВАНИЕ где не АВТОР="Беляев А.Р."
В этом случае вырезаются все строки, в которых значение поля
АВТОР не равно «Беляев А.Р.». Строки склеиваются, а из полученной
таблицы вырезаются столбцы АВТОР и НАЗВАНИЕ. После их склеивания получим
справку:
АВТОР
| НАЗВАНИЕ
|
Кервуд Д.
| Бродяги севера
|
Тургенев И.С.
| Повести и рассказы
|
Олеша Ю.К.
| Избранное
|
Тынянов Ю.Н.
| Кюхля
|
Толстой Л.Н.
| Повести и рассказы
|
Табл. 3.6 иллюстрирует результаты всех вариантов выполнения трех
логических операций. Такую таблицу называют таблицей истинности. В ней
буквами А и В обозначены логические операнды. Логическая величина
«истина» обозначена буквой И, логическая величина «ложь» — буквой Л.
Таблица 3.6.Таблица истинности
А
| Б
| А и Б
| А или Б
| не А
|
И
| И
| И
| И
| Л
|
И
| Л
| Л
| И
| Л
|
Л
| И
| Л
| И
| И
|
Л
| Л
| Л
| Л
| И
|
Приоритеты логических операций
Если в сложном логическом выражении имеется несколько логических операций, то возникает вопрос, в каком порядке их выполнит компьютер. Это касается выражений под номерами 2, 3, 4, 5 в приведенном выше примере.
В логическом выражении можно использовать круглые скобки. Так же
как и в математических формулах, скобки влияют на последовательность
выполнения операций. Если нет скобок, то операции выполняются в порядке
их старшинства. Среди логических операций, как и среди арифметических,
есть различие по старшинству (еще говорят: по приоритету). По убыванию
старшинства логические операции располагаются в таком порядке:
отрицание (не); конъюнкция (и); дизъюнкция (или).
Запрос на выборку и сложные логические выражения
Ниже приведены два логических выражения для БД «Домашняя
библиотека», отличающиеся только скобками. Цифры над знаками логических
операций указывают на последовательность их выполнения.
1 3 2 (ГОД=1987 или ГОД=1986) и (ПОЛКА=5 или ПОЛКА=1)
2 1 3 ГОД=1987 или ГОД=1986 и ПОЛКА=5 или ПОЛКА=1
Первое выражение будет истинным для записей с номерами 1, 4, 7.
Второе истинно для записей с номерами 1, 3, 4, 6,7. Постарайтесь понять,
почему.
Коротко о главном
Выражение, содержащее логические операции, называется сложным логическим выражением.
Существуют три основные логические операции: отрицание (не);
логическое умножение — конъюнкция (и); логическое сложение — дизъюнкция
(или).
Отрицание изменяет значение логической величины на
противоположное; результат логического умножения — истина только тогда,
когда истинны оба операнда; результат логического сложения — истина,
если значение хотя бы одного операнда истинно.
Порядок выполнения операций в логическом выражении определяется
старшинством операций и расстановкой скобок. В первую очередь
выполняются операции в скобках. Логические операции по убыванию
старшинства расположены так: не, и, или.
Вопросы и задания
1. Какие логические операция употребляются в сложных логических выражениях? Сформулируйте правила их выполнения. 2. Как определяется порядок выполнения логических операций в сложных выражениях? 3.
Пусть а, b, с — логические величины, которые имеют следующие значения: а
= истина, b = ложь, с = истина. Определите результаты вычисления
следующих логических выражений: а и b; а и b или с; (а или b) и (с или b); а или b; а или b и с; не (а или b) и (с или b); не а или b; не а или b и с; не (а и b и с).
4. Напишите команды выборки с использованием сложных логических выражений: • определить все даты до 17 марта, когда температура была выше нуля градусов; • определить фамилии всех учеников, которые посещают танцы, но не посещают факультатив по геологии; • получить список всех отличников по гуманитарным дисциплинам; • определить полку, на которой стоит книга Толстого Л.Н. «Повести и рассказы»; • определить фамилии авторов книг с названием «Повести и рассказы», выпущенных до 1985 года; • получить инвентарные номера всех книг, стоящих на пятой и седьмой полках; • получить фамилии авторов и названия книг, выпущенных в период с 1985 по 1990 год; • получить инвентарные номера всех книг, стоящих ниже пятой полки и изданных после 1990 года.
Тест "Поиск информации в базе данных" (К. Поляков)
Тренировочный тест к главе 3 "Хранение и обработка информации в базах данных"
|