RELACJA MATEMATYCZNA – podzbiór iloczynu kartezjańskiego R

Transkrypt

RELACJA MATEMATYCZNA – podzbiór iloczynu kartezjańskiego R
Podstawy relacyjnego modelu danych i algebra relacji,
Ćw.-1, T.Pankowski
str. 1
RELACJA MATEMATYCZNA – podzbiór iloczynu kartezjańskiego
R ⊆ D1 × D2 × ... × Dn = {(d1, d2, ... ,dn) : di ∈ Di, i = 1,2,...n},
Di – dowolny zbiór. Relacja jest więc zbiorem ciągów.
TABELA (BAZY DANYCH) – relacja w sensie Codda:
Zbiór atrybutów (symboli): {A1, A2, ... }.
Dziedzina atrybutu: dom(A) – zbiór dopuszczalnych wartości atrybutu A,
NULL ∈ dom(A) dla każdego atrybutu A, NULL jest wartością pustą.
Krotką (ang. tuple) typu U = {A1, ..., An} nazywamy zbiór par:
t = [A1 : a1, ..., An : an], gdzie ai ∈ dom(Ai), dla i = 1, ..., n.
Przy ustalonym uporządkowaniu, atrybuty możemy pomijać i pisać:
t = (a1, ..., an).
Dla n = 0 mamy krotkę pustą, t = [ ]
Tabelą (relacją) typu U nazywamy dowolny skończony wielozbiór krotek typu U (krotki mogą się
powtarzać, występują duplikaty):
R = {t1, t2, …, tN}, ti – krotka typu U, i = 1,2, …, N.
OPERACJE NA TABELACH (ALGEBRA RELACJI):
mnogościowe (suma, różnica, przekrój)
relacyjne (projekcja, selekcja, przemianowanie, iloczyn kartezjański, złączenie, podzielenie)
OPERACJE MNOGOŚCIOWE NA TABELACH:
R(U), S(U) – tabele jednakowego typu U. Wynik – tabela typu U.
1. Suma mnogościowa (ang. union)
R ∪ S = {t | t ∈ R ∨ t ∈ S} (mogą wystąpić duplikaty)
2. Różnica mnogościowa (ang. difference)
R – S = {t | t ∈ R ∧ t ∉ S} (duplikaty automatycznie usuwane)
3. Przekrój (ang. intersection)
R ∩ S = {t | t ∈ R ∧ t ∈ S} (duplikaty automatycznie usuwane)
OPERACJE NA KROTKACH
1. Ograniczenie krotki: Niech r(U) będzie krotką typu U, i niech X ⊆ U, ograniczeniem krotki r do zbioru X
nazywamy krotkę typu X określoną następująco
πX(r) = {(A : r.A) | A ∈ X},
gdzie r.A – wartość krotki r na atrybucie A.
2. Złączenie krotek: złączenie krotek r(X) i s(Y) określona jest tylko wtedy, gdy zachodzi jeden z warunków
• X i Y są rozłączne, X ∩ Y = ∅,
• krotki mają jednakowe wartości na jednakowych atrybutach (warunek złączalności krotek).
Wynikiem złączenia jest krotka typu X ∪ Y będąca sumą mnogościową r i s, tj krotka określona następująco
r(X) ´ s(Y) = r(X) ∪ s(Y).
Właściwości operacji na krotkach:
r ´s = s ´ r
– złączenie krotek jest przemienne,
r ´ (s ´ t) = (r ´ s) ´ t
– złączenie krotek jest łączne,
r ´[ ] = r
– złączenie z krotką pustą nie zmienia krotki,
r ´ πX(r) = r
– złączenie krotki z dowolnym jej ograniczeniem nie zmienia krotki.
Podstawy relacyjnego modelu danych i algebra relacji,
Ćw.-1, T.Pankowski
str. 2
OPERACJE RELACYJNE NA TABELACH
1. Projekcja (ang. projection)
Niech R(U) będzie tabelą typu U i niech X ⊆ U. Projekcją tabeli R na zbiór X nazywamy tabelę typu X
określoną następująco
πX (R) = {πX(r) | r ∈ R}.
W projekcji mogą pojawić się duplikaty.
Szczególny przypadek:
π∅(R) = if R = ∅ then ∅ else {[ ]},
gdzie {[ ]}jest tabelą typu ∅ złożoną z jednej krotki pustej.
2. Selekcja (ang. selection)
Niech A, A' – atrybuty, c – stała, , θ ∈ {=, ≠, <, ≤, >, ≥, like, ... } – operator porównania,
Warunkiem selekcji nazywamy wyrażenie E o następującej składni:
E ::= A θ c | A θ A' | (E) | not E | E or E | E and E
Selekcja tabeli R względem warunku selekcji E, nazywamy tabelę (podzbiór R) określoną następująco
σE (R) = {t ∈ R | E(t) = TRUE}.
Selekcja jest więc zbiorem tych krotek tabeli R, dla których warunek E ma wartość TRUE.
Uwaga: Języki relacyjnych baz danych (SQL) opierają się na logice trójwartościowej o wartościach: TRUE,
FALSE i UNKNOWN („nieznana”). Każde porównanie z wartością NULL daje wartość logiczną
UNKNOWN.
t(A) θ NULL = UNKNOWN,
NULL θ c = UNKNOWN dla każdej stałej c, również dla NULL.
3. Przemianowanie (ang. renaming)
δA→B(R) – zmienia w tabeli R atrybut A na B (zmienia nazwę kolumny w tabeli).
4. Iloczyn (produkt) kartezjański (ang. cross join, Cartesian product)
Niech R(X) i S(Y) będą tabelami o rozłącznych zbiorach atrybutów, X ∩ Y = ∅. Iloczynem kartezjańskim R i
S nazywamy tabelę typu X ∪ Y określoną następująco
× = ⋈ | ∈ , ∈ },
a więc każda krotka tabeli R łączona jest z każdą krotką tabeli S. Często przed operacją iloczynu
kartezjańskiego konieczne jest przemianowanie atrybutów. Przemianowanie to może polegać na
prefiksowaniu atrybutów jakąś nazwą (często jest to nazwa tabeli). Na przykład atrybut A w tabeli R
nazywany jest R.A, itp.
5. Złączenie naturalne (ang. natural join)
W przypadku złączenia naturalnego – w przeciwieństwie do iloczynu kartezjańskiego – tabele nie muszą mieć
rozłącznych zbiorów atrybutów. Złączeniem naturalnym (ang. natural join) tabel R(X) i S(Y) nazywamy
tabelę typu X ∪ Y określoną następująco
⋈ = ⋈ | ∈ , ∈ }.
Każda krotka tabeli R łączona jest z każdą złączalną z nią krotką tabeli S.
Inaczej:
R ´ S = {t | πX(t) ∈ R ∧ πY(t) ∈ S}.
R ´ S = {t | ∃ r ∈ R. ∃ s ∈ S. t = r ´ s}.
Specjalne przypadki:
jeśli X = Y, to R ´ S = R ∩ S, złączenie naturalne jest tożsame z przekrojem tabel.
jeśli X ∩ Y = ∅, to R ´ S = R × S, złączenie naturalne jest tożsame z iloczynem kartezjańskim.
Właściwości złączenia naturalnego (R jest tabelą typu U)
R ´ {[ ]} = R;
R ´ ∅ = ∅,
R ´ πX(R) = R,
R ⊆ πX(R) ´ πY(R), X ∪ Y = U,
R´S=S´R
R ´ (S ´ T) = (R ´ S) ´ T
Podstawy relacyjnego modelu danych i algebra relacji,
Ćw.-1, T.Pankowski
str. 3
6. Złączenie warunkowe: θ-złączenie, theta-złączenie (θ
θ-join):
Niech R(X), S(Y) – będą tabelami, gdzie X = {R.A1, ..., R.An}, Y = {S.B1, ..., S.Bm} i niech
θ ∈ {=, ≠, <, ≤, >, ≥, like, ... }.
Warunkiem złączenia nazywamy wyrażenie F o następującej składni:
F ::= R.A θ S.B | (F) | not F | F or F | F and F
θ-złączeniem tabel R i S względem warunku złączenia F nazywamy tabelę typu X ∪ Y określoną następująco
R ´F S = {t ∈ R × S | F(t) = TRUE}.
θ-złączenie jest więc selekcją z iloczynu kartezjańskiego: R ´ F S = σF (R × S).
7. Złączenia zewnętrzne (ang. outer join):
7.1. Złączenie zewnętrzne lewostronne (ang. left outer join)
Złączeniem zewnętrznym lewostronnym tabel R(X) i S(Y) względem warunku F, nazywamy tabelę
typu X ∪ Y określoną następująco
R +´F S = R ´F S ∪ (R – πX(R ´F S)) × null(Y),
tzn. do wyniku należą wszystkie krotki tabeli R (lewy operand) połączone albo z dopasowaną krotką z
tabeli S, albo uzupełnione wartościami NULL w kolumnach Y, gdy brak dopasowanej krotki.
7.2. Złączenie zewnętrzne prawostronne (ang. right outer join)
Złączeniem zewnętrznym prawostronnym tabel R(X) i S(Y) względem warunku F, nazywamy tabelę typu
X ∪ Y określoną następująco
R +´F S = R ´F S ∪ null(X) × (S – πY(R ´F S)),
tzn. do wyniku należą wszystkie krotki tabeli S (prawy operand) połączone albo z dopasowaną krotką z
tabeli R, albo uzupełnione wartościami NULL w kolumnach X, gdy brak dopasowanej krotki.
7.3. Złączenie zewnętrzne pełne (ang. full outer join)
Złączeniem zewnętrznym pełnym tabel R(X) i S(Y) względem warunku F, nazywamy tabelę typu X ∪ Y
określoną następująco
R +´+F S = R +´F S ∪ R ´+F S.
8. Podzielenie (ang. division):
Niech R(U) i S(X) będą tabelami i niech X ⊆ U. Podzieleniem tabeli R(U) przez S(X) nazywamy tabelę
typu U – X określoną następująco
R(U) ÷ S(X) = {t ∈ πU – X(R) | ∀ s ∈ S (t ´ s ∈ R)}.
Podzielenie tabeli binarnej przez tabelę unarną, R(A, B) ÷ S(B), możemy wyznaczyć następująco:
a) Q1(A, B) := πA (R) × S – zbiór wszystkich możliwych par wartości dla pary atrybutów (A, B),
b) Q2(A, B) := Q1 – R – zbiór par, które nie należą do R,
c) Q(A) := πA (R) – πA (Q2) – zbiór wartości atrybutu A należący do odpowiedzi.
Ogólnie:
R(U) ÷ S(X) = πU – X (R) – πU – X ((πU – X (R) × S) – R)
Inny sposób – t należy do odpowiedzi, jeśli liczba jego wystąpień w R jest równa liczbie elementów w S.
R(U) ÷ S(X) = {t ∈ πU – X (R) | count({s ∈ πX (R) | t ´ s ∈ R}) = count(S)}.
Podstawy relacyjnego modelu danych i algebra relacji,
Ćw.-1, T.Pankowski
str. 4
ZADANIA
1. Niech
A1 = {a, b, c, d},
A4 = {1, 2, 3, 4, 5, 6}
R1
A1
a
a
b
d
a
a
A2
x
y
x
z
z
x
R4
A1
a
b
c
c
A4
1
1
3
4
A6
m
p
p
u
A2 = {x, y, z},
A5 = {x, y, z}
A3 = {a, b, c, d}
A6 = {m, n, p, u, v}
R2
A1
a
b
c
d
a
a
a
A2
y
y
z
x
y
x
x
R3
R5
A1
a
a
b
c
A2
x
z
x
z
A4
1
2
1
3
2
4
5
R6
A3
a
a
c
d
A5
x
z
x
z
A2
x
y
z
Dla podanych niżej operacji algebry relacji
a) obliczyć wynik wykonania operacji (podać postać tablicy wynikowej)
b) napisać zapytanie w języku SQL realizujące podaną operację
1) R1(A1, A2) ∪ R5(A1, A2); R1(A1, A2) ∪ R3(A3, A5) (atrybuty kompatybilne)
2) – R1(A1, A2)
(w praktyce operacji tej się nie wykonuje – dlaczego?)
3) R1(A1, A2) – R5(A1, A2)
4) R1(A1, A2) ∩ R5(A1, A2)
5) π{A1, A2}(R2) (lub R2[A1, A2])
(podać kolejne kroki wartościowania)
6) σ(A1=a ∨ A2 =x) ∧ A4 ≤ 3(R2)
7) R3 × R5
(iloczyn kartezjański)
8) R1 ´ R4
(złączenie naturalne)
(złączenie warunkowe)
9) R3 ´A1=A3 R5
(złączenie zewnętrzne lewostronne)
10) R3 +´A1=A3 R5
11) R3 ´+A1=A3 R5
12) R3 +´+A1=A3 R5
13) R1(A1, A2) ÷ R6(A2)
2. Zbiór operacji mnogościowych (suma, różnica, przekrój dopełnienie) nie jest minimalny, np. jeżeli jest suma
i dopełnienie to:
R ∩ S = –(–R ∪ –S)
R – S = R∩(–S) = –(–R∪S)
Oznaczenia:
Projekcja: πX (R) lub R[X]
Selekcja: σE (R)
Złączenie: R ´F S
Zdefiniuj podobne związki jeżeli przyjąć, że dane są:
a) suma i różnica
b) przekrój i dopełnienie
c) przekrój i różnica
Zbiór minimalny operacji: (1) suma, (2) różnica, (3) projekcja, (4) przemianowanie, (5) złączenie naturalne,
(6) selekcja.
Pozostałe operacja: przekrój, iloczyn kartezjański, θ-złączenie, złączenia zewnętrzne, podzielenie – mogą być
wyrażone za pomocą operacji podstawowych. Pokazać jak!
3. Udowodnij (korzystając z definicji) następujące właściwości operatora selekcji:
a) σE (R∪S) = σE (R) ∪ σE (S)
b) σE1∧E2 (R) = σE1 (σE2 (R)) = σE2 (σE1 (R)) = σE1 (R) ∩ σE2 (R)
c) σE1∨E2 (R) = σE1 (R) ∪σE2 (R)