20.07.2013 Views

Algebra relacji Definicja 1 (Relacja matematyczna). Relacją R ...

Algebra relacji Definicja 1 (Relacja matematyczna). Relacją R ...

Algebra relacji Definicja 1 (Relacja matematyczna). Relacją R ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Algebra</strong> <strong>relacji</strong><br />

<strong>Definicja</strong> 1 (<strong>Relacja</strong> <strong>matematyczna</strong>). <strong>Relacją</strong> R między elementami zbioru D1 × D2 × · · · × Dn, gdzie<br />

przypomnijmy<br />

D1 × D2 × · · · × Dn = {(d1, d2, . . . , dn) : di ∈ Di, i = 1, 2, . . . , n} ,<br />

nazywamy każdy podzbiór iloczynu karteziańskiego D1 × D2 × · · · × Dn.<br />

<strong>Definicja</strong> 2 (<strong>Relacja</strong> w sensie Codd’a). Niech U = {A1, A2, A3, . . . } będzie zbiorem złożonym z atrybutów<br />

A1, A2, A2, . . . . Dla każdego atrybutu A ∈ U zbiór jego wartości (prostych) nazywamy dziedziną i oznaczamy<br />

dom (A). Zakładamy, że dla każdego A ∈ U zachodzi inkluzja NULL ∈ dom (A).<br />

Dla zbioru atrybutów U = {B1, B2, . . . , Bn}, gdzie B1, B2, . . . , Bn ∈ U, definiujemy:<br />

• krotkę t typu U (z ang. tuple) jako zbiór par uporządkowanych<br />

t = {(B1, b1) , (B2, b2) , . . . , (Bn, bn)} ozn.<br />

= [B1 : b1, B2 : b2, . . . , Bn : bn]<br />

gdzie bi ∈ Di = dom (Bi) dla i = 1, 2, . . . , n.<br />

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

Uwaga 1. Każdy zbiór par t = [A1 : a1, A2 : a2, . . . , An : an], przy oznaczeniach z powyższej definicji, jest<br />

pewną funkcją ze zbioru atrybutów U = {A1, A2, . . . , An} w zbiór wartości V = D1 ∪ D2 ∪ · · · ∪ Dn, gdzie<br />

Di = dom (Ai) dla i = 1, 2, . . . , n, a zatem t: U → V jest funkcją taką, że dla każdego A ∈ U, t (A) ∈<br />

dom (A).<br />

Oznaczenia:<br />

• KROTKA(U) — zbiór wszystkich krotek typu U,<br />

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

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

• REL(U) – zbiór wszystkich <strong>relacji</strong> typu U (Ile jest takich <strong>relacji</strong> jeśli |KROTKA (U)| = k?),<br />

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

• U, X, Y, V, W — zbiory atrybutów (typy <strong>relacji</strong>),<br />

• R (U) , S (X) , . . . — relacje odpowiednio typu U, X, . . . ; gdy typ wynika z kontekstu piszemy<br />

R, S, . . . ,<br />

• t (U) , r (X) , . . . — krotki typu U, X, . . . ; gdy typ wynika z kontekstu piszemy t, r, . . . ,<br />

• zamiast pisać r = [A1 : a1, A2 : a2, . . . , An : an] piszemy w skrócie r = (a1, a2, . . . , an) — domyśl-<br />

ne przyjmujemy uporządkowanie wartości w krotce takie jak uporządkowanie atrybutów w typie<br />

<strong>relacji</strong>,<br />

• zamiast pisać R ({A, B}) piszemy w skrócie R (A, B),<br />

• zamiast pisać R (X ∪ Y ) piszemy w skrócie R (X, Y ).<br />

Operacje na relacjach (algebra <strong>relacji</strong>)<br />

1. Operacje mnogościowe na relacjach


Operandy: R (U) , S (U) — relacje typu U Wynik: T (U) — relacja typu U<br />

Suma mnogościowa (ang. union) T = R ∪ S {t: t ∈ R ∨ t ∈ S}<br />

Różnica mnogościowa (ang. difference) T = R \ S = {t: t ∈ R ∧ t /∈ S}<br />

Przekrój mnogościowy (ang. intersection) T = R ∩ S = {t: t ∈ R ∨ t ∈ S)<br />

Dopełnienie mnogościowe (ang. complement) T = R c = KROTKA (X) \ R (X)<br />

Uwaga 2. W przypadku dopełnienia istotnym jest, aby zbiór KROTKA (X) był skończony (Dlaczego?),<br />

co powoduje, że w praktyce dopełnienie nie jest stosowane.<br />

Sumy zewnętrzne (otwarte, ang. outer union)<br />

Niech Z = X ∪Y i R (X) będzie relacją typu X, a S (Y ) typu Y . Tworzymy relację R ′ (Z) typu Z poprzez<br />

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

R ′ (Z) = {t ′ ∈ KROTKA (Z) : (t ′ (A) = t (A) dla A ∈ X) ∧ (t ′ (A) = null (A) dla A ∈ Z \ X)} .<br />

W analogiczny sposób tworzymy relację S ′ (Z) typu Z, to znaczy<br />

S ′ (Z) = {r ′ ∈ KROTKA (Z) : (r ′ (B) = r (B) dla B ∈ Y ) ∧ (r ′ (B) = null (B) dla B ∈ Z \ Y )} .<br />

Definiujemy sumę zewnętrzną R (X) OUTER UNION S (Y ) <strong>relacji</strong> R (X) i S (Y ) jako<br />

2.1. Ograniczenie krotki<br />

R (X) OUTER UNION S (Y ) = R ′ (Z) ∪ S ′ (Z) .<br />

2. Operacje na krotkach<br />

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

krotki r (U) do zbioru atrybutów X, wtedy i tylko wtedy, gdy<br />

dla każdego A ∈ X.<br />

2.2. Złączenie krotek<br />

t (A) = r (A)<br />

Krotkę r ✶ s typu X ∪ Y nazywamy złączeniem naturalnym (ang. natural join) krotek r (X) i<br />

s (Y ), wtedy i tylko wtedy, gdy t [X] = r i t [Y ] = s.<br />

3. Operacje relacyjne<br />

3.1. Projekcja, rzut (ang. projection) <strong>relacji</strong><br />

Niech R (U) będzie relacją typu U i niech X ⊆ U. Relację R [X] (lub πX (R)) typu X nazywamy<br />

projekcją <strong>relacji</strong> R na X, wtedy i tylko wtedy, gdy<br />

w szczególności<br />

R [X] = πX (R) = {t ∈ KROTKA (X) : ∃r∈R t = r [X]} ,<br />

⎧<br />

⎪⎨ ∅ gdy R = ∅,<br />

R [∅] = π∅ (R) =<br />

⎪⎩ {ɛ} w p.p.


3.2. Selekcja (ang. selection)<br />

Niech A, A ′ ∈ U, ν ∈ <br />

dom (A) , θ ∈ {=, =, , , like, . . . }.<br />

A∈U<br />

• Atomowymi warunkami selekcji są: A θ ν oraz A θ A ′ .<br />

• Każdy atomowy warunek selekcji jest warunkiem selekcji.<br />

• Jeśli E i E ′ są warunkami selekcji, to są nimi również: (E) , ¬E, E ∨ E ′ , E ∧ E ′ .<br />

Relację σE (R) typu U nazywamy selekcją <strong>relacji</strong> R (U) względem warunku selekcji E, wtedy<br />

i tylko wtedy, gdy<br />

Sposoby obliczania warunków selekcji:<br />

a) (A θ ν) (t) = t (A) θ ν,<br />

b) (A θ A ′ ) (t) = t (A) θ t (A ′ ),<br />

c) (¬E) (t) = ¬ (E (t)),<br />

d) (E ∨ E ′ ) (t) = E (t) ∨ E ′ (t),<br />

e) (E ∧ E ′ ) (t) = E (t) ∧ E ′ (t).<br />

σE (R) = {t ∈ R: E (t) = TRUE} .<br />

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

ściach: TRUE, FALSE i UNKNOWN („nieznana”), to dodatkowo mamy:<br />

f ) t (A) θ NULL = UNKNOWN,<br />

g) NULL θ ν = UNKNOWN dla każdego ν, również równego NULL.<br />

3.3. Przemianowanie (ang. renaming)<br />

Niech R (U) będzie relacją typu U, a A i B niech będą atrybutami, przy czym A ∈ U i B /∈ U.<br />

Niech W = U \ {A} ∪ {B}. Relację δA→B (R) typu W nazywamy przemianowaniem w <strong>relacji</strong><br />

R atrybutu A na atrybut B, wtedy i tylko wtedy, gdy<br />

δA→B (R) = <br />

t ∈ KROTKA (W ) : ∃r∈R t = πU\{A} (r) ✶ [B : r (A)] <br />

.<br />

3.4. Iloczyn kartezjański (ang. cross join, Cartesian product)<br />

Niech R (X) i S (Y ) będą relacjami typu odpowiednio X i Y , gdzie X = {A1, A2, . . . , An}, Y =<br />

{B1, B2, . . . , Bm}. Określmy prefiksowanie atrybutów <strong>relacji</strong> R i S w następujący sposób R.X =<br />

{R.A1, R.A2, . . . , R.An} , S.Y = {S.B1, S.B2, . . . , S.Bm}. Iloczynem kartezjańskim <strong>relacji</strong> R<br />

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

3.5. Złączenie (ang. join)<br />

R × S = {t ∈ KROTKA (R.X ∪ S.Y ) : πR.X (t) = R ∧ πS.Y (t) = S} .<br />

Relację R ✶ S typu X ∪ Y nazywamy złączeniem naturalnym (ang. natural join) <strong>relacji</strong> R (X)<br />

i S (Y ), wtedy i tylko wtedy, gdy<br />

albo równoważnie<br />

R ✶ S = {t ∈ KROTKA (X ∪ Y ) : πX (t) = R ∧ πY (t) = S} ,<br />

R ✶ S = (t ∈ KROTKA (X ∪ Y ) : ∃r∈R∃s∈S t = r ✶ s) .


Jeżeli R i S są relacjami odpowiednio typu X i Y oraz X = Y , to R ✶ S = R ∩ S, z kolei jeżeli<br />

X ∩ Y = ∅, to R ✶ S = R × S.<br />

Właściwości ✶ dla <strong>relacji</strong> R, S, T typu U:<br />

a) R ✶ {ɛ} = R,<br />

b) R ✶ ∅ = ∅,<br />

c) R ✶ πX {R} = R, gdzie X ⊆ U,<br />

3.6. θ-złączenie, theta-złączenie (θ-join)<br />

d) R ⊆ πX (R) ✶ πY (R), gdzie X ∪ Y = U,<br />

e) R ✶ S = S ✶ R<br />

f ) R ✶ (S ✶ T ) = (R ✶ S) ✶ T .<br />

Niech R (X) , S (Y ) będą relacjami odpowiednio typu X i Y , gdzie X = {A1, A2, . . . , An} , Y =<br />

{B1, B2, . . . Bm} i niech θ ∈ {=, =, , , like, . . . }.<br />

Relację R ✶F S typu X × Y nazywamy θ-złączeniem <strong>relacji</strong> R i S względem warunku<br />

złączenia F (analogicznie jak warunek selekcji), wtedy i tylko wtedy, gdy<br />

R ✶F S = {t ∈ R × S : F (t) = TRUE} .<br />

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

3.7. Złączenia zewnętrzne (ang. outer join)<br />

R ✶F S = σF (R × S) .<br />

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

Relację R+ ✶F S typu X ∪ Y nazywamy złączeniem zewnętrznym lewostronnym <strong>relacji</strong><br />

R (X) i S (Y ), wtedy i tylko wtedy, gdy<br />

R+ ✶F S = {t ∈ R × S : F (t) = TRUE} ∪<br />

∪ {πX (t) × null (Y \ X) : t ∈ R × S ∧ F (t) = TRUE} ,<br />

czyli do wyniku należą wszystkie krotki <strong>relacji</strong> R (lewy operand) połączone albo z dopasowaną<br />

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

s jest dopasowana do r, jeśli F (r ✶ s) = TRUE).<br />

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

Relację R ✶ +F S typu X ∪ Y nazywamy złączeniem zewnętrznym prawostronnym<br />

<strong>relacji</strong> R (X) i S (Y ), wtedy i tylko wtedy, gdy<br />

R ✶ +F S = {t ∈ R × S : F (t) = TRUE} ∪<br />

∪ {πY (t) × null (X \ Y ) : t ∈ R × S ∧ F (t) = TRUE} ,<br />

czyli do wyniku należą wszystkie krotki <strong>relacji</strong> S (prawy operand) połączone albo z dopasowaną<br />

krotką z <strong>relacji</strong> R, albo uzupełniona wartościami NULL, gdy brak dopasowanej krotki.<br />

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

Relację R+ ✶ +F S typu X ∪Y nazywamy złączeniem zewnętrznym pełnym <strong>relacji</strong> R (X)<br />

i S (Y ), wtedy i tylko wtedy, gdy<br />

R+ ✶ +F S = (R+ ✶F S) ∪ (R ✶ +F S) .


3.8. Podzielenie (ang. division)<br />

Niech X ⊆ U. Relację R ÷ S typu U \ X nazywamy podzieleniem <strong>relacji</strong> R (U) przez S (X),<br />

wtedy i tylko wtedy, gdy<br />

R ÷ S = <br />

t ∈ πU\X (R) : ∀s∈S t ✶ s ∈ R <br />

.<br />

Własności podzielenia:<br />

a) R ÷ S = <br />

t ∈ πU\X (R) : S = R [t, X] <br />

, gdzie R [t, X] = {s ∈ πX (R) : t ✶ s ∈ R}.<br />

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

t ∈ R ÷ S.<br />

Zadanie 1. Niech<br />

Zadania<br />

dom (IMIE) = { ′ Adam ′ , ′ Ewa ′ , ′ Karol ′ , ′ Zofia ′ },<br />

dom (NAZW ISKO) = { ′ Kowalska ′ , ′ Kowalski ′ , ′ Nowak ′ },<br />

dom (P RZEDMIOT ) = { ′ ANA ′ , ′ BAD ′ , ′ MAD ′ , ′ SIK ′ },<br />

dom (OCENA) = {2, 3, 4, 5},<br />

dom (P UNKT Y ) = {0, 1, 2, . . . , 220}<br />

dom (INDEKS) = {111111, 222222, 333333, 444444, 555555, 666666}<br />

R1 INDEKS IMIE NAZW ISKO<br />

222222 Ewa Kowalska<br />

333333 Zofia Kowalska<br />

555555 Ewa Nowak<br />

R2 INDEKS IMIE NAZW ISKO<br />

111111 Adam Kowalski<br />

444444 Karol Nowak<br />

R3 IMIE NAZW ISKO P UNKT Y<br />

Karol Kowalski 170<br />

Ewa Nowak 219<br />

Zofia Nowak 165<br />

R4 INDEKS P RZEDMIOT OCENA<br />

111111 ANA 4<br />

222222 ANA 5<br />

444444 ANA 2<br />

555555 ANA 4<br />

111111 BAD 3<br />

444444 BAD 4<br />

111111 MAD 3<br />

222222 MAD 4<br />

444444 MAD 5<br />

666666 MAD 2<br />

222222 SIK 2<br />

444444 SIK 4<br />

Dla podanych niżej operacji algebry <strong>relacji</strong> obliczyć wynik wykonania operacji o ile jest to możliwe<br />

(podać postać <strong>relacji</strong> wynikowej i zinterpretować wynik):<br />

a) S1 = R1 ∪ R2, R1 ∪ R3,<br />

b) S2 = π{P RZEDMIOT } (R4),<br />

c) ¬S1, ¬S2,<br />

d) R2 ∩ R3,


e) <br />

π{IMIE} (S1) × π{NAZW ISKO} (S1) <br />

\ π{IMIE, NAZW ISKO} (R3),<br />

f) σP UNKT Y >170 (R3),<br />

g) σ(P RZEDMIOT = ′ ANA ′ ∨ P RZEDMIOT = ′ BAD ′ ) ∧ OCENA>2 (R4) , (podać kolejne kroki wartościowania),<br />

h) R4 ÷ S2,<br />

i) S1 ✶S1.INDEKS=R4.INDEKS R4,<br />

j) S1+ ✶S1.INDEKS=R4.INDEKS R4,<br />

k) S1 ✶ +S1.INDEKS=R4.INDEKSR4,<br />

l) S1+ ✶ +S1.INDEKS=R4.INDEKSR4.<br />

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

a) σE (R ∪ S) = σE (R) ∪ σE (S),<br />

b) σE1∧E2 (R) = σE1 (σE2 (R)) = σE2 (σE1 (R)) = σE1 (R) ∩ σE2 (R),<br />

c) σE1∨E2 (R) = σE1 (R) ∪ σE2 (R).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!