Операция деления отношений
Эта операция наименее
очевидна из всех операций реляционной
алгебры Кодда и
поэтому нуждается в более подробном
объяснении. Пусть заданы два отношения
– A с
заголовком {a1,
a2,
..., an,
b1,
b2,
..., bm}
и B с
заголовком {b1,
b2,
..., bm}.
Будем считать, что атрибут bi
отношения A
и атрибут bi
отношения B (i = 1, 2, …, m)
не только обладают одним и тем же именем,
но и определены на одном и том же домене.
Назовем множество атрибутов {aj}
составным атрибутом a,
а множество атрибутов {bj}
– составным атрибутом b.
После этого будем говорить о реляционном
делении
"бинарного" отношения A{a,
b} на унарное отношение
B{b}.
По определению, результатом
деления A
на B (A DIVIDE BY B)
является "унарное" отношение C{a},
тело которого состоит из кортежей v
таких, что в теле отношения A
содержатся кортежи v
UNION w такие, что множество
{w}
включает тело отношения B.
Операция реляционного
деления не является
примитивной и выражается через операции
декартова произведения,
взятия разности
и проекции.
Мы покажем это в следующей лекции.
Для иллюстрации этой операции
предположим, что в базе данных служащих
поддерживаются следующие отношения:
СЛУЖАЩИЕ,
как оно было определено ранее, и унарное
отношение НОМЕРА_ПРОЕКТОВ
{ПРО_НОМ} (рис. 7.11). Тогда
запрос СЛУЖАЩИЕ DIVIDE BY
НОМЕРА_ПРОЕКТОВ выдаст
данные обо всех служащих, участвующих
во всех проектах (результат операции
приведен также на рис. 7.11).
Рис.
7.11. Пример
реляционного деления
10