- •Часть 2
- •Часть 2. Логика реляционная. Логика нечеткая. Учебное пособие – Калининград: кгту, 2001, с.
- •3. Логика реляционная
- •3.1. Реляционная алгебра
- •3.1.1 Унарные операторы
- •3.1.1.1 Основные операторы
- •3.1.1.2. Дополнительные операторы
- •3.1.2.1. Основные операторы
- •3.1.2.2 Дополнительные операторы
- •3.1.3 Правила реляционной алгебры
- •2 Реляционное исчисление
- •3.2.1 Реляционное исчисление с переменными-кортежами
- •3.3 Языки реляционной логики
- •Контрольные вопросы
- •В таблице “Показатели качества принтеров” (по пятибальной шкале) выбрать устройства, имеющие
- •Точечно-матричный Литерный Струйный
- •Варианты заданий
- •Продолжение
- •4. Логика нечетких множеств и отношений
- •4.1 Нечеткие множества
- •4.1.1 Определение степени принадлежности
- •4.1.2 Операции над нечеткими множествами
- •4.2 Нечеткие соответствия и отношения
- •4.3 Нечеткие высказывания, формулы и предикаты
- •4.4 Логика нечетких высказываний
- •4.5 Экспертные системы
- •3 Логика реляционная………………………………………………3
3.1.2.2 Дополнительные операторы
Оператор пересечения (r1, r2) двух отношений, имеющих одинаковые схемы, формирует новое отношение из кортежей первого и второго отношений, имеющих одинаковые значения всех одноименных атрибутов.
В результате выполнения этой операции формируется множество кортежей по правилу:
r`= {t’ t’=t1r1 и t’=t2r2 , rel(r’)=rel(r1)=rel(r2)}.
В нотации компьютерных языков оператор пересечения записывают так:
r’=INTERSECTION(r1, r2).
В
Операция
пересечения может быть реализована
оператором разности, т.к. r1r2=r1\(r1\r2).
В силу этого оператор разности отнесен
к основным, а оператор пересечения –
к дополнительным опера- торам.
Таблица 3.26
A1
A2
A3
a1
b1
c1
r1
r2
Пример. Найти пересечение табл. 1a и 1b.
r’=INTERSECTION(учебный_план_1, учебный_план_2).
Таблица 3.27
-
ДИСЦИПЛИНА
ЛЕКЦИИ,ч.
ЛАБ.ЗАНЯТИЯ,ч.
ПРАКТ.ЗАНЯТИЯ,ч.
ОТЧЕТНОСТЬ (зачет, экзамен)
физика
34
34
17
экзамен
электроника
68
34
0
экзамен
Оператор естественного соединения ><(r1, r2) формирует из двух отношений r1 и r2 , имеющих один или несколько одинаковых имен атрибутов, новое отношение r’ , схема которого есть объединение схем двух отношений, а кортежи формируются из кортежей первого отношения путем присоединения кортежей второго отношения при совпадающих значениях одноименных атрибутов.
Если два отношения не имеют одинаковых имен атрибутов, то соединение выполняется как прямое произведение двух отношений, соединяя каждый кортеж первого отношения с каждым кортежем второго отношения.
Если два отношения имеют все одинаковые имена атрибутов, то соединение выполняется как теоретико-множественное пересечение двух отношений, выбирая кортежи, принадлежащие одновременно первому и второму отношениям.
Алгоритм определения результатов естественного соединения отношений r1 и r2:
шаг 1: найти прямое произведение двух отношений r1 и r2 ;
шаг 2: совместить одноименные столбцы прямого произведения;
шаг 3: удалить строки, имеющие различные значения атрибутов в совмещаемых столбцах;
шаг 4: оставшиеся строки формируют строки нового отношения.
Оператор естественного соединения соединяет два отношения по атрибутам, имеющим одинаковое имя и значение.
В результате выполнения этой операции формируется множество кортежей по правилу:
r’={t’=<t1, t2> t1 r1; t2 r2; rel(r1)rel(r2); rel(r’)=rel(r1) rel(r2)}.
В нотации компьютерных языков оператор соединения записывают так: r’=JOIN (r1, r2).
Операция соединения симметрична, что позволяет менять местами операнды, данного оператора.
Таблица 3.28
r1><r2 |
A1 |
A2 |
A3 |
A4 |
A5 |
|
r3><r4 |
A1 |
A4 |
A5 |
A6 |
| |||||
|
a1 |
b1 |
1 |
c2 |
d3 |
|
|
a1 |
c2 |
d3 |
1 |
| |||||
|
a1 |
b1 |
1 |
c2 |
d1 |
|
|
a2 |
c1 |
d1 |
2 |
| |||||
|
a2 |
b2 |
3 |
c1 |
d1 |
|
|
|
|
|
| ||||||
|
a3 |
b3 |
2 |
c1 |
d2 |
|
|
|
|
|
|
Пример. Какие занятия по документу “Учебный_план_2” (табл. 3.1b) проводят занятия преподаватели по документу “Преподаватель_2” (табл. 3.2b)?
r’=JOIN (преподаватель_2, учебный_план_2”).
В табл. 3.1b и 3.2b сливаются два столбца с именами ДИСЦИПЛИНА и удаляются те строки, в которых значения этих атрибутов различны.
Таблица 3.29
ФАМИЛИЯ |
ИМЯ |
ОТЧЕСТВО |
ДОЛЖНОСТЬ |
ДИСЦИПЛИНА |
ЛЕКЦИИ,ч. |
ЛАБ.ЗАНЯТИЯ,ч. |
ПРАКТ.ЗАНЯТИЯ,ч. |
ОТЧЕТНОСТЬ |
петров |
сергей |
иван-ч |
доцент |
культурология |
17 |
0 |
34 |
зач |
танин |
иван |
петр-ч |
доцент |
мат. анализ |
34 |
0 |
34 |
экз |
петров |
иван |
серг-ч |
проф-р |
физика |
34 |
34 |
17 |
экз |
олин |
иван |
иван-ч |
доцент |
электроника |
68 |
34 |
0 |
экз |
Оператор -соединения ><(r1, r2) формирует из двух отношений r1 и r2 арности n1 и n2 новое отношение r’ арности (n1+ n2 ) при выполнении условия В; первые n1 компонентов кортежа нового отношения образованы кортежами, принадлежащими отношению r1, а последние n2 компонентов - кортежами, принадлежащими отношению r2; условие В задается оператором арифметического сравнения ={=, , >, , <, } двух или нескольких разноименных атрибутов по их значениям d1j и d2j, т.е. В=(d1id2j), где i, j – индексы атрибутов первого и второго отношений.
Например, при составлении маршрута перелета из пункта “a” в пункт “b” через пункт “c” можно воспользоваться расписаниями вылета из пунктов “a” и “c”, в которых указано для каждого рейса время прилета из пункта “a” в пункт “c” - tпр(aс) и время вылета из пункта “c” в пункт “b” - tвыл(cb). Соединив эти два расписания по условию В=(tпр(aс)<tвыл(cb)), можно выбрать наиболее удобные рейсы для перелета из пункта “a” в пункт “c” и из пункта “c” в пункт “b”. При этом имеем разные имена атрибутов, но общий домен.
Алгоритм определения результатов -соединения r1 и r2:
шаг 1: найти прямое произведение двух отношений r1 и r2 ;
шаг 2: если исполняется условие сравнения значений d1i и d2j i-го и j-го атрибутов первого и второго отношений, то соединить строки первой и второй табл. r1 и r2.
В результате исполнения этой операции формируется множество кортежей по правилу:
r’={t`=<t1, t2> <t1, t2>(r1r2), В=(d1id2j), rel(r’)=<rel(r1), rel(r2)>}.
В нотации компьютерных языков этот оператор записывают так:
r'= JOIN (r1, r2, УСЛОВИЕ).
Например, выполним -соединение r1 и r4 при условии d(A6)>d(A3), т.е.
r’=JOIN (r1, r4, A6>A3).
Таблица 3.30
r’ |
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
|
a1 |
b1 |
1 |
c1 |
d1 |
2 |
|
a1 |
b1 |
1 |
c2 |
d2 |
3 |
|
a1 |
b1 |
1 |
c3 |
d3 |
2 |
|
a3 |
b3 |
2 |
c2 |
d2 |
3 |
Пример. По каким дисциплинам документа “Учебный план 2”(табл. 3.1) и преподаватели по документу “Преподаватель_2” (табл. 3.2b) имеют больше часов на ЛЕКЦИИ, чем на ПРАКТИЧЕСКИЕ ЗАНЯТИЯ?
JOIN (преподаватель_2, учебный_план_2”, ЛЕК ‘час’ ПР ‘час’).
Таблица 3.31
ФАМИЛИЯ |
ИМЯ |
ОТЧЕСТВО |
ДОЛЖНОСТЬ |
ПРЕПОД. ДИСЦИПЛИНА |
УЧ_ПЛАН.ДИСЦИПЛИНА |
ЛЕКЦИИ,ч. |
ЛАБ.ЗАНЯТИЯ,ч. |
ПРАКТ.ЗАНЯТИЯ,ч. |
ОТЧЕТНОСТЬ |
петров |
иван |
серг |
проф |
физика |
физика |
34 |
34 |
17 |
экз |
олин |
иван |
иван |
доц |
электроника |
электроника |
68 |
34 |
0 |
экз |
Оператор эквисоединения есть частный случай -соединения, когда различные атрибуты разных отношений сравнивают по их значениям, т.е. В=(d1i=d2j).
Например, для судов могут быть составлены таблицы, описывающие "маршрут судна" и паспортные характеристики судна. В первой таблице есть атрибут ПОРТ НАЗНАЧЕНИЯ, во второй –ПОРТ ПРИПИСКИ. Оба эти атрибута принимают значение из одного домена - порты России (‘владивосток’, ‘мурманск’, ‘калининград’ и др.). При решении задачи о направлении судна после окончания рейса в порт приписки необходимо соединить два таблицы по двум разным атрибутам, но имеющим общее значение.
Второй пример, при составлении маршрута перелета из пункта ‘a’ в пункт ‘b’ может быть несколько промежуточных пунктов {‘c’}. В этом случае нужно воспользоваться расписаниями движения самолетов из пунктов ‘a’ и множества пунктов ‘c’, в которых указано для каждого рейса время прилета в промежуточные пункты – {tпр(aс)} и время вылета из них в пункт ‘b’ – {tвыл(cb)}. Соединив эти расписания по условию (‘с’пр=’c’выл), можно выбрать наиболее удобные рейсы и маршруты для перелета из пункта ‘a’ в пункт ‘b’. Имена атрибутов отношений разные: АЭРОПОРТ ОТПРАВЛЕНИЯ и АЭРОПОРТ ПРИБЫТИЯ, но общий домен –ИМЯ АЭРОПОРТА.
Например, соединение r1 и r4 по условию A6=A3 есть r’=JOIN (r1, r4, A6=A3).
Таблица 3.32
r’ |
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
|
a1 |
b1 |
1 |
c2 |
d3 |
1 |
|
a3 |
b3 |
2 |
c1 |
d1 |
2 |
|
a3 |
b3 |
2 |
c3 |
d3 |
2 |
|
a2 |
b2 |
3 |
c2 |
d2 |
3 |
|
a4 |
b1 |
3 |
c2 |
d2 |
3 |
Пример. По каким дисциплинам документа “Учебный план 2” (табл. 3.1b) преподаватели документа “Преподаватель_2”(табл. 3.2b) имеют одинаковое число часов лекций и лабораторных занятий?
JOIN (преподаватель_2, учебный_план_2, ЛЕК‘час’ =ЛАБ‘час’).
Результаты обработки двух таблиц представлены табл.3.33
Таблица 3.33
ФАМИЛИЯ |
ИМЯ |
ОТЧЕСТВО |
ДОЛЖНОСТЬ |
ПРЕПОД. ДИСЦИПЛИНА |
УЧ_ПЛАН. ДИСЦИПЛИНА |
ЛЕКЦИИ,ч. |
ЛАБ.ЗАН,ч. |
ПРА.ЗАН,ч. |
ОТЧЕТНОСТЬ |
петров |
иван |
серг-ч |
проф |
физика |
физика |
34 |
34 |
17 |
экз |
Оператор деления :(r1, r2) позволяет формировать из двух отношений r1 и r2 арности n1 и n2 соответственно новое отношение r’ арности (n1-n2). При этом n1> n2. Тогда (r1:r2) есть множество кортежей t’ длины (n1- n2 ) таких, что для всех кортежей t2 имеем кортежи t1=<t’t2> .
В результате выполнения этой операции будет сформировано множество кортежей по правилу:
r’={t’ t1 =<t`t2>, rel(r’)=rel(r1)\rel(r2), |rel(r’)|=|rel(r1)|-|rel(r2)|, rel(r2) }.
В нотации компьютерных языков этот оператор может быть записан так:
r'= DIVISION(r1, r2).
В табл. 3.34 даны примеры: r’1=DIV(r5, r1), r’2=DIV(r5, r4), r’3=DIV(r5, r3).
Таблица 3.34
r’1 |
A4 |
A5 |
A6 |
|
r’2 |
A1 |
A2 |
A3 |
|
r’3 |
A2 |
A3 |
A6 |
|
c1 |
d1 |
2 |
|
|
a1 |
b1 |
1 |
|
|
b1 |
1 |
1 |
|
c2 |
d1 |
3 |
|
|
a2 |
b2 |
3 |
|
|
|
|
|
|
c2 |
d2 |
3 |
|
|
a3 |
b3 |
2 |
|
|
|
|
|
|
c2 |
d3 |
1 |
|
|
|
|
|
|
|
|
|
|
|
c2 |
d3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
c3 |
d3 |
3 |
|
|
|
|
|
|
|
|
|
|