Релационна алгебра

Download Report

Transcript Релационна алгебра

Релационна алгебра
Богдан Шишеджиев Релационна алгебра
1
Алгебрични операции
• Означения
Ще означим с A(X) множеството на всички възможни
реализации на релационната схема X. L/Y е ограничението
на реализацията L върху множеството от атрибути Y.
• Релационни операции
• сума R+S
• произведение или
естествено съединение
R*S
• декартово
произведение RS
• обединение RS
• пресичане RS
• допълнение R
• разлика R-S
Богдан Шишеджиев Релационна алгебра
• Проекция YR
• Деление RS
• Селекция ER
• Съединение R ⋈X1ΘY1 S
• Външно съединение R
⟕X1ΘY1 S (⟖ ⟗)
2
Примерна база
X={ ЧАСТ:D1, ДОСТАВЧИК:D2 }
Y={ЧАСТ:D1, ПРОЕКТ:D3}
Z={ЧАСТ:D1, ДОСТАВЧИК:D2, ПРОЕКТ:D3 }
R:
ЧАСТ
ДОСТАВЧИК
D1 = { гайка, болт, винт}
D2 = { петър, павел, мария }
D3 = { a, b, c }
ЧАСТ
S:
ПРОЕКТ
гайка
петър
гайка
a
гайка
павел
гайка
b
болт
мария
болт
a
Сума
Произведение
Богдан Шишеджиев Релационна алгебра
3
Операция сума
(1) Z=XY
(2) R+S = { LA(Z) такава, че(L/X  R) или (L/Y  S) }
R+S
ЧАСТ
ДОСТАВЧИК
ПРОЕКТ
гайка
петър
a
гайка
петър
b
гайка
петър
c
гайка
павел
a
гайка
павел
b
гайка
павел
c
болт
мария
a
болт
мария
b
болт
мария
c
болт
петър
a
болт
павел
a
гайка
мария
a
гайка
мария
b
Примерна база
4
Операция произведение или
естествено съединение
(1) Z=XY
(2) R*S = { LA(Z) такава, че(L/X  R) и (L/Y  S) }
R*S
ЧАСТ
ДОСТАВЧИК
ПРОЕКТ
гайка
петър
a
гайка
петър
b
гайка
павел
a
гайка
павел
b
болт
мария
a
Богдан Шишеджиев Релационна алгебра
Примерна база
5
Преименуване на атрибути
S(Y) = b/aR(X)
•
(1) Y = X където атрибутът a е преименован b
(2) S(Y) = R(X)
S:
ЧАСТ
ПРОЕКТ
гайка
a
гайка
b
болт
a
T=  ПИ/ЧАСТS:
Богдан Шишеджиев Релационна алгебра
ПИ
ПРОЕКТ
гайка
a
гайка
b
болт
a
6
Операция декартово произведение
X и Y нямат общи атрибути
T=  ПИ/ЧАСТS:
(1) Z=XY
(2) RS = R*S
R:
S:
ЧАСТ
ДОСТАВЧИК
R Т
ЧАСТ
ПИ
ПРОЕКТ
гайка
a
гайка
b
болт
a
ДОСТ.
ПИ
ПРОЕКТ
гайка
петър
гайка
павел
гайка
петър
гайка
a
болт
мария
гайка
петър
гайка
b
гайка
петър
болт
а
гайка
павел
гайка
a
ЧАСТ
ПРОЕКТ
гайка
a
гайка
b
гайка
павел
гайка
b
болт
a
гайка
павел
болт
а
болт
мария
гайка
a
болт
мария
гайка
b
болт
мария
болт
a
Еквисъединение
Богдан Шишеджиев Релационна алгебра
7
Операция обединение
(1) Y = X
(2) RS = R+S = { L A(X) / L  R  L  S }
R:
ЧАСТ
ДОСТАВЧИК
R:
ЧАСТ
ДОСТАВЧИК
гайка
петър
гайка
петър
гайка
павел
болт
павел
болт
мария
болт
мария
R S:
ЧАСТ
ДОСТАВЧИК
гайка
петър
гайка
павел
болт
павел
болт
мария
Богдан Шишеджиев Релационна алгебра
8
Операции сечение и разлика
(1) Y = X – една и съща схема
(2) RS = R*S = { LA(X) : (L  R)  (L  S) }
(3) R-S = { LA(X) : (L  R)  (L  S) }
R:
R S:
ЧАСТ
ДОСТАВЧИК
S:
ЧАСТ
ДОСТАВЧИК
гайка
петър
гайка
петър
гайка
павел
болт
павел
болт
мария
болт
мария
ЧАСТ
ДОСТАВЧИК
гайка
петър
болт
мария
R -S:
ЧАСТ
гайка
Богдан Шишеджиев Релационна алгебра
ДОСТАВЧИК
павел
9
Операция допълнение
(1) Y = X
(2) ¬R(X) = { L A(X) / L  R }
R:
ЧАСТ
ДОСТАВЧИК
гайка
петър
гайка
павел
болт
мария
¬R :
ЧАСТ
ДОСТАВЧИК
винт
петър
винт
павел
винт
мария
болт
петър
болт
павел
гайка
мария
Богдан Шишеджиев Релационна алгебра
10
Операция проекция
(1) Z = Y
(2) YR ={LA(Y) такава, че L'A(X), (L'/Y = L)  (L'  R) }
Пример:
X={ЧАСТ:D1, ДОСТАВЧИК:D2, ПРОЕКТ:D3}
Y={ЧАСТ:D1, ДОСТАВЧИК:D2}
ЧАСТ
ДОСТАВЧИК
ПРОЕКТ
гайка
петър
a
гайка
петър
b
болт
павел
a
R
YR
ЧАСТ
ДОСТАВЧИК
гайка
петър
болт
павел
Богдан Шишеджиев Релационна алгебра
11
Деление
YXиS≠
(1) Z = X-Y
(2)RS = {L  A(Z) такава, че  L'  A(X) ако (L'/Z = L) и (L'/Y  S), то L'  R }
или още
RS = zR - z ((S  zR) - R)
Пример:
X={ЧАСТ:D1, ДОСТАВЧИК:D2}
Y={ДОСТАВЧИК:D2}
R:
ЧАСТ
ДОСТАВЧИК
винт
петър
болт
павел
болт
мария
гайка
петър
винт
павел
болт
петър
S:
ЧАСТ
R S
ДОСТАВЧИК
винт
павел
болт
петър
Богдан Шишеджиев Релационна алгебра
12
Операция селекция (ограничение, избор)
1) Y =X
2) 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 плуване
Богдан Шишеджиев Релационна алгебра
13
Операция съединение
X и Y нямат общи атрибути
q  (=, <, >, ≤, ≥, ≠)
(1) Z=XY
(2) R ⋈ X1
или още
q Y1
R⋈
S =  X1 q Y1 (RS)
X1 q Y1
S = { LA(Z) така, че L/X  R et L/Y  S и (X1 q Y1)(L) = true }
R: A B
C
S:
D E
9 8
7
3
6 5
4
5
3 2
1
R ⋈B≤D S :
A B
C
D
E
4
3
2
1
3
4
6
3
2
1
5
6
6
5
4
5
6
Богдан Шишеджиев Релационна алгебра
14
Операция съединение
• Еквисъединение
R ⋈ЧАСТ=ПИ S
ЧАСТ
ДОСТ.
ПИ
ПРОЕКТ
гайка
петър
гайка
a
гайка
петър
гайка
b
гайка
павел
гайка
a
гайка
павел
гайка
b
болт
мария
болт
a
Примерна база
Богдан Шишеджиев Релационна алгебра
15
Свойства на операциите
•
•
•
•
•
•
•
Идемпотентност на сумата : 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)
Богдан Шишеджиев Релационна алгебра
16
JET :
#JET
100
101
102
Пример за композиция
JETNAME
airbus
airbus
carav
PILOTE :
FLY :
CAP
300
300
200
LOC
nice
paris
toulouse
#PL
1
PLNOM
serge
ADR
nice
2
jean
paris
3
claude
grenoble
#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
Богдан Шишеджиев Релационна алгебра
17
Пример за композиция
R1 : #JET
R1 = #JET, JETNAME JET (проекция)
100
R2 =  #JET, #PL FLY (проекция)
101
R3 = R1 * R2(произведение)
102
R4 =  JETНАМЕ, #PL R3 (проекция)
R5 =  JETНАМЕ JET (проекция)
R6 = R4  R5(деление)
R7 =  #PL, PLNAME PILOTE [#PL, PLNAME](проекция)
R8 = R7 * R6(произведение)
ОТГОВОР =  PLNAME R8 [PLNAME] (проекция)
R4 :
JETNAME
airbus
#PL
1
airbus
2
JETNAME
airbus
airbus
3
carav
carav
3
R7 :
#PL PLNOM
1
serge
2
jean
3
claude
R5 :
JETNAME
airbus
airbus
carav
R6 :
R3 :
#PL PLNOM
3
claude
Богдан Шишеджиев Релационна алгебра
#PL
#JET
1
100
2
100
1
101
3
102
3
101
#JET
100
JETNAME
airbus
#PL
1
101
airbus
1
100
airbus
2
101
airbus
3
102
carav
3
#PL
3
O:
R8 :
R2 :
PLNOM
claude
18
Неопределени стойности

TRUE FALSE
INDEFI
NITE

TRUE
TRUE FALSE
FALSE
FALS
E
FALSE
FALSE


FALSE


TRUE
FALSE
FALSE
TRUE
.
.
TRUE FALSE INDEFINI
TE
TRUE
TRUE
FALSE
TRUE FALSE

¬
TRUE
TRUE

TRUE


Богдан Шишеджиев Релационна алгебра
19
Външно съединение
XY=
(1)Z=XY
(2)R ⟕X1qY1 S = T  ( (R -  XT)  W(Y) ) където T = R ⋈ X1qY1S
(3) R ⟖X1qY1 S = T  ( (S -  YT)  W(X) ) където T = R ⋈ X1qY1S
(4) R ⟗X1qY1 S = R ⟕X1qY1 S R ⟖X1qY1 S
R:
ЧАСТ
гайка
S
болт
ЧАСТ1
ДОСТАВЧИК
гайка
павел
болт
мария
винт
R ⟗ЧАСТ=ЧАСТ1 S :
ЧАСТ
ЧАСТ1
ДОСТАВЧИК
гайка
гайка
павел
болт
болт
мария
винт


Богдан Шишеджиев Релационна алгебра
20
Изчисления върху домени
• Разширение
• Агрегиране –
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
Sum(TotalS)
Article
Total
Clou
1600.00
boulon
1200.00
ecrou
1440.00
Total
4240.00
Богдан Шишеджиев Релационна алгебра
21
Примерна схема
EMPLOYEES(Number, Name, Age, Salary)
SUPERVISION(Head, Employee)
SUPERVISION
EMPLOYEES
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
301
Steve Smith
34
70
375
Mary Smith
50
65
Богдан Шишеджиев Релационна алгебра
22
Заявки
• Да се намерят номерата, имената и възрастта на служителите със
заплати над 40 хил.
Number,Name,Age (Salary40(EMPLOYEES))
Number
Number
Number
101
101
101
Name
Name
Name
Mary
Mary
MarySmith
Smith
Smith
Age
Age
Age
34
34
34
Salary
Salary
40
40
103
104
104
104
210
210
Mary
Luigi
LuigiBianchi
Neri
Neri
Luigi
Neri
Marco
Marco
Celli
Celli
23
38
38
38
49
49
35
61
61
60
105
231
231
210
252
252
Nico
Siro
SiroBini
Bisi
Bisi
Marco
Celli
Nico
NicoBini
Bini
44
50
50
49
44
44
38
60
60
70
231
301
301
252
375
375
Siro
Bisi
Steve
Steve
Smith
Smith
Nico
Bini
Mary
Mary
Smith
Smith
50
34
34
44
50
50
60
70
70
65
301
Steve Smith
34
70
375
Mary Smith
50
65
Богдан Шишеджиев Релационна алгебра
23
Заявки
• Да се намерят началниците, които имат подчинени с големи
заплати (над 40)
Head(SUPRVISIONEmployee=Number(Salary40(EMPLOYEES)))
Number
Number
101
101
Head
103
104
104
210
104
210
210
210
105
231
231
301
210
252
252
301
231
301
375
375
252
Name
Name
Mary
MarySmith
Smith
Head
Mary
Luigi
Bianchi
LuigiNeri
Neri
210
Luigi
Marco
Neri
Celli
Marco
Celli
301
Nico
Siro
Bini
SiroBisi
Bisi
375
Marco
Nico
Celli
NicoBini
Bini
Age
Age Salary
Salary
34
40
34
40
23
38
35
61
38
61
HeadHead
Employee
Employee
210 210
101
101
210 210
104
103
49
38
49
44
50
50
60
61
60
38
60
60
301 210
210
104
301 231
231
105
70
60
70
60
70
375 301
252
210
Siro Bisi
Steve
Smith
44
49
44
50
34
301
231
Mary
Smith
Nico Bini
50
44
65
70
375
252
301
Steve Smith
34
70
375
Mary Smith
50
65
Богдан Шишеджиев Релационна алгебра
24
Заявки
• Да се намерят всички началници с техните имена и заплати
NameH,SalaryH(NumberH,NameH,SalaryH.AgeHNumber,Name.Salary,Age(EMPLOYEES)
NumberH=Head(SUPERVISION Employee=Number(EMPLOYEES)))
NumberH
NameH
AgeH
SalaryH
Numb Name
Ag Salar Head Emplo Numb NameH AgeH
101
Mary Smith
34
40
er Number
e
y
yee
NameMary Bianchi Age 23Salary 35 erH
103
Head Employee
NameH
SalaryH
101101 104
Mary Mary34Luigi
40
210
101 61 210
Marco
49
Neri
Smith
34 3840
210
101
CelliBini
60
Smith Marco Nico
Celli
105
38
NameH23 4435SalaryH
103
Mary Bianchi
210
103
210
49103
60 210
Celli35Celli 210 60
103
Mary Marco
23Marco
Marco
49
Marco Celli
104 231
Luigi Neri
38 506160 60
Siro Bisi
210
104
BianchiMarco
Celli Employee
Celli
60
Number
Name
Age
Salary
Head
Nico Bini
Siro Bisi44 443860 70
105 252
Nico Bini
231
105 49
104101 301
Luigi Neri
38
61Smith 34
210 60
104 70 210
Marco101
Siro
Steve
34
MaryBisi
Smith
40
210
Smith
210 375
MarcoMary
CelliSteve
49 506070 65
Celli 210
Smith
301
Steve
Smith
7035
103
Mary Bianchi
23
210
103
Mary
Smith
65
231
Siro
Bisi
50
60
105
Nico Bini 44 38
231
105
231
Siro Bisi
301
231 50
Steve
Smith
104
Luigi Neri
38 7061
210
104
Bini 60
44
70
210252 Marco Nico49
301
210
301
Steve 252 34
375
Smith
105 Celli Mary
Nico Bini
44 6538
231 Smith 105
301
Steve Smith
34
70
Marco Celli60
49
60
301 Steve 210 34
231210
301
231
301
375 Siro BisiMary50Smith
50
65
231
Siro Bisi
50
60
301 Smith 231
Salary
H
252252
25
65
Nico 44
Bini 70
Nico Bini
44
375
70
252
375
375
Mary 252 50
Smith
60
60
60
60
70
70
Заявки
•
Да се намерят служителите, които печелят повече от собствените си
началници
Number,name,Salary,Numberh,nameH,SalaryH (Salary>SalaryH
(NumberH,NameH,SalaryH.AgeHNumber,Name.Salary,Age(EMPLOYEES)
NumberH=Head(SUPERVISION Employee=Number(EMPLOYEES))))
Number
Name
Age
Salar
y
Head
Employ
ee
Number NameH
H
AgeH
SalaryH
101
Mary
34
40
210
Number Smith
Name
Age Salar Head
y
Name
Salary
103 Number
Mary
23
35
210
Bianchi
104 104 Luigi
NeriLuigi
38Neri61
210
61
104
Luigi Neri 38
61
210
252
Nico Bini
70
252
Nico Bini 44
70
375
105
Nico Bini 44
38
231
101
210
Marco
Employ Number Celli
NameH
ee
H
NumberH
103
210 NameH
Marco
Celli
104
210 Marco
Marco
210
Celli
Celli
104
210
Marco
375
Mary Smith
Celli
252
375
Mary
Smith
105
231
Siro Bisi
49
AgeH
SalaryH
49
49
60
49
65
50
50
60
SalaryH
60
60
60
65
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
375 Шишеджиев
252
Релационна алгебра
Mary
Smith
50
26
65
Заявки
•
Да се намерят началниците, всичките служители на които печелят
повече от 40 хил.
Number,Name(EMPLOYEES Number=Head(Head(SUPERVISION) –
(Head(SUPERVISION Employee=Number(Salary  40(EMPLOYEES)))))
Head Employee
Number
Number Name
Name
Age
Age Salary
Salary
210
101
101
101 Number
Mary
Mary
Smith
Smith
3434
Name
Name
103
103 Number
Mary
Bianchi
Bianchi
2323
301 Mary
Steve Smith
Steve
Smith
104
104 301
Luigi
Neri
Neri
3838
375 Luigi
Mary Smith
Mary
105
105 375 Nico
Nico
Bini
Bini Smith4444
4040
Age
35
35
3461
61
5038
38
210
210
Marco
Marco
Celli
Celli
4949 6060
Number
Age Salary
231
231Name Siro
Siro
Bisi
Bisi
5050 Head
6060
Head
Number
Name
Age Salary
101 210
34
40 4444 210
252
252Mary Smith
Nico
Nico
Bini
Bini
7070
101
Mary Smith
34
40
103 231
23
301
301Mary Bianchi
Steve
Steve
Smith
Smith35 3434 210
7070
103
Mary Bianchi
23
35
105 375
Nico
Bini
44
38
375
Mary
Mary
Smith
Smith
5050 231
6565
105
Nico Bini
44
38
Salary
70
65
210
Head
210
301
231
375
301
301
Employee375
101
103
105
Богдан Шишеджиев Релационна алгебра
103
104
105
210
231
Head
252
210
Head
231
301
301
375
375
27
Оптимизация на изразите
•
•
•
•
•
•
Нека са дадени E(X), E1(X1), E2(X2),
πAB (σΛ>B(E)) σΛ>B(πAB(E))
F1F2(E)  F1(F2(E))
X(E)  X (XY(E)
F (El ⋈ E2)  El ⋈ F(E2) ако FX2
Ако 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
Богдан Шишеджиев Релационна алгебра
28
Оптимизация на изразите
Номерата на началниците на служители под 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)
Богдан Шишеджиев Релационна алгебра
29