Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция по Пиастро.docx
Скачиваний:
24
Добавлен:
28.05.2015
Размер:
784.82 Кб
Скачать

0  Мрез  м1 м2.

Пример: Пусть заданы

R1 (КД, КМ, ЕИ, НР)

Д1 М2 1 15

Д2 М5 3 3

Д2 М9 3 5

Д3 М2 1 10

и

R2 (КМ’, НМ)

М2 Ст-5

М5 Ст-7

и требуется приписать к шифру материала его наименование. Это можно произвести с помощью операции эквисоединения

Rрез (КД, КМ, ЕИ, НР, КМ’, НМ) = R1 [(КМ = КМ’)] R2.

В результате получим

Д1 М2 1 15 М2 Ст-5

Д2 М5 3 3 М9 Ст-7

Д3 М2 1 10 М2 Ст-5

при этом избавиться от лишних столбцов и поменять столбцы местами (если нужно) можно с помощью последующей операции проекции.

Рассмотрим более подробно, как получается результат, сведя операцию соединения к последовательности операций декартова произведения и ограничения:

R1 [(КМ = КМ’)] R2 = (R1  R2) [(КМ = КМ’)]

(R1  R2) = Rпром (КД, КМ, ЕИ, НР, КМ’, НМ)

Д1 М2 1 15 М2 Ст-5

Д2 М5 3 3 М2 Ст-5

Д2 М9 3 5 М2 Ст-5

Д3 М2 1 10 М2 Ст-5

Д1 М2 1 15 М9 Ст-7

Д2 М5 3 3 М9 Ст-7

Д2 М9 3 5 М9 Ст-7

Д3 М2 1 10 М9 Ст-7

Чтобы получить результат Rпром, необходимо ограничить:

Rрез (КД, КМ, ЕИ, НР, КМ’, НМ) = Rпром [(КМ = КМ’)]

Д1 М2 1 15 М2 Ст-5

Д3 М2 1 10 М2 Ст-5

Д2 М9 3 5 М9 Ст-7

Интересно отметить, что в результирующем отношении нет сведений о нормах расхода материала «М5». Это произошло потому, что в справочнике наименований материалов (отношение R2) нет сведений об «М5», и формальное эквисоединение двух отношений выбросило строки с «М5» из результата.

Деление. Чтобы понять сущность операции деления отношений, целесообразно рассмотреть упрощенный пример.

Пусть нам задано отношение R1 (КД, КМ), которое задает возможные варианты изготовления деталей из разных материалов:

R1 (КД, КМ)

Д1 М2

Д2 М5

Д2 М9

Д3 М2

Д3 М5

Д2 М3

и

R2 (КМ)

М5

М9

Кроме того, задан список R2 (КМ) и требуется определить детали, которые могут быть сделаны из всех материалов, заданных в списке R2.

Ответ в данном случае очевиден, это деталь Д2, так как список R2 есть подмножество материалов, из которых может быть сделана деталь Д2:

{M5, M9}  {M3, M5, M9}.

Формально список деталей определяется с помощью операции деления:

Rрез (КД) = R1 [КМ  КМ] R2.

В общем случае имеется два отношения:

R1 (A1, …, An)

и R2 (В1, …, Вm)

и задан список атрибутов А, так что, не теряя общности, отношения R1 и R2 можно представить в виде

R1 (¯А, A) и R2 (А, ¯В),

где ¯А и ¯В есть дополнение списка А до полного списка атрибутов отношения R1 и R2 соответственно. Тогда

Rрез (¯А) = R1 [А  А] R2.

Степень результирующего отношения определяется количеством атрибутов в списке ¯А, а мощность Мрез  М1.

Чтобы более точно объяснить смысл операции деления, целесообразно выразить ее через ранее введенные операции. Что необходимо сделать? Необходимо дать перечень объектов из R1 [¯А], каждый из которых обладал бы совокупностью свойств R2 [А]. Для того чтобы это сделать, наделим все объекты, задаваемые совокупностью атрибутов ¯А и принадлежащие R1, совокупностью свойств R2 [А]. Это можно сделать спомощью декартова произведения:

R1 [¯А]  R2 [А].

В конкретном примере с деталями и материалами получим

R1 [КД]  R2 [КМ]

Д1 М5

Д1 М9

Д2 М5

Д2 М9

Д3 М5

Д3 М9

Получаемое в результате произведения, промежуточное отношение объединимо с отношением R1, поэтому можно взять разность

R1 [¯А]  R2 [А] \ R1 (¯А, A),

которая, будучи спроектированной на список ¯А:

(R1 [¯А]  R2 [А] \ R1 (¯А, A)) [¯А],

дает перечень объектов, не обладающих списком свойств R2 [А].

На примере

R1 [КД]  R2 [КМ] \ R1 (КД, КМ)

Д1 М5 Д1 М2

Д1 М9 Д2 М5 Д1 М5

Д2 М5 \ Д2 М9 Д1 М9

Д2 М9 Д2 М3 = Д3 М9

Д3 М5 Д3 М2

Д3 М9 Д3 М5

и после проектирования получаем список деталей {Д1, Д3}, которые не могут быть сделаны как из материала «М5», так и из «М9». После этого список объектов, обладающих свойствами R2[A], находится элементарно

Rрез (¯А) = R1 [¯А] \ (R1 [¯А]  R2 [А] \ R1 (¯А, A)) [¯А].

Именно таким образом операция деления выражается через ранее введенные операции. Полученное выражение точно описывает смысл операции деления.

Продолжается конкретный пример, получим

Rрез (КД) = R1 [КД] \ (R1 [КД]  R2 (КМ) \ R1 (КД, КМ)) [КД].

{Д1, Д2, Д3} \ {Д1, Д3} = {Д2}.

Заканчивая рассмотрение операции деления, укажем на следующее свойство:

(R1 (A)  R2 (B)) [B  B] R2 (B) = R1 (A),

то есть операция деления обратна операции умножения, что проливает свет на название операции.

Рассмотрение алгебры отношений завершим построением запроса. Пусть схема базы данных задается следующей совокупностью схем отношений:

R1 (КД, КМ, ЕИ, НР);

R2 (КМ, НМ).

Требуется перечислить шифры материалов и их наименования, которые идут на изготовление одной детали в количестве, большем, чем на 25 кг (код кг – «3»):

Rрез (КМ, НМ) = (((R1 [ЕИ = «3») & (НР  «25»)]) ([КМ])

([КМ = КМ’]R2) [КМ, НМ].

Круглые скобки определяют последовательность действий:

  • Ограничение отношения R1;

  • Проектирование промежуточного отношения;

  • Соединение с R2;

  • Проектирование с получением результата.

Четкая последовательность действий характеризует степень «процедурности» запроса. Говорят, что алгебра отношений лежит в основе процедурных языков манипулирования данными в реляционной модели баз данных.