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

29
Богдан Шишеджиев - Релационна алгебра 1 Релационна алгебра

description

Релационна алгебра. Алгебрични операции. Означения Ще означим с A ( X ) множеството на всички възможни реализации на релационната схема X . L / Y е ограничението на реализацията L върху множеството от атрибути Y . Релационни операции. сума R+S - PowerPoint PPT Presentation

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

Богдан Шишеджиев - Релационна алгебра

1

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

Богдан Шишеджиев - Релационна алгебра

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)