Relacja - Tomasz Kubik
Transkrypt
Relacja - Tomasz Kubik
Relacja Schemat relacji Schemat relacji jest to zbiór R = {A1, ..., An}, gdzie A1, ..., An są artybutami (nazwami kolumn) np. Loty = {Numer, Skąd, Dokąd, Odlot, Przylot} KaŜdemu atrybutowi A przyporządkowana jest dziedzina Dom(A), czyli zbiór dopuszczalnych wartości. np. Dom(Numer) = NUMBER(3), DOM(Skąd) = CHAR (15), ..... Dziedziną relacji o schemacie R = {A1, ..., An} nazywamy sumę dziedzin wszystkich trybutów relaci: Dom(R) = Dom(A1) ∪ Dom(A2) ∪ ... ∪ Dom(An) Relacja o schemacie R = {A1, ..., An} jest to skończony zbiór r = { t1,..., tm}odwzorowań ti: R → Dom(R) takich, Ŝe dla kaŜdego j , 1 ≤ j ≤ n, ti (Aj) ∈ Dom(Aj). Krotka KaŜde odwzorowanie ti: R → Dom(R) nazywa się krotką (lub wierszem). Krotkę moŜna określić przez podanie wartości dla poszczególnych atrybutów: t(Numer)=83, t(Skąd)='Warszawa', t(Dokąd)='Wrocław', t(Odlot)='6:50', t(Przylot)='8:00' albo graficznie (wiersz tabeli) Numer 83 Skąd Warszawa Dokąd Wroclaw Odlot 6:50 Przylot 8:00 Ograniczenie krotki t relacji r o schemacie R do zbioru atrybutów X ⊆ R to odwzorowanie: t|X : X → Dom(X) Na przykład: ograniczeniem krotki t (zdefiniowanej jak wyŜej) do zbioru X={Skąd, Dokąd} jest krotka: t|X(Skąd) = 'Warszawa', t|X (Dokąd) = 'Wrocław' co graficznie jest: Skąd Warszawa Dokąd Wroclaw ZaleŜność funkcyjna Relacja r o schemacie R = {A1, ..., An}spełnia zaleŜność funkcyjną X → Y (X,Y ⊆ R) jeśli dla kaŜdych dwóch krotek t, u ∈ r zachodzi warunek: jeśli t|X = u|X to t|Y = u|Y tzn. w ramach krotek relacji r wartości atrybutów zbioru X determinują jednoznacznie wartości atrybutów zbioru Y (dla kaŜdej wartości w kolumnie Y istnieje dokładnie jedna związana z nią wartość w kolumnie X). Zakłada się, Ŝe z kaŜdym schematem relacji związany jest zbiór spełniających ją zaleŜności funkcyjnych (zaleŜnych od konkretnego zastosowania). Na przykład: Numer → {Skąd, Dokąd, Odlot, Przylot} {Skąd, Dokąd, Odlot} → {Numer, Przylot} {Skąd, Dokąd, Przylot} → {Numer, Odlot } Klucze Nadkluczem relacji r o schemacie R ={A1, ..., An}nazywamy dowolny zbiór atrybutów X ⊆ R taki, Ŝe zachodzi zaleŜność funkcyjna X → R. Tzn. wartość kaŜdego atrybutu jest jednoznacznie zdeterminowana przez wartości atrybutów zbioru X . Jednym z nadkluczy jest zawsze zbiór wszystkich atrybutów R. Kluczem relacji r o schemacie R ={A1, ..., An} nazywamy kaŜdy minimalny nadklucz (nie zawierający Ŝadnego nadklucza). A więc zbiór atrybutów X jest kluczem, jeśli wartość kaŜdego atrybutu w R jest jednoznacznie zdeterminowana przez wartości atrybutów zbioru X i Ŝaden podzbiór zbioru X nie ma juŜ tej własności. Zawsze istnieje co najmniej jeden klucz, a moŜe być ich więcej, np. {Numer} {Skąd, Dokąd, Odlot} {Skąd, Dokąd, Przylot} WyróŜniony klucz nazywa się klucze głównym. Wchodzące w jego skład atrybuty są podkreślane. Loty = {Numer, Skąd, Dokąd, Odlot, Przylot} Operatory relacyjne Operatory teorio-mnogościowe ∪ (suma), ∩ (przecięcie), - (róŜnica) Selekcja dla atrybutu A∈R, oraz a∈Dom(A) σ A= a (r ) = {t ∈ r | t ( A) = a} (tzn. zbiór krotek relacji r, w których wartością atrybutu jest element a) dla dowolnego warunku logicznego F σ F (r ) = {t ∈ r | t spelnia warunek F } (tzn. zbiór krotek relacji r spełniający warunek F) Pewne własności selekcji: σ F ( r ∪ s ) = σ F (r ) ∪ σ F ( s ) σ F ∧ G ( r ) = σ F (σ G ( r ) ) = σ G ( σ F ( r ) ) = σ F ( r ) ∩ σ G ( r ) σ F ∨G (r ) = σ F (r ) ∪ σ G (r ) Rzut Rzut (projekcja) relacji na zbiór atrybutów X ⊆ R: π X (r ) = {t| X : t ∈ r} (tzn. ograniczenie wszystkich krotek relacji r do atrybutów zbioru X) Przykładowe własności: πX (πY (r)) = πX (r) - przy załoŜeniu X ⊆ Y πX (r ∪ s) = πX (r) ∪ πX (s) - dla ∩ nie zachodzi σ F (π X (r ) ) = π X (σ F (r ) ) - przy załoŜeniu F(X) RównowaŜności: SELECT A1 ,K , An FROM r WHERE F π { A ,K, A } (σ F (r ) ) 1 n Iloczyn kartezjański Dla dwóch relacji: r o schemacie R ={A1, ..., An} oraz s o schemacie S ={ B1, ..., Bm}, przy załoŜeniu R ∩ S = ∅ , iloczynem kartezjańskim nazywamy relację q = r ⊗ s o schemacie Q = {A1, ..., An,B1, ..., Bm}, składającą się z krotek t ∈ q , dla których istnieją krotki u ∈ r oraz v ∈ s, takie, Ŝe: t ( Ai ) = u ( Ai ) dla 1 ≤ i ≤ n, (tzn. u = t|R ) t ( Bi ) = u ( Bi ) dla 1 ≤ i ≤ n (tzn. v = t|S ) (tzn. iloczyn kartezjański relacji r i s jest zbiorem wszystkich moŜliwych kombinacji krotek tych relacji). RównowaŜnie: t ∈ r ⊗ s ⇔ t| R ∈ r oraz t|S ∈ s W przypadku, gdy schematy relacji nie są rozłączne, najpierw zmieniamy nazwy atrybutów jednej z relacji (np. na r. A1 ,K , r. An ), a następnie stosujemy powyŜszą definicje. Przykładowe własności: (r ∪ s ) ⊗ q = ( r ⊗ q ) ∪ ( s ⊗ q ) σ F ∧G ( r ⊗ s ) = σ F (r ) ⊗ σ G ( s) jeśli F(R), F(S) π X ∪Y (r ⊗ s ) = π X (r ) ⊗ π Y ( s) jeśli X ⊆ R, Y ⊆ S RównowaŜności: SELECT C1 ,K , Ck FROM r,s WHERE F π {C ,K,C } (σ F (r ⊗ s) ) 1 k gdzie {C1 ,K , Ck } ⊆ { A1 ,K , An , B1 ,K , Bm } Złączenie naturalne Dla dwóch relacji : r o schemacie R = {A1, ..., An} oraz s o schemacie S = {B1, ..., Bm} złączenie naturalne to relacja q = r ⊕ s o schemacie Q = R ∪ S taka, Ŝe: q = {t : ∃u ∈ r , v ∈ s | u|R = t , v|S = t} (tzn. złączeniem naturalnym relacji r i s jest zbiór wszystkich moŜliwych połączeń krotek obu relacji, przy których ich wspólne atrybuty mają takie same wartości i nie są powtarzane. RównowaŜna definicja: t ∈ r ⊕ s ⇔ t|R ∈ r oraz t|S ∈ s Uwagi: Kolejność atrybutów w relacji jest nieistotna, podobnie jak kolejność krotek. R∩S =∅⇒ r⊕s = r⊗s Złączenie naturalne da się równieŜ zdefiniować w następujący sposób: r ⊕ s = π R ∪ S (σ r .D1 = s. D1 ∧Kr .Dk = s.Dk (r ⊗ s )) gdzie R ∩ S = {D1 ,K , Dk } Podstawowe własności złączenia naturalnego: 1. q ⊕ q = q 2. q ⊕ r = r ⊕ q 3. (q ⊕ r ) ⊕ s = q ⊕ (r ⊕ s ) 4. π R (r ⊕ s ) ⊆ r oraz π S (r ⊕ s ) ⊆ s 5. q ⊆ π R (q) ⊕ π S (q) Gdy zachodzi 4), złączanie nie traci informacji zawartych w r i s. Złączanie naturalne jednak nie wyklucza tracenia informacji (porównaj ze złączaniem zewnętrznym). Gdy zachodzi 5), relacja q rozkłada się względem podziału na R i S z zachowaniem informacji. Tylko w takim przypadku moŜna zastąpić w bazie danych relację q przez relacje π R (q) i π S (q) . Przykład: Q={A,B,C}, R={A,B}, S={B,C} A B C A B C q=a b c a1 b1 c1 A B π R (q) = a b a1 b1 B C π S (q ) = b c b1 c1 a π R (q) ⊕ π S (q) = a b b c c1 ≠ q a1 b c a1 b1 c1 Ocena poprawności relacji Przykład: relacja (zła): Dostawcy={Nazwa_dostawcy, Adres_dostawcy, Nazwa_towaru, Cena} zaleŜności funkcyjne: Nazwa_dostawcy → Adres_dostawcy Nazwa_dostawcy, Nazwa_towaru → Cena relacja (zła): Pracownicy={Id_pracownika, Nazwisko, Instytucja, Nazwa_instytucji, Adres_instytucji} zaleŜności funkcyjne: Id_pracownika → Nazwisko, Nazwa_instytucji Nazwa_instytucji → Adres_instytucji Ze schematem relacji wiąŜe się pewien zbiór zaleŜności funkcyjnych F. ZaleŜność funkcyjna X →Y wynika logicznie z zaleŜności funkcyjnych F (oznaczenie F |= X → Y), jeśli kaŜda relacja r spełniająca wszystkie zaleŜności w zbiorze F spełnia równieŜ zaleŜność X → Y. Jeśli F= {Nazwa_dostawcy → Adres_dostawcy; Nazwa_dostawcy, Nazwa_towaru → Cena} to F |= Nazwa_dostawcy, Nazwa_towaru → Adres_dostawcy, Cena} Domknięcie Domknięcie zaleŜności funkcyjnych F, oznaczane przez F+ to zbiór wszystkich zaleŜności funkcyjnych wynikających logicznie z zaleŜności funkcyjnych F. Przykładowo: A → C ∈ {A → B; B → C}+ Klucze – rozszerzona definicja Nadkluczem relacji r o schemacie R ={A1, ..., An} i zbiorze zaleŜności funkcyjnych F nazywamy dowolny zbiór atrybutów X ∈ R taki, Ŝe: X → R ∈ F+ Kluczem relacji r o schemacie R ={A1, ..., An} i zbiorze zaleŜności funkcyjnych F nazywamy dowolny minimalny nadklucz relacji r, tzn. dowolny zbiór atrybutów X ∈ R, taki, Ŝe: 1. X → R ∈ F+ 2. dla Ŝadnego Y ⊆ X, X ≠ Ynie zachodzi Y → R∈ F+ Przykład: R={Miasto, Ulica, Kod}, F={Miasto,Ulica → Kod; Kod → Miasto} Kluczami tego schematu są: {Miasto, Ulica}, {Ulica, Kod} R={A,B,C,D}, F={A → C;B → D} Kluczem jest {A,B} ZaleŜność funkcyjna nie od klucza ZaleŜność funkcyjna X → Y jest zaleŜnością od klucza, jeśli zbiór atrybutów X jest nadkluczem. ZaleŜność funkcyjna X → Y jest zaleŜnością nie od klucza, jeśli: 1. jest nietrywialna (tzn. zbiór Y nie jest podzbiorem X) 2. nie jest zaleŜnością od klucza ZaleŜności nie od klucza dla relacji Dostawcy: Nazwa_dostawcy → Adres_dostawcy ZaleŜności nie od klucza dla relacji Pracownicy: Nazwa_instytucji → Adres_instytucji Algorytmy sprowadzania relacji do poprawnej postaci Domknięcie tranzytywne Dla zbioru X ⊆ R jego domknięciem tranzytywnym względem zbioru zaleŜności funkcyjnych F nazywamy następujący zbiór atrybutów: X+ = {A∈R: X → A ∈ F+} (tzn. zbiór wszystkich atrybutów, których wartości są w pełni zdeterminowane przez wartości atrybutów ze zbioru X) Aby sprawdzić, czy dana zaleŜność funkcyjna X → Y wynika logicznie ze zbioru zaleŜności funkcyjnych F wystarczy wyznaczyć domknięcie tranzytywne zbioru X, tj. X+. Zachodzi bowiem własność: X → Y ∈ F+ ⇔ X ⊆ X+. Algorytm wyznaczania domknięcia tranzytywnego: Konstruujemy ciąg zbiorów: 1. X0 = X 2. Xi+1 = Xi plus zbiór atrybutów A takich, Ŝe • istnieje pewna zaleŜność funkcyjna X → Z ∈ F • A naleŜy do Z • Y ⊆ Xi dopóki nie zajdzie Xi = Xi+1. 3. Wtedy X+= X i Inaczej mówiąc: Jeśli w F istnieje zaleŜność funkcyjna Y → Z oraz wszystkie atrybuty zbioru Y zostały juŜ wygenerowane, wówczas mamy prawo wygenerować kaŜdy z atrybutów zbioru Z. Przykład: R={A,B,C,D,E,G} F={A,B→ C; D → E,G; C → A; B,E → C; B,C → D; C,G → B,D; A,C,D → B; C,E → A,G} X={B,D} Wówczas X0={B,D} X1={B,D,E,G} X2={B,C,D,E,G} X3={A,B,C,D,E,G}=R Czyli X+=R, co oznacza, Ŝe zbiór {B,D} jest nadkluczem. PoniewaŜ {B}+={B}, {D}+={D,E,G}, więc {B,D} jest kluczem. Niech Q ={A1, ..., An}będzie schematem relacji, a F zbiorem zaleŜności funkcyjnych. Usunięcie anomalii i redundancji relacji o schemacie Q odbywa się przez rozkład Q = R ∪ S na dwa schematy R i S. Niech πZ (F) = { X → Y ∈ F+: X ∪Y ⊆ Z} - rzut F na Z. Mówimy, Ŝe rozkład Q = R ∪ S zachowuje: 1. informacje, gdy dla kaŜdej relacji q spełniającej zaleŜności funkcyjne F zachodzi: q = πR (q) ⊕ πS (q) 2. zaleŜności funkcyjne, gdy F+ = (πR (F) ∪ πS (F)) + (czyli kaŜda zaleŜność funkcyjna X → Y ∈ F daje się wyprowadzić ze zbioru rzutów zaleŜności πR (F) ∪ πS (F)) Własność: Rozkład Q = R ∪ S zachowuje informacje wtedy i tylko wtedy gdy albo (R ∩ S) → (R - S) ∈ F+ albo (R ∩ S) → (S - R) ∈ F+ Przykład: Relacja dostawcy i jej zaleŜności funkcyjne Q={D,A,T,C}, F={D → A; D,T → C} Proponowany podział: R = {D,A}, S = {D,T,C} ZauwaŜmy, Ŝe: R - S = {A}, R ∩ S = {D}, S - R = {T,C}. A stąd: poniewaŜ D → A ∈ F, więc rozkład zachowuje informacje; poniewaŜ F = πR (F) ∪ πS (F), więc rozkład zachowuje funkcyjne zaleŜności.