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.

Podobne dokumenty