Суббота, 30.11.2024, 08:14
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
Меню сайта
Статистика
Конкурс!
конкурс сайтов
 п. 4. Условия выбора и сложные логические выражения

§ 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 "Хранение и обработка информации в базах данных"

Copyright MyCorp © 2024
ИКТ 2014
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Бесплатный хостинг uCoz