Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Матлогика Пономарев.pdf
Скачиваний:
263
Добавлен:
05.06.2015
Размер:
1.76 Mб
Скачать

122

Математическая логика

тежи r3, т. е. ¬r3= dom(r3)\ r3. Таблицами 1.15а. и 1.15b.

изображены dom(r3) и ¬r3..

Таблица 1.15а dom(r3) A1 A4 A5

a1 c1 d1 a1 c1 d2 a1 c1 d3 a1 c2 d1 a1 c2 d2 a1 c2 d3 a2 c1 d1 a2 c1 d2 a2 c1 d3 a2 c2 d1 a2 c2 d2 a2 c2 d3 a3 c1 d1 a3 c1 d2 a3 c1 d3 a3 c2 d1 a3 c2 d2 a3 c2 d3

Таблица 1.15b

¬r3 A1 A4 A5

a1 c1 d1 a1 c1 d2 a1 c1 d3 a1 c2 d2 a2 c1 d2 a2 c1 d3 a2 c2 d1 a2 c2 d2 a2 c2 d3 a3 c1 d1 a3 c1 d3 a3 c2 d1 a3 c2 d2 a3 c2 d3

1.3.1.2. Бинарные операции

Оператор объединения (r1, r2) двух отношений,

имеющих

одинаковые схемы, формирует новое отношение r’, объединяя все кортежи первого и второго отношений. При этом одинаковые кортежи двух отношений замещаются

 

 

 

 

1.3. Логика реляционная

123

одним кортежем.

 

 

Таблица 1.16

Пример 1.84. r’={t’| t’=t1 r1

 

 

r1 r

A1 A2

A3

или t’=t2 r2, rel(r’)=rel(r1)=rel(r2)}.

 

 

2

 

 

 

В нотации языков программирования

 

 

 

a1

b1

1

эту операцию описывают так: r’=

 

 

 

a2

b2

3

UNION(r1, r2).

 

 

 

a3

b3

2

В таблице 1.16 приведены результа-

 

 

 

a4

b1

3

ты исполнения операции.

 

 

 

a2

b3

1

 

 

 

 

a2

b4

2

 

 

 

 

a1

b2

3

 

 

 

Оператор прямого произведения (r1, r2) формиру-

ет из двух отношений арности n1 и n2 новое отношение r’ арности (n1+n2) и числом строк, равным (m1 m2), где ni – число атрибутов схемы i-го отношения, mi – число кортежей i-го отношения. При этом первые n1 компонент кортежа отношения r’ образованы отношением r1 , а последние n2 - отношением r2. В результате формируется

множество кортежей r`={t`=(t1, t2)| t1 r1, t2 r2, rel(r’)=(rel(r1), rel(r2))}.

В программировании это записывают так: r’=PRODUCT(r1, r2). Схема формируемого отношения есть rel(r’)=(rel(r1), rel(r2)).

 

 

 

Таблица 1.17

r1

A A A A A A

Пример 1.85. Найти

r4

1

2

3

4

5

6

r’=(r1 r4).

 

a1 b1 1 c2

d3 1

В таблице 1.17 приведены ре-

 

a1

b1

1

c1

d1

2

зультаты исполнения этой опе-

 

a1

b1

1

c2

d2

3

рации.

 

a1

b1

1

c3

d3

2

 

124

Математическая логика

a2 b2 3 c2 d3 1 a2 b2 3 c1 d1 2 a2 b2 3 c2 d2 3 a2 b2 3 c3 d3 2 a3 b3 2 c2 d3 1 a3 b3 2 c1 d1 2 a3 b3 2 c2 d2 3 a3 b3 2 c3 d3 2 a4 b1 3 c2 d3 1 a4 b1 3 c1 d1 2 a4 b1 3 c2 d2 3 a4 b1 3 c3 d3 2

Оператор разности \(r1, r2) двух отношений, имеющих одинаковые схемы, формирует новое отношение r’, выбирая из первого отношения только те кортежи, которых нет во втором отношении. В результате выполнения этой операции формируется множество кортежей по пра-

вилу: r’={t’| t = t1 r1 и t1 r2, rel(r1)=rel(r2)}.

В программировании эту операцию записывают так: r’=MINUS(r1, r2) или r’=DIFFERENCE(r1, r2).

Пример 1.86. Найти разность

Таблица 1.18

отношений r1 и r2.

r1\ r2 A1

A2

A3

В таблице 1.18 приведены резуль-

 

a2

b2

3

таты исполнения этой операции.

a3

b3

2

 

 

a4

b1

3

Оператор пересечения (r1, r2) двух отношений,

имеющих одинаковые схемы, формирует новое отношение из кортежей первого и второго отношений, имеющих оди-

1.3. Логика реляционная

125

 

 

 

наковые значения всех одноименных атрибутов. В результате выполнения этой операции имеем

r`= {t’| t’=t1 r1 и t’=t2 r2 , rel(r1)=rel(r2)}. Операция пересе-

чения может быть выполнена с помощью операторов раз-

ности r1r2=r1\(r1\r2).

В программировании эту операцию записывают так: r’=INTERSECT(r1, r2).

Пример 1.87. Найти r’= r1r2. Таблица 1.19

В таблице 1.19 приведены ре- r1r2 A1 A2 A3 a1 b1 c1

Оператор естественного соединения ><(r1, r2) по-

зволяет из отношений r1 и r2 арности n1 и n2, имеющих одинаковые имена атрибутов, создавать новое отношение r’, схема которого есть объединение схем отношений, а кортежи нового отношения есть результат соединения кортежей первого и второго отношений при одинаковых значениях одноименных атрибутов. В результате выполнения этой операции в новом отношении остаются только те кортежи, одноименные атрибуты которых имеют одинаковое значение. Одноименные атрибуты кортежа замещаются одним атрибутом:

r’={t’=(t1, t2)| t1 r1, t2 r2, rel(r’) (rel(r1) rel(r2))&(r1.Ai=r2.Ai)}.

В программировании эту операцию записывают так: r’=JOIN (r1, r2).

Пример 1.88. Найти r’= r1><r2.

В таблицах 1.20a. и1.20b. приведены результаты r’=r1><r2 и r’=r3><r4.

126

 

 

 

 

Математическая логика

 

 

 

 

 

Таблица 1.20а

Таблица 1.20b

 

r1><

A1 A2

A3

A4 A5

r3><

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Оператор θ-соединения >θ<(r1, r2) позволяет из от-

ношений r1 и r2

арности n1 и n2 создавать новое отношение

r’ арности (n1+n2) при выполнении некоторого условия

В=(A1iθA2j), где θ={=, , >, , <, }. Первые n1 компо-

нентов кортежа образованы кортежами, принадлежащими отношению r1, а последние - кортежами, принадлежащими отношению r2.

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

r’={t`=(t1, t2)| (t1, t2) (r1 r2), В=(A1iθA2j), rel(r’)=(rel(r1), rel(r2))}. В программировании эту операцию описывают

так :r’=JOIN (r1, r4, УСЛОВИЕ).

 

 

Пример 1.89. Найти

 

>θ<(r1,

r4)

при условии В=

(r1.A3>r4.A6).

Таблица 1.21

 

 

 

 

 

 

Результаты

этой операции

 

 

 

 

r’

A A A A A A

представлены в таблице 1.21.

 

 

 

a1

b

1

c1

d

2

 

 

a1

b

1

c2

d

3

 

 

 

 

 

a1

b

1

c

d

2

 

 

 

 

 

a3 b

2

c2 d 3

 

эквисоединение, когда

Частным

случаем

является

различные атрибуты различных отношений имеют одинаковое значение. В результате исполнения этой операции: r’={t`=(t1, t2)| (t1, t2) (r1 r2), rel(r’)=(rel(r1), rel(r2)), (r1.Ai=r2.Aj)}. Например, <имя_порт_приписки>=<имя_ порт_ назначения>.

1.3. Логика реляционная

127

 

 

 

Пример 1.90. r’=JOIN (r1, r4, r1.A3=r4.A6). Результаты исполнения операции приведены в таблице.

Таблица 1.22

r’

r1.A1 r1.A2 r1.A3 r4.A4 r4.A5 r4.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

Оператор деления :(r1, r2) позволяет формировать из отношений r1 и r2 арности n1 и n2 соответственно новое отношение r’ арности (n1 - n2). При этом n1> n2. Тогда :(r1, r2) есть множество кортежей t’ длины (n1 - n2 ), удовлетворяющих условию t1=(t’, t2).

В результате выполнения этой операции r’={t’| t1=(t’, t2), rel(r’)=rel(r1)\rel(r2), |rel(r’)|=|rel(r1)|-|rel(r2)|}. В програм-

мировании эту операцию описывают так: r’1= DIVISION(r1, r2),

Пример 1.91. Найти :(r5, r1), :(r5 r4), :(r5, r3).

В таблицах 1.23а, 1.23b, 1.23с приведены результаты

исполнения этой операции.

 

 

Таблица

Таблица

Таблица

r’1=

DIV(r5,

r’2=DIV(r5,

r’3=

DIV(r5,

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

 

 

 

 

 

128

Математическая логика

1.3.1.3. Правила реляционной алгебры Так как при исполнении алгебраических операций

всегда формируется одно отношение, т. е. (, Ψ, θ): Rr’, то последовательность их исполнения влияет на скорость создания r’. Поэтому при исполнении алгебраических операций следует соблюдать некоторые ограничения и правила:

r’=δB1(δB2 (r)) = δB2(δB1 (r)) – операция выбора коммутативна,

r’=δB(r1r2)= δB(r1)∩δB(r2) – операция выбора над пересечением отношений равносильна пересечению опера-

ций выбора над каждым отношением, но δB(r1)∩δB(r2) более рациональна по времени,

r’=δB(r1 r2)= δB(r1) δB(r2) – операция выбора над объединением отношений равносильна объединению опера-

ций выбора над каждым отношением, но δB(r1) δB(r2) более рациональна по времени ,

r’=δB(r1\r2)= δB(r1)\δB(r2) – операция выбора над разностью отношений равносильна разности операций выбо-

ра над каждым отношением, но δB(r1)\δB(r2) более рациональна по времени,

r’=δB(r1>< r2)= δB(r1)><r2 – операция выбора над соединением отношений равносильна соединению одного отношения с операцией выбора над другим отношени-

ем, но δB(r1) )><r2 более рациональна по времени, так как δB(r1>< r2) обрабатывает все кортежи прямого произведения r1 и r2,

r’=δB(πrel(r1))=πrel(δB(r1)) – операция проекции коммутативна с операцией выбора,