Деление

Определение

Пусть даны отношения A(X1, X2, …, Xn, Y1, Y2, …, Ym) и B(Y1, Y2, …, Ym), причем атрибуты (Y1, Y2, …, Ym) - общие для двух отношений. Делением отношений A на B называется отношение с заголовком (X1, X2, …, Xn) и телом, содержащим множество кортежей (x1, x2, …, xn), таких, что для всех кортежей (y1, y2, …, ym)ÎB в отношении A найдется кортеж (x1, x2, …, xn, y1, y2, …, ym).

Отношение A выступает в роли делимого, отношение B выступает в роли делителя. Деление отношений аналогично делению чисел с остатком.

Синтаксис операции деления: A DIVIDEBY B

Замечание. Типичные запросы, реализуемые с помощью операции деления, обычно в своей формулировке имеют слово "все" - "какие поставщики поставляют все детали?".

Пример В примере с поставщиками, деталями и поставками ответим на вопрос, "какие поставщики поставляют все детали?".

В качестве делимого возьмем проекцию X = PD[PNUM, DNUM], содержащую номера поставщиков и номера поставляемых ими деталей:

Номер поставщика PNUM Номер детали DNUM
   
   
   
   
   
   

Проекция X=PD[PNUM,DNUM]

В качестве делителя возьмем проекцию Y = D[DNUM], содержащую список номеров всех деталей (не обязательно поставляемых кем-либо):

Номер детали DNUM
 
 
 

Проекция Y=D[DNUM]

Деление X DIVIDEBY Y дает список номеров поставщиков, поставляющих все детали:

Номер поставщика PNUM
 

Отношение X DIVIDEBY Y

Оказалось, что только поставщик с номером 1 поставляет все детали.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: