Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
дискретка / diskr / Часть 2. Логика реляционная. Логика нечетк _ая / Часть 2. Логика реляционная. Логика нечеткая.doc
Скачиваний:
110
Добавлен:
26.05.2014
Размер:
1.56 Mб
Скачать

3.1.2.2 Дополнительные операторы

Оператор пересечения (r1, r2) двух отношений, имеющих одинаковые схемы, формирует новое отношение из кортежей первого и второго отношений, имеющих одинаковые значения всех одноименных атрибутов.

В результате выполнения этой операции формируется множество кортежей по правилу:

r`= {t’ t’=t1r1 и t’=t2r2 , rel(r’)=rel(r1)=rel(r2)}.

В нотации компьютерных языков оператор пересечения записывают так:

r’=INTERSECTION(r1, r2).

В

Операция пересечения может быть реализована оператором разности, т.к. r1r2=r1\(r1\r2). В силу этого оператор разности отнесен к основным, а оператор пересечения – к дополнительным опера- торам.

табл. 3.26 приведены результаты операции пересечения (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>(r1r2), В=(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