Post on 22-Jan-2016
description
Богдан Шишеджиев - Релационна алгебра
2
Алгебрични операции• Означения
Ще означим с A(X) множеството на всички възможни реализации на релационната схема X. L/Y е ограничението на реализацията L върху множеството от атрибути Y.
• Релационни операции• сума R+S• произведение или
естествено съединение R*S
• декартово произведение RS
• обединение RS• пресичане RS• допълнение R• разлика R-S
• Проекция YR
• Деление RS
• Селекция ER
• Съединение R ⋈X1ΘY1 S
• Външно съединение R
⟕X1ΘY1 S ( )⟖ ⟗
Богдан Шишеджиев - Релационна алгебра
3
Примерна база
X={ ЧАСТ:D1, ДОСТАВЧИК:D2 }Y={ЧАСТ:D1, ПРОЕКТ:D3}Z={ЧАСТ:D1, ДОСТАВЧИК:D2, ПРОЕКТ:D3 }
D1 = { гайка, болт, винт}D2 = { петър, павел, мария }D3 = { a, b, c }
R: ЧАСТ ДОСТАВЧИК S: ЧАСТ ПРОЕКТ
гайка петър гайка a
гайка павел гайка b
болт мария болт a
Сума Произведение
4
Операция сума(1) Z=XY(2) R+S = { LA(Z) такава, че(L/X R) или (L/Y S) }
R+S ЧАСТ ДОСТАВЧИК ПРОЕКТ
гайка петър a
гайка петър b
гайка петър c
гайка павел a
гайка павел b
гайка павел c
болт мария a
болт мария b
болт мария c
болт петър a
болт павел a
гайка мария a
гайка мария b
Примерна база
Богдан Шишеджиев - Релационна алгебра
5
Операция произведение или естествено съединение
(1) Z=XY(2) R*S = { LA(Z) такава, че(L/X R) и (L/Y S) }
R*S ЧАСТ ДОСТАВЧИК ПРОЕКТ
гайка петър a
гайка петър b
гайка павел a
гайка павел b
болт мария a
Примерна база
Богдан Шишеджиев - Релационна алгебра
6
Преименуване на атрибути
• S(Y) = b/aR(X)
(1) Y = X където атрибутът a е преименован b
(2) S(Y) = R(X)
S: ЧАСТ ПРОЕКТ
гайка a
гайка b
болт a
T= ПИ/ЧАСТS: ПИ ПРОЕКТ
гайка a
гайка b
болт a
Богдан Шишеджиев - Релационна алгебра
7
Операция декартово произведениеX и Y нямат общи атрибути
(1) Z=XY(2) RS = R*S
T= ПИ/ЧАСТS: ПИ ПРОЕКТ
гайка a
гайка b
болт aR: ЧАСТ ДОСТАВЧИК
гайка петър
гайка павел
болт мария
S: ЧАСТ ПРОЕКТ
гайка a
гайка b
болт a
R Т ЧАСТ ДОСТ. ПИ ПРОЕКТ
гайка петър гайка a
гайка петър гайка b
гайка петър болт а
гайка павел гайка a
гайка павел гайка b
гайка павел болт а
болт мария гайка a
болт мария гайка b
болт мария болт aЕквисъединение
Богдан Шишеджиев - Релационна алгебра
8
Операция обединение(1) Y = X(2) RS = R+S = { L A(X) / L R L S }
R: ЧАСТ ДОСТАВЧИК
гайка петър
гайка павел
болт мария
R: ЧАСТ ДОСТАВЧИК
гайка петър
болт павел
болт мария
R S: ЧАСТ ДОСТАВЧИК
гайка петър
гайка павел
болт павел
болт мария
Богдан Шишеджиев - Релационна алгебра
9
Операции сечение и разлика(1) Y = X – една и съща схема (2) RS = R*S = { LA(X) : (L R) (L S) } (3) R-S = { LA(X) : (L R) (L S) }
R: ЧАСТ ДОСТАВЧИК
гайка петър
гайка павел
болт мария
S: ЧАСТ ДОСТАВЧИК
гайка петър
болт павел
болт мария
R S: ЧАСТ ДОСТАВЧИК
гайка петър
болт мария
R -S: ЧАСТ ДОСТАВЧИК
гайка павел
Богдан Шишеджиев - Релационна алгебра
10
Операция допълнение(1) Y = X(2) ¬R(X) = { L A(X) / L R }
R: ЧАСТ ДОСТАВЧИК
гайка петър
гайка павел
болт мария
¬R : ЧАСТ ДОСТАВЧИК
винт петър
винт павел
винт мария
болт петър
болт павел
гайка мария
Богдан Шишеджиев - Релационна алгебра
11
Операция проекция(1) Z = Y(2) YR ={LA(Y) такава, че L'A(X), (L'/Y = L) (L' R) }Пример:X={ЧАСТ:D1, ДОСТАВЧИК:D2, ПРОЕКТ:D3}Y={ЧАСТ:D1, ДОСТАВЧИК:D2}
R ЧАСТ ДОСТАВЧИК ПРОЕКТ
гайка петър a
гайка петър b
болт павел a
YR ЧАСТ ДОСТАВЧИК
гайка петър
болт павел
Богдан Шишеджиев - Релационна алгебра
12
ДелениеY X и S ≠ (1) Z = X-Y(2)RS = {L A(Z) такава, че L' A(X) ако (L'/Z = L) и (L'/Y S), то L' R }
или ощеRS = zR - z ((S zR) - R)Пример:X={ЧАСТ:D1, ДОСТАВЧИК:D2}Y={ДОСТАВЧИК:D2}
R : ЧАСТ ДОСТАВЧИК
винт петър
болт павел
болт мария
гайка петър
винт павел
болт петър
R S ДОСТАВЧИК
павел
петър
S : ЧАСТ
винт
болт
Богдан Шишеджиев - Релационна алгебра
13
Операция селекция (ограничение, избор)1) Y =X2) ER = { L A(X) / (L R) и (E(L) = true) }
R КЛАС ИМЕ. ГРАД РАЖД СПОРТ
6 петър софия 21.02.1995 футбол
5 иван варна 30.04.1996 баскетбол
6 георги правец 12.08.1995 футбол
7 павел пловдив 03.06.1994 тенис
5 атанас софия 05.12.1995 плуване
E =(ГРАД='софия') (РАЖД ≤ '30.12.1995') ((СПОРТ='плуване') (SPORT='футбол'))
ERКЛАС ИМЕ. ГРАД РАЖД СПОРТ
6 петър софия 21.02.1995 футбол
5 атанас софия 05.12.1995 плуване
Богдан Шишеджиев - Релационна алгебра
14
Операция съединениеX и Y нямат общи атрибути
(=, <, >, ≤, ≥, ≠)
(1) Z=XY
(2) R ⋈ X1 Y1 S = { LA(Z) така, че L/X R et L/Y S и (X1 Y1)(L) = true }
или още
R ⋈ X1 Y1 S = X1 Y1 (RS)
R : A B C
9 8 7
6 5 4
3 2 1
S : D E
3 4
5 6
R ⋈B≤D S : A B C D E
3 2 1 3 4
3 2 1 5 6
6 5 4 5 6
Богдан Шишеджиев - Релационна алгебра
15
Операция съединение
• Еквисъединение
R ⋈ЧАСТ=ПИ S ЧАСТ ДОСТ. ПИ ПРОЕКТ
гайка петър гайка a
гайка петър гайка b
гайка павел гайка a
гайка павел гайка b
болт мария болт a
Примерна база
Богдан Шишеджиев - Релационна алгебра
16
Свойства на операциите
• Идемпотентност на сумата : R+R = R• Идемпотентност на произведението : R*R = R• Асоциативност на сумата: R+(S+T) = (R+S)+T• Асоциативност на произведението: R*(S*T) = (R*S)*T• Комутативност на сумата: R+S = S+R• Комутативност на произведението: R*S = S*R• Дистрибутивност на сумата по отношение на
произведението:R+(S*T) = (R+S)*(R+T)
• Дистрибутивност на произведението по отношение на сумата:
R*(S+T) = (R*S)+(R*T)
Богдан Шишеджиев - Релационна алгебра
17
Пример за композицияJET : #JET JETNAME CAP LOC
100 airbus 300 nice
101 airbus 300 paris
102 carav 200 toulousePILOTE : #PL PLNOM ADR1 serge nice
2 jean paris
3 claude grenoble
FLY : #FLY #PL #JET DC AC DH AH
it100 1 100 nice paris 7 8
it101 2 100 paris toulouse 11 12
it102 1 101 paris nice 12 13
it103 3 102 grenoble toulouse 9 11
it104 3 101 toulouse grenoble 17 18
Богдан Шишеджиев - Релационна алгебра
18
Пример за композицияR1 = #JET, JETNAME JET (проекция)
R2 = #JET, #PL FLY (проекция)
R3 = R1 * R2(произведение)
R4 = JETНАМЕ, #PL R3 (проекция)
R5 = JETНАМЕ JET (проекция)
R6 = R4 R5(деление)
R7 = #PL, PLNAME PILOTE [#PL, PLNAME](проекция)
R8 = R7 * R6(произведение)
ОТГОВОР = PLNAME R8 [PLNAME] (проекция)
R1 : #JET JETNAME100 airbus
101 airbus
102 carav
R2 : #PL #JET
1 100
2 100
1 101
3 102
3 101
R3 : #JET JETNAME #PL100 airbus 1
101 airbus 1
100 airbus 2
101 airbus 3
102 carav 3
R5 : JETNAMEairbus
carav
R4 : JETNAME #PLairbus 1
airbus 2
airbus 3
carav 3
R6 : #PL3
R7 : #PL PLNOM1 serge
2 jean
3 claude
R8 : #PL PLNOM3 claude
O: PLNOMclaude
Богдан Шишеджиев - Релационна алгебра
19
Неопределени стойности TRUE FALSE INDEFI
NITE
TRUE TRUE FALSE
FALSE FALSE
FALSE FALSE
FALSE
¬
TRUE FALSE
FALSE TRUE
. .
TRUE FALSE
INDEFINITE
TRUE TRUE TRUE TRUE
FALSE TRUE FALSE
TRUE
Богдан Шишеджиев - Релационна алгебра
20
Външно съединениеXY=(1)Z=XY
(2)R ⟕X1Y1 S = T ( (R - XT) (Y) ) където T = R ⋈ X1Y1S
(3) R ⟖X1Y1 S = T ( (S - YT) (X) ) където T = R ⋈ X1Y1S
(4) R ⟗X1Y1 S = R ⟕X1Y1 S R ⟖X1Y1 S R: ЧАСТ
гайка
болт
винт
S ЧАСТ1 ДОСТАВЧИК
гайка павел
болт мария
R ⟗ЧАСТ=ЧАСТ1 S :ЧАСТ ЧАСТ1 ДОСТАВЧИК
гайка гайка павелболт болт мария
винт
Богдан Шишеджиев - Релационна алгебра
21
Изчисления върху домени
• Разширение• Агрегиране –
Sum, Count, Average, Max, Min
R Article Prix quant
Clou 8.00 200
boulon 12.00 100
ecrou 12.00 120
S=Article,e(Prix*quant) as TotalR Article Total
Clou 1600.00
boulon 1200.00
ecrou 1440.00
Sum(TotalS) Total
4240.00
Богдан Шишеджиев - Релационна алгебра
22
Примерна схема
EMPLOYEES
Number Name Age Salary
101 Mary Smith 34 40
103 Mary Bianchi 23 35
104 Luigi Neri 38 61
105 Nico Bini 44 38
210 Marco Celli 49 60
231 Siro Bisi 50 60
252 Nico Bini 44 70
301 Steve Smith 34 70
375 Mary Smith 50 65
Head Employee
210 101
210 103
210 104
231 105
301 210
301 231
375 252
SUPERVISION
EMPLOYEES(Number, Name, Age, Salary)SUPERVISION(Head, Employee)
Богдан Шишеджиев - Релационна алгебра
23
Заявки
• Да се намерят номерата, имената и възрастта на служителите със заплати над 40 хил.Number,Name,Age (Salary40(EMPLOYEES))
Number Name Age Salary
101 Mary Smith 34 40
103 Mary Bianchi 23 35
104 Luigi Neri 38 61
105 Nico Bini 44 38
210 Marco Celli 49 60
231 Siro Bisi 50 60
252 Nico Bini 44 70
301 Steve Smith 34 70
375 Mary Smith 50 65
Number Name Age Salary
101 Mary Smith 34 40
104 Luigi Neri 38 61
210 Marco Celli 49 60
231 Siro Bisi 50 60
252 Nico Bini 44 70
301 Steve Smith 34 70
375 Mary Smith 50 65
Number Name Age
101 Mary Smith 34
104 Luigi Neri 38
210 Marco Celli 49
231 Siro Bisi 50
252 Nico Bini 44
301 Steve Smith 34
375 Mary Smith 50
Богдан Шишеджиев - Релационна алгебра
24
Заявки
• Да се намерят началниците, които имат подчинени с големи заплати (над 40) Head(SUPRVISIONEmployee=Number(Salary40(EMPLOYEES)))
Number Name Age Salary
101 Mary Smith 34 40
103 Mary Bianchi 23 35
104 Luigi Neri 38 61
105 Nico Bini 44 38
210 Marco Celli 49 60
231 Siro Bisi 50 60
252 Nico Bini 44 70
301 Steve Smith 34 70
375 Mary Smith 50 65
Head Employee
210 101
210 103
210 104
231 105
301 210
301 231
375 252
Number Name Age Salary
101 Mary Smith 34 40
104 Luigi Neri 38 61
210 Marco Celli 49 60
231 Siro Bisi 50 60
252 Nico Bini 44 70
301 Steve Smith 34 70
375 Mary Smith 50 65
Number Name Age Salary Head Employee
101 Mary Smith 34 40 210 101
104 Luigi Neri 38 61 210 104
210 Marco Celli 49 60 301 210
231 Siro Bisi 50 60 301 231
252 Nico Bini 44 70 375 252
Head
210
210
301
301
375
Head
210
301
375
25
Заявки
• Да се намерят всички началници с техните имена и заплатиNameH,SalaryH(NumberH,NameH,SalaryH.AgeHNumber,Name.Salary,Age(EMPLOYEES)
NumberH=Head(SUPERVISION Employee=Number(EMPLOYEES)))
Number Name Age Salary
101 Mary Smith 34 40
103 Mary Bianchi 23 35
104 Luigi Neri 38 61
105 Nico Bini 44 38
210 Marco Celli 49 60
231 Siro Bisi 50 60
252 Nico Bini 44 70
301 Steve Smith 34 70
375 Mary Smith 50 65
Head Employee
210 101
210 103
210 104
231 105
301 210
301 231
375 252
Number Name Age Salary Head Employee
101 Mary Smith 34 40 210 101
103 Mary Bianchi 23 35 210 103
104 Luigi Neri 38 61 210 104
105 Nico Bini 44 38 231 105
210 Marco Celli 49 60 301 210
231 Siro Bisi 50 60 301 231
252 Nico Bini 44 70 375 252
NumberH NameH AgeH SalaryH101 Mary Smith 34 40103 Mary Bianchi 23 35104 Luigi Neri 38 61105 Nico Bini 44 38210 Marco Celli 49 60231 Siro Bisi 50 60252 Nico Bini 44 70301 Steve Smith 34 70375 Mary Smith 50 65
Number
Name Age
Salary
Head Employee
NumberH
NameH AgeH SalaryH
101 Mary Smith
34 40 210 101 210 Marco Celli
49 60
103 Mary Bianchi
23 35 210 103 210 Marco Celli
49 60
104 Luigi Neri 38 61 210 104 210 Marco Celli
49 60
105 Nico Bini 44 38 231 105 231 Siro Bisi 50 60
210 Marco Celli
49 60 301 210 301 Steve Smith
34 70
231 Siro Bisi 50 60 301 231 301 Steve Smith
34 70
252 Nico Bini 44 70 375 252 375 Mary Smith
50 65
NameH SalaryH
Marco Celli 60
Marco Celli 60
Marco Celli 60
Siro Bisi 60
Steve Smith 70
Steve Smith 70
Mary Smith 65
NameH SalaryH
Marco Celli 60
Siro Bisi 60
Steve Smith 70
Mary Smith 65
Богдан Шишеджиев - Релационна алгебра
26
Заявки
• Да се намерят служителите, които печелят повече от собствените си началнициNumber,name,Salary,Numberh,nameH,SalaryH (Salary>SalaryH
(NumberH,NameH,SalaryH.AgeHNumber,Name.Salary,Age(EMPLOYEES)
NumberH=Head(SUPERVISION Employee=Number(EMPLOYEES)))) Number Name Age Salar
yHead Employ
eeNumberH
NameH AgeH SalaryH
101 Mary Smith
34 40 210 101 210 Marco Celli
49 60
103 Mary Bianchi
23 35 210 103 210 Marco Celli
49 60
104 Luigi Neri 38 61 210 104 210 Marco Celli
49 60
105 Nico Bini 44 38 231 105 231 Siro Bisi 50 60
210 Marco Celli
49 60 301 210 301 Steve Smith
34 70
231 Siro Bisi 50 60 301 231 301 Steve Smith
34 70
252 Nico Bini 44 70 375 252 375 Mary Smith
50 65
Number Name Age Salary
Head Employee
NumberH
NameH AgeH SalaryH
104 Luigi Neri 38 61 210 104 210 Marco Celli
49 60
252 Nico Bini 44 70 375 252 375 Mary Smith
50 65
Number Name Salary NumberH NameH SalaryH
104 Luigi Neri 61 210 Marco Celli 60
252 Nico Bini 70 375 Mary Smith 65
Богдан Шишеджиев - Релационна алгебра
27
Заявки
• Да се намерят началниците, всичките служители на които печелят повече от 40 хил.Number,Name(EMPLOYEES Number=Head(Head(SUPERVISION) –
(Head(SUPERVISION Employee=Number(Salary 40(EMPLOYEES)))))
Number Name Age Salary
101 Mary Smith 34 40
103 Mary Bianchi 23 35
104 Luigi Neri 38 61
105 Nico Bini 44 38
210 Marco Celli 49 60
231 Siro Bisi 50 60
252 Nico Bini 44 70
301 Steve Smith 34 70
375 Mary Smith 50 65
Head Employee
210 101
210 103
210 104
231 105
301 210
301 231
375 252Number Name Age Salary
101 Mary Smith 34 40
103 Mary Bianchi 23 35
105 Nico Bini 44 38
Number Name Age Salary Head Employee
101 Mary Smith 34 40 210 101
103 Mary Bianchi 23 35 210 103
105 Nico Bini 44 38 231 105
Head
210
231
Head
210
231
301
375
Head
301
375
Number Name Age Salary
101 Mary Smith 34 40
103 Mary Bianchi 23 35
104 Luigi Neri 38 61
105 Nico Bini 44 38
210 Marco Celli 49 60
231 Siro Bisi 50 60
252 Nico Bini 44 70
301 Steve Smith 34 70
375 Mary Smith 50 65
Number Name Age Salary Head
301 Steve Smith 34 70 301
375 Mary Smith 50 65 375
Number Name
301 Steve Smith
375 Mary Smith
Богдан Шишеджиев - Релационна алгебра
28
Оптимизация на изразите
• Нека са дадени E(X), E1(X1), E2(X2),
• πAB (σΛ>B(E)) σΛ>B(πAB(E))
F1F2(E) F1(F2(E))
X(E) X (XY(E)
F (El ⋈ E2) El ⋈ F(E2) ако FX2
• Ако Y2 X2 и Y2 X1 X2, то
X1(El ⋈ E2) El ⋈ Y2(E2)
Y(El ⋈ F E2) Y(Y2(El) ⋈ F Y2(E2)
F (El ⋈ E2) El ⋈ F E2
Богдан Шишеджиев - Релационна алгебра
29
Оптимизация на изразите
Номерата на началниците на служители под 30 години
Head(Number=Employee Age < 30(EMPLOYEES SUPERVISION))
Head(Number=Employee (Age < 30(EMPLOYEES SUPERVISION)))
Head (Age < 30(EMPLOYEES) Number=Employee SUPERVISION)
Head (Number(Age < 30(EMPLOYEES)) Number=Employee SUPERVISION)