Примеры. Частным от деления отношения r1(R1) на отношение r2(R2), для которых R2 Í R1 и R2 не пусто, называется отношение s(R) = r1 ¸ r2

Деление

Определение

Частным от деления отношения r1(R1) на отношение r2(R2), для которых R2 Í R1 и R2 не пусто, называется отношение s(R) = r1 ¸ r2, для которого:

- схема отношения R = R1 – R2,

- реализация отношения есть множество кортежей t таких, что для всех ti Î r2 существует tj Î r1 такой, что tj(R1 – R2) = t и tj(R2) = ti.

Формальная запись:

Даны r1(R1), r2(R2), R2 Í R1, R2 ¹ 0.

s(R) = r1 ¸ r2, R = R1 – R2, s = {tj | " u Î r2 (tju Î r1)}

Другими словами, s ´ r2 Î r1.

Можно написать выражение реляционной алгебры, эквивалентное операции деления:

r1 ¸ r2 = pR1-R2(r1) – pR1-R2((pR1-R2(r1) ´ r2) – r1)

Пример:

r1 (A B C D   r2 (C D)   s = r1 ¸ r2 (A B)
  a b c d     c d     b c
  a b c f     e f     e d
  b c e f                
  b c c d                
  e d e f                
  e d c d                

Действительно, кортежи <bccd>, <bcef>, <edcd> и <edef> есть в отношении r1. Кортеж <abcd> есть в отношении r1, но кортежа <abed> нет, поэтому в s нет кортежа <ab>.

Рассмотрим некоторые примеры написания запросов к БД на языке реляционной алгебры.

Пусть дана следующая схема БД:

S(S#, SN, SC) – ПОСТАВЩИК (Номер поставщика, Имя, Город)

P(P#, PN, PC) – ДЕТАЛЬ (Номер детали, Название, Цена)

SP(S#, P#, QTY) – ПОСТАВКА (Номер поставщика, Номер детали, Количество)

1. Получить имена поставщиков, поставляющих деталь с номером P1.

pSN(sP#=P1(S SP))

2. Получить имена поставщиков, не поставляющих деталь с номером P1.

pSN(S) – pSN(sP#=P1(S SP))

3. Получить имена поставщиков, поставляющих только деталь с номером P1.

pSN(sP#=P1(S SP)) – pSN(sP#¹P1(S SP))

4. Получить имена поставщиков, поставляющих все детали.

pSN((pS#,P#(SP) ¸ pP#(P)) S)


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



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