background image

Algebra relacji

Definicja 1 (Relacja matematyczna)Relacją R między elementami zbioru D

1

× D

2

× · · · × D

n

, gdzie

przypomnijmy

D

1

× D

2

× · · · × D

n

{(d

1

, d

2

, . . . , d

n

) : d

i

∈ D

i

, i = 12, . . . , n} ,

nazywamy każdy podzbiór iloczynu karteziańskiego D

1

× D

2

× · · · × D

n

.

Definicja 2 (Relacja w sensie Codd’a)Niech U = {A

1

, A

2

, A

3

, . . . } będzie zbiorem złożonym z atrybutów

A

1

, A

2

, A

2

, . . . . Dla każdego atrybutu A ∈ zbiór jego wartości (prostych) nazywamy dziedziną i oznaczamy

dom (A). Zakładamy, że dla każdego A ∈ zachodzi inkluzja NULL ∈ dom (A).

Dla zbioru atrybutów U {B

1

, B

2

, . . . , B

n

}, gdzie B

1

, B

2

, . . . , B

n

∈ U, definiujemy:

• krotkę typu U (z ang. tuple) jako zbiór par uporządkowanych

{(B

1

, b

1

(B

2

, b

2

, . . . , (B

n

, b

n

)}

ozn.

= [B

1

b

1

, B

2

b

2

, . . . , B

n

b

n

]

gdzie b

i

∈ D

i

dom (B

i

dla i = 12, . . . , n.

• relację typu U jako dowolny, skończony podzbiór zbioru wszystkich krotek typu U .

Uwaga 1. Każdy zbiór par t = [A

1

a

1

, A

2

a

2

, . . . , A

n

a

n

], przy oznaczeniach z powyższej definicji, jest

pewną funkcją ze zbioru atrybutów U {A

1

, A

2

, . . . , A

n

} w zbiór wartości V D

1

∪ D

2

∪ · · · ∪ D

n

, gdzie

D

i

dom (A

i

dla i = 12, . . . , n, a zatem t U → V jest funkcją taką, że dla każdego A ∈ U, t (A

dom (A).

Oznaczenia:

• KROTKA() — zbiór wszystkich krotek typu ,

• KROTKA() = {} — zbiór zawiera jedną krotkę, krotkę pustą typu ∅ o długości zero,

• null() – krotka null-owa typu , dla każdego atrybutu A ∈ U null (A) = NULL,

• REL() – zbiór wszystkich relacji typu (Ile jest takich relacji jeśli |KROTKA ()k?),

• REL() = {∅, {}}, gdzie ∅ to pusta relacja typu , nie zawierająca żadnej krotki,

• U, X, Y, V, W — zbiory atrybutów (typy relacji),

• R (, S (X, . . . — relacje odpowiednio typu U, X, . . . ; gdy typ wynika z kontekstu piszemy

R, S, . . . ,

• t (, r (X, . . . — krotki typu U, X, . . . ; gdy typ wynika z kontekstu piszemy t, r, . . . ,

• zamiast pisać = [A

1

a1, A

2

a

2

, . . . , A

n

a

n

] piszemy w skrócie = (a

1

, a

2

, . . . , a

n

) — domyśl-

ne przyjmujemy uporządkowanie wartości w krotce takie jak uporządkowanie atrybutów w typie

relacji,

• zamiast pisać ({A, B}) piszemy w skrócie (A, B),

• zamiast pisać (X ∪ Y ) piszemy w skrócie (X, Y ).

Operacje na relacjach (algebra relacji)

1. Operacje mnogościowe na relacjach

background image

Operandy: (, S () — relacje typu U

Wynik: () — relacja typu U

Suma mnogościowa (ang. union)

R ∪ S {t t ∈ R ∨ t ∈ S}

Różnica mnogościowa (ang. difference)

R \ S {t t ∈ R ∧ t /

∈ S}

Przekrój mnogościowy (ang. intersection)

R ∩ S {t t ∈ R ∨ t ∈ S)

Dopełnienie mnogościowe (ang. complement) R

c

KROTKA (X\ R (X)

Uwaga 2. W przypadku dopełnienia istotnym jest, aby zbiór KROTKA (Xbył skończony (Dlaczego?),

co powoduje, że w praktyce dopełnienie nie jest stosowane.

Sumy zewnętrzne (otwarte, ang. outer union)

Niech X ∪ Y (X) będzie relacją typu X, a () typu . Tworzymy relację R

0

(Z) typu poprzez

uzupełnienie krotek relacji (X) o argumenty z Z \X „wypełniając” ich wartości NULL-ami, dokładniej:

R

0

(Z) = {t

0

∈ KROTKA (Z) : (t

0

(A) = (A) dla A ∈ X∧ (t

0

(A) = null (A) dla A ∈ Z \ X)} .

W analogiczny sposób tworzymy relację S

0

(Z) typu Z, to znaczy

S

0

(Z) = {r

0

∈ KROTKA (Z) : (r

0

(B) = (B) dla B ∈ Y ∧ (r

0

(B) = null (B) dla B ∈ Z \ Y )} .

Definiujemy sumę zewnętrzną (XOUTER UNION () relacji (X) i () jako

(XOUTER UNION () = R

0

(Z∪ S

0

(Z.

2. Operacje na krotkach

2.1. Ograniczenie krotki

Niech () będzie krotką typu i niech X ⊆ U . Krotkę [X] typu nazywamy ograniczeniem

krotki (do zbioru atrybutów X, wtedy i tylko wtedy, gdy

(A) = (A)

dla każdego A ∈ X.

2.2. Złączenie krotek

Krotkę r

typu X ∪ Y nazywamy złączeniem naturalnym (ang. natural join) krotek (X) i

(), wtedy i tylko wtedy, gdy [X] = [] = s.

3. Operacje relacyjne

3.1. Projekcja, rzut (ang. projection) relacji

Niech () będzie relacją typu i niech X ⊆ U . Relację [X] (lub π

X

(R)) typu nazywamy

projekcją relacji na X, wtedy i tylko wtedy, gdy

[X] = π

X

(R) = {t ∈ KROTKA (X) : 

r∈R

[X]} ,

w szczególności

[] = π

(R) =

gdy ∅,

{}

w p.p.

background image

3.2. Selekcja (ang. selection)

Niech A, A

0

∈ U, ν ∈

S

A∈U

dom (A, θ ∈ {=, 6=, <, ¬, >, ­, like, . . . }.

• Atomowymi warunkami selekcji są: A θ ν oraz A θ A

0

.

• Każdy atomowy warunek selekcji jest warunkiem selekcji.

• Jeśli E

0

są warunkami selekcji, to są nimi również: (E, ¬E, E ∨ E

0

, E ∧ E

0

.

Relację σ

E

(R) typu nazywamy selekcją relacji (względem warunku selekcji E, wtedy

i tylko wtedy, gdy

σ

E

(R) = {t ∈ R (t) = TRUE} .

Sposoby obliczania warunków selekcji:

a) (A θ ν) (t) = (Aθ ν,

b) (A θ A

0

) (t) = (Aθ t (A

0

),

c) (¬E) (t) = ¬ ((t)),

) (E ∨ E

0

) (t) = (t∨ E

0

(t),

e) (E ∧ E

0

) (t) = (t∧ E

0

(t).

Ponieważ języki relacyjnych baz danych, np. SQL, opierają się na logice trójwartościowej o warto-

ściach: TRUEFALSE UNKNOWN („nieznana”), to dodatkowo mamy:

(Aθ NULL UNKNOWN,

gNULL θ ν UNKNOWN dla każdego ν, również równego NULL.

3.3. Przemianowanie (ang. renaming)

Niech () będzie relacją typu , a niech będą atrybutami, przy czym A ∈ U B /

∈ U .

Niech U \ {A} ∪ {B}. Relację δ

A→B

(R) typu nazywamy przemianowaniem w relacji

atrybutu na atrybut B, wtedy i tylko wtedy, gdy

δ

A→B

(R) =

n

t ∈ KROTKA () : 

r∈R

π

U \{A}

(r)

1 [(A)]

o

.

3.4. Iloczyn kartezjański (ang. cross join, Cartesian product)

Niech (X) i () będą relacjami typu odpowiednio , gdzie {A

1

, A

2

, . . . , A

n

}=

{B

1

, B

2

, . . . , B

m

}. Określmy prefiksowanie atrybutów relacji w następujący sposób R.X =

{R.A

1

, R.A

2

, . . . , R.A

n

} , S.Y {S.B

1

, S.B

2

, . . . , S.B

m

}Iloczynem kartezjańskim relacji R

nazywamy relację R × S typu R.X ∪ S.Y , wtedy i tylko wtedy, gdy

R × S {t ∈ KROTKA (R.X ∪ S.Y ) : π

R.X

(t) = R ∧ π

S.Y

(t) = S} .

3.5. Złączenie (ang. join)

Relację R

typu X ∪ Y nazywamy złączeniem naturalnym (ang. natural join) relacji (X)

(), wtedy i tylko wtedy, gdy

R

{t ∈ KROTKA (X ∪ Y ) : π

X

(t) = R ∧ π

Y

(t) = S} ,

albo równoważnie

R

= (t ∈ KROTKA (X ∪ Y ) : 

r∈R

s∈S

r

s.

background image

Jeżeli są relacjami odpowiednio typu oraz , to R

R ∩ S, z kolei jeżeli

X ∩ Y , to R

R × S.

Właściwości

1 dla relacji R, S, T typu U:

a) R

{} R,

b) R

∅ ,

c) R

π

X

{R} R, gdzie X ⊆ U ,

R ⊆ π

X

(R)

π

Y

(R), gdzie X ∪ Y ,

eR

R

R

1 () = (S) 1 .

3.6. θ-złączenie, theta-złączenie (θ-join)

Niech (X, S () będą relacjami odpowiednio typu , gdzie {A

1

, A

2

, . . . , A

n

} , Y =

{B

1

, B

2

, . . . B

m

i niech θ ∈ {=, 6=, <, ¬, >, ­, like, . . . }.

Relację R

1

F

typu X × Y nazywamy θ-złączeniem relacji względem warunku

złączenia (analogicznie jak warunek selekcji), wtedy i tylko wtedy, gdy

R

1

F

{t ∈ R × S (t) = TRUE} .

θ-złączenie jest więc selekcją z iloczynu kartezjańskiego, a zatem

R

1

F

σ

F

(R × S.

3.7. Złączenia zewnętrzne (ang. outer join)

(a) Złączenie zewnętrzne lewostronne (ang. left outer join)

Relację R+

1

F

typu X ∪ Y nazywamy złączeniem zewnętrznym lewostronnym relacji

(X) i (), wtedy i tylko wtedy, gdy

R+

1

F

{t ∈ R × S (t) = TRUE} ∪

∪ {π

X

(t× null (Y \ X) : t ∈ R × S ∧ F (t6TRUE} ,

czyli do wyniku należą wszystkie krotki relacji (lewy operand) połączone albo z dopasowaną

krotką z relacji S, albo uzupełniona wartościami NULL, gdy brak dopasowanej krotki (krotka

jest dopasowana do r, jeśli (r

s) = TRUE).

(b) Złączenie zewnętrzne prawostronne (ang. right outer join)

Relację R

1 +

F

typu X ∪ Y nazywamy złączeniem zewnętrznym prawostronnym

relacji (X) i (), wtedy i tylko wtedy, gdy

R

1 +

F

{t ∈ R × S (t) = TRUE} ∪

∪ {π

Y

(t× null (X \ Y ) : t ∈ R × S ∧ F (t6TRUE} ,

czyli do wyniku należą wszystkie krotki relacji (prawy operand) połączone albo z dopasowaną

krotką z relacji R, albo uzupełniona wartościami NULL, gdy brak dopasowanej krotki.

(c) Złączenie zewnętrzne pełne (ang. full outer join)

Relację R+

1 +

F

typu X ∪Y nazywamy złączeniem zewnętrznym pełnym relacji (X)

(), wtedy i tylko wtedy, gdy

R+

1 +

F

= (R+

1

F

S∪ (R

1 +

F

S.

background image

3.8. Podzielenie (ang. division)

Niech X ⊆ U . Relację R ÷ S typu U \ X nazywamy podzieleniem relacji (przez (X),

wtedy i tylko wtedy, gdy

R ÷ S =

n

t ∈ π

U \X

(R) : 

s∈S

t

s ∈ R

o

.

Własności podzielenia:

a) R ÷ S =

n

t ∈ π

U \X

(R) : [t, X]

o

, gdzie [t, X] = {s ∈ π

X

(R) : t

s ∈ R}.

b) Jeśli przyjmiemy, że count (S, m count ([t, X]), gdzie t ∈ R [U \ X] i n, to

t ∈ R ÷ S.

Zadania

Zadanie 1. Niech

dom (IM IE) = {

0

Adam

0

,

0

Ewa

0

,

0

Karol

0

,

0

Zof ia

0

},

dom (N AZW ISKO) = {

0

Kowalska

0

,

0

Kowalski

0

,

0

N owak

0

},

dom (P RZEDM IOT ) = {

0

AN A

0

,

0

BAD

0

,

0

M AD

0

,

0

SIK

0

},

dom (OCEN A) = {2345},

dom (P U N KT Y ) = {012, . . . , 220}

dom (IN DEKS) = {111111222222333333444444555555666666}

R

1

IN DEKS

IM IE

N AZW ISKO

222222

Ewa

Kowalska

333333

Zof ia

Kowalska

555555

Ewa

N owak

R

2

IN DEKS

IM IE

N AZW ISKO

111111

Adam

Kowalski

444444

Karol

N owak

R

3

IM IE

N AZW ISKO P U N KT Y

Karol

Kowalski

170

Ewa

N owak

219

Zof ia

N owak

165

R

4

IN DEKS

P RZEDM IOT

OCEN A

111111

AN A

4

222222

AN A

5

444444

AN A

2

555555

AN A

4

111111

BAD

3

444444

BAD

4

111111

M AD

3

222222

M AD

4

444444

M AD

5

666666

M AD

2

222222

SIK

2

444444

SIK

4

Dla podanych niżej operacji algebry relacji obliczyć wynik wykonania operacji o ile jest to możliwe

(podać postać relacji wynikowej i zinterpretować wynik):

a) S

1

R

1

∪ R

2

R

1

∪ R

3

,

b) S

2

π

{P RZEDM IOT }

(R

4

),

c) ¬S

1

¬S

2

,

d) R

2

∩ R

3

,

background image

e)



π

{IM IE}

(S

1

× π

{N AZW ISKO}

(S

1

)



\ π

{IM IE, N AZW ISKO}

(R

3

),

f ) σ

P U N KT Y >170

(R

3

),

g) σ

(P RZEDM IOT =

0

AN A

0

∨ P RZEDM IOT =

0

BAD

0

∧ OCEN A>2

(R

4

(podać kolejne kroki wartościowania),

h) R

4

÷ S

2

,

i) S

1

1

S

1

.IN DEKS=R

4

.IN DEKS

R

4

,

j) S

1

+

1

S

1

.IN DEKS=R

4

.IN DEKS

R

4

,

k) S

1

1 +

S

1

.IN DEKS=R

4

.IN DEKS

R

4

,

l) S

1

+

1 +

S

1

.IN DEKS=R

4

.IN DEKS

R

4

.

Zadanie 2. Udowodnij następujące własności operatora selekcji:

a) σ

E

(R ∪ S) = σ

E

(R∪ σ

E

(S),

b) σ

E

1

∧E

2

(R) = σ

E

1

(σ

E

2

(R)) = σ

E

2

(σ

E

1

(R)) = σ

E

1

(R∩ σ

E

2

(R),

c) σ

E

1

∨E

2

(R) = σ

E

1

(R∪ σ

E

2

(R).