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)