Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
inform sistem.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
3.22 Mб
Скачать

Проекция [ ].

Определение: Проекцией

A[X,Y,...,Z]

отношения A по атрибутам X, Y, ...,Z, где каждый из атрибутов принадлежит отношению A, называется отношение с заголовком {X,Y,...,Z} и телом, содержащим множество всех кортежей отношения A, за исключением повторяющихся.

Никакой атрибут не может быть указан в списке атрибутов более одного раза. Проекция дает вертикальное подмножество исходного отношения. Примеры проекций.

S [CITY]

________

| CITY |

|________|

| London |

| Paris |

| Athens |

|________|

(S WHERE CITY='Paris') [S#]

_____

| S# |

|____|

| S2 |

| S3 |

|____|

P [COLOR,CITY]

________________

| COLOR | CITY |

|_______|________|

| Red | London |

| Green | Paris |

| Blue | Rome |

| Blue | Paris |

|_______|________|

Соединение ( join ).

Операция соединения имеет несколько разновидностей. Наиболее важным является естественное соединение JOIN.

Пусть отношения A и B имеют заголовки {X1,X2,...,Xm,Y1,Y2,...,Yn} и {Y1,Y2,...,Yn,Z1,Z2,...,Zp} соответственно, то есть атрибуты Y1,Y2,...,Yn- общие для двух отношений. Предположим так же, что атрибуты с одинаковыми именами определены на на одном и том же домене. Будем рассматривать выражения {X1,X2,...,Xm}, {Y1,Y2,...,Yn} ,{Z1,Z2,...,Zp} как три составных атрибута X, Y, Z соответственно.

Определение: Естественным соединением

A JOIN B

отношений A и B называется отношение с заголовком {X,Y,Z} и телом, содержащим множество всех кортежей {X:x,Y:y,Z:z}, таких, для которых в отношении A значение атрибута A равно x, атрибута Y равно y, и в отношении B значение атрибута Y равно y, атрибута Z равно z.

Соединение обладает свойствами ассоциативности и коммутативности.

Если отношения A и B не имеют общих имен атрибутов, то выражение (A JOIN B) эквивалентно (A TIMES B), то есть естественное соединение превращается в декартово произведение.

Пример естественного соединения.

S JOIN P по общему атрибуту CITY

___________________________________________________

|S#|SNAME|STATUS|CITY |P#|PNAME |COLOR|WEIGHT|

|__|_____|______|______|__|______|_____|______|

|S1|Smith| 20 |London|P1|Nut |Red | 12 |

|S1|Smith| 20 |London|P4|Screw |Red | 14 |

|S1|Smith| 20 |London|P6|Cog |Red | 19 |

|S2|Jones| 10 |Paris |P2|Bolt |Green| 17 |

|S2|Jones| 10 |Paris |P5|Cam |Blue | 12 |

|S3|Blake| 30 |Paris |P2|Bolt |Green| 17 |

|S3|Blake| 30 |Paris |P5|Cam |Blue | 12 |

|S4|Clark| 20 |London|P1|Nut |Red | 12 |

|S4|Clark| 20 |London|P4|Screw |Red | 14 |

|S4|Clark| 20 |London|P6|Cog |Red | 19 |

|__|_____|______|______|__|______|_____|______|

θ -соединение.

Пусть отношения A и B не имеют общих имен атрибутов и θ определяется так же, как и в операции выборки. Тогда θ -соединение отношения A по атрибуту X с отношением B по атрибуту Y называется результат вычисления выражения

(A TIMES B) WHERE X θ Y

Деление (divideby)

Пусть отношения A и B имеют заголовки {X1,X2,...,Xm,Y1,Y2,...,Yn} и {Y1,Y2,...,Yn} соответственно, то есть атрибуты Y1,Y2,...,Yn- общие для двух отношений. Предположим также, что атрибуты с одинаковыми именами определены на одном и том же домене. Пусть теперь выражения {X1,X2,...,Xm} и {Y1,Y2,...,Yn} обозначают два составных атрибута X и Y соответственно.

Определение. Делением

A DIVIDEBY B

отношений A и B называется отношение с заголовком {X} и телом, содержащим множество всех кортежей {X:x}, таких что существует кортеж {x:x,Y:y}, который принадлежит отношению A для всех кортежей {Y:y}, принадлежащих отношению B.

Примеры на деление.

Пусть делимое- это отношение DELE, которое является проекцией отношения SP по атрибутам S# и P#. Делитель - это отношение DEL. Рассмотрим три варианта.

DELE

_________

| S# | P# |

|____|____|____________

| S1 | P1 | | S2 | P1 |

| S1 | P2 | | S2 | P2 |

| S1 | P3 | | S3 | P2 |

| S1 | P4 | | S4 | P2 |

| S1 | P5 | | S4 | P4 |

| S1 | P6 | | S4 | P5 |

|____|____| |____|____|

1) DEL 2) DEL 3) DEL

___ ___ ___

| P#| | P#| | P#|

|___| |___| |___|

| P1| | P2| | P1|

|___| | P4| | P2|

|___| | P3|

| P4|

| P5|

| P6|

|___|

DELE DIVIDEBY DEL

1) 2) 3)

___ ___ ___

| S#| | S#| | S#|

|___| |___| |___|

| S1| | S1| | S1|

| S2| | S4| |___|

|___| |___|

В примере 3) делитель содержит номера всех деталей. Следовательно, в результате получаются номера поставщиков поставляющих все детали. Оператор деления полезен для запросов такого рода. То есть, если запрос на обычном языке включает слово "все", то почти наверняка понадобится операция деления.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]