Определение 11. Пусть даны отношения и , причем атрибуты - общие для двух отношений. Делением отношений A на B называется отношение с заголовком и телом, содержащим множество кортежей , таких, что для всех кортежей в отношении A найдется кортеж .
Отношение A выступает в роли делимого, отношение B выступает в роли делителя. Деление отношений аналогично делению чисел с остатком.
Синтаксис операции деления:
Замечание. Типичные запросы, реализуемые с помощью операции деления, обычно в своей формулировке имеют слово "все" - "какие поставщики поставляют все детали?".
Пример 11. В примере с поставщиками, деталями и поставками ответим на вопрос, "какие поставщики поставляют все детали?".
В качестве делимого возьмем проекцию , содержащую номера поставщиков и номера поставляемых ими деталей:
Номер поставщика Номер детали
PNUM DNUM
1 1
1 2
1 3
2 1
2 2
3 1
Таблица 21 Проекция X=PD[PNUM,DNUM]
В качестве делителя возьмем проекцию , содержащую список номеров всех деталей (не обязательно поставляемых кем-либо):
|
|
Номер детали
DNUM
Таблица 22 Проекция Y=D[DNUM]
Деление дает список номеров поставщиков, поставляющих все детали:
Номер поставщика
PNUM
Таблица 23 Отношение X DEVIDEBY Y
Оказалось, что только поставщик с номером 1 поставляет все детали.