Bazy danych 2. Zale˙zno´sci funkcyjne Normalizacja baz danych
Transkrypt
Bazy danych 2. Zale˙zno´sci funkcyjne Normalizacja baz danych
Bazy danych 2. Zależności funkcyjne Normalizacja baz danych P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2012/13 Zależności funkcyjne Definicja: Mówimy, że atrybut B jest zależny funkcyjnie od atrybutów A1, . . . , An, co zapisujemy A1, A2, . . . , An → B, wtedy, gdy dwie krotki zgodne w atrybutach A1, . . . , An musza˛ być zgodne w atrybucie B. • Zależności funkcyjne sa˛ matematycznym modelem wiezów ˛ jednoznaczności w modelu relacyjnym baz danych. • Zależności funkcyjne należa˛ do schematu bazy. Nie można o nich wnioskować jedynie na podstawie instancji (faktycznych wystapie ˛ ń) tabel. c 2010-12 P. F. Góra Copyright 2–2 X→Y X x x Y y y jeżeli sa˛ zgodne tutaj. . . . . . to musza˛ być zgodne tutaj Z z1 z2 Na przykład spodziewamy sie, ˛ że w “osobowej” bazie danych obowiazuje ˛ zależność funkcyjna PESEL → Nazwisko. Jeżeli dwie krotki maja˛ taki sam numer PESEL, musza˛ odnosić sie˛ do osób majacych ˛ to samo Nazwisko. c 2010-12 P. F. Góra Copyright 2–3 Jeżeli zachodzi A1, A2, . . . , An → B1 A1, A2, . . . , An → B2 ... A1, A2, . . . , An → Bm piszemy w skrócie A1, A2, . . . , An → B1, B2, . . . , Bm c 2010-12 P. F. Góra Copyright 2–4 Zależności trywialne • Zależność funkcyjna˛ A1, A2, . . . , An → B nazywam trywialna, ˛ jeśli atrybut B jest równy któremuś atrybutowi A1,2,...,n. • Jeśli przyjmiemy “skrótowy” zapis zależności z wieloczłonowa˛ prawa˛ strona, ˛ zależność jest – Trywialna, jeśli zbiór złożony z atrybutów B jest podzbiorem zbioru złożonego z atrybutów A – Nietrywialna, jeśli co najmniej jeden B nie jest A – Całkowicie nietrywialna, jeśli żadnen B nie jest A. c 2010-12 P. F. Góra Copyright 2–5 Reguły wnioskowania (aksjomaty Armstronga) zwrotność: Jeżeli {B1, B2, . . . , Bm} ⊆ {A1, A2, . . . , An}, to A1, A2, . . . , An → B1, B2, . . . , Bm. rozszerzenie: Jeżeli A1, A2, . . . , An → B1, B2, . . . , Bm, to A1, A2, . . . , An, C1, C2, . . . , Ck → B1, B2, . . . , Bm, C1, C2, . . . , Ck dla dowolnych C1, C2, . . . , Ck . przechodniość: Jeżeli A1, A2, . . . , An → B1, B2, . . . , Bm oraz B1, B2, . . . , Bm → C1, C2, . . . , Ck , to A1, A2, . . . , An → C1, C2, . . . , Ck . c 2010-12 P. F. Góra Copyright 2–6 Dodatkowe reguły wnioskowania Można udowodnić, że poniższe reguły wniokowania wynikaja˛ wprost z aksjomatów Armstronga: • Relacja zwrotna: X → X • Rozszerzanie: jeżeli X → Y , wtedy X, Z → Y • Sumowanie: jeżeli X → Y oraz X → Z, wtedy X → Y, Z • Rozkład: jeżeli X → Y oraz Z ⊆ Y , to X → Z • Przechodniość: jeżeli X → Y oraz Y → Z, to X → Z • Pseudoprzechodniość: jeżeli X → Y oraz Y, Z → W , to X, Z → W . c 2010-12 P. F. Góra Copyright 2–7 Domkniecia ˛ Niech {A1, A2, . . . , An} bedzie ˛ pewnym zbiorem atrybutów, S niech bedzie ˛ zbiorem zależności funkcyjnych. Domknieciem ˛ zbioru {A1, A2, . . . , An} nad S nazywamy taki zbiór atrybutów B, że jeśli jego elementy spełniaja˛ wszystkie zależności funkcyjne z S, to spełniaja˛ także zależność A1, A2, . . . , An → B, a zatem zależność A1, A2, . . . , An → B wynika z S. Domkniecie ˛ oznaczam cl{A1, A2, . . . , An}. Mówiac ˛ niezbyt ściśle, domkniecie ˛ to zbiór wszystkich atrybutów determinowanych, w sensie zależności funkcyjnych, przez atrybuty zbioru wyjściowego. c 2010-12 P. F. Góra Copyright 2–8 Algorytm obliczania domkniecia ˛ 1. Na poczatku ˛ X oznacza zbiór {A1, A2, . . . , An}. 2. Znajdujemy wszystkie zależności funkcyjne postaci B1, B2, . . . , Bm → C, gdzie Bi należa˛ do X, a C nie należy. Dołaczamy ˛ C do X. 3. Powtarzamy krok 2 tak długo, jak długo do X można dołaczyć ˛ jakiś nowy atrybut. Ponieważ X może sie˛ tylko rozszerzać, zaś zbiór atrybutów jest skończony, po skończonej liczbie kroków nastapi ˛ moment, w którym do X nie da sie˛ niczego dołaczyć. ˛ 4. W tym momencie X = cl{A1, A2, . . . , An}. c 2010-12 P. F. Góra Copyright 2–9 Powyżej przedstawiony algorytm jest poprawny i intuicyjnie prosty, ale nie jest efektywny –– może być algorytmem kwadratowym (w czasie) w najgorszym przypadku. Znacznie rozsadniej ˛ jest tak uporzadkować ˛ zależności funkcyjne, aby każda była używana (“odpalana”) dokładnie w tym momencie, w którym wszystkie atrybuty jej lewej strony znajda˛ sie˛ w “kandydacie” X. Dla dużych baz (i tabel) domknieć ˛ nie oblicza sie˛ recznie! ˛ Istnieje specjalny software, który to robi. c 2010-12 P. F. Góra Copyright 2–10 Przykład Rozważmy zbiór atrybutów {A, B, C, D, E, F }. Załóżmy, że w tym zbiorze zachodza˛ zależności A, B → C, B, C → A, D, D → E, C, F → B. Obliczmy cl{A, B}. X = {A, B}. Wszystkie atrybuty poprzednika zależności A, B → C sa˛ w X, wiec ˛ do X dołaczamy ˛ C. X = {A, B, C}. Lewa strona zależności B, C → A, D jest w X, A jest już w X, wiec ˛ do X dołaczamy ˛ D. X = {A, B, C, D}. Na mocy zależności D → E, dołaczamy ˛ do X atrybut E. X = {A, B, C, D, E}. Zleżności C, F → B nie możemy wykorzystać, ponieważ F 6∈ X i nie ma jak dołożyć F do X. Ostatecznie cl{A, B} = {A, B, C, D, E}. c 2010-12 P. F. Góra Copyright 2–11 Bazy zależności funkcyjnych Każdy zbiór zależności funkcyjnych pewnego zbioru atrybutów, z którego można wyprowadzić wszystkie inne zależności funkcyjne zachodzace ˛ pomiedzy ˛ elementami tego zbioru, nazywam baza˛ zbioru zależności funkcyjnych. Jeśli żaden podzbiór bazy nie jest baza˛ (nie umożliwia wyprowadzenia wszystkich relacji), baz˛e te˛ nazywam baza˛ minimalna. ˛ c 2010-12 P. F. Góra Copyright 2–12 Przykład Mam atrybuty A, B, C i zależności A → B, A → C, B → A, B → C, C → A, C → B. Można teraz wyprowadzić zależności nietrywialne A, B → C, A, C → B, B, C → A (oraz zależności trywialne). Baza˛ minimalna˛ jest zbiór {A → B, B → A, B → C, C → B}. Inna˛ baza˛ minimalna˛ jest A → B, B → C, C → A. c 2010-12 P. F. Góra Copyright 2–13 Po co jemy te˛ żabe? ˛ c 2010-12 P. F. Góra Copyright 2–14 Klucze Mówimy, że zbiór atrybutów {A1, A2, . . . , An} tworzy klucz pewnej tabeli, jeśli wszystkie pozostałe atrybuty z tej tabeli sa˛ funkcyjnie zależne od wskazanego zbioru. Dwie różne krotki nie moga˛ mieć tych samych kluczy (jeśli maja˛ takie same klucze, musza˛ mieć równe także pozostałe atrybuty, a zatem nie sa˛ różne). Jeżeli przyjmujemy, że tabele sa˛ zbiorami krotek — w zabiorze każdy element wyste˛ puje co najwyżej raz — widzimy, że klucz jednoznacznie identyfikuje krotk˛e. c 2010-12 P. F. Góra Copyright 2–15 Klucz o tej własności, że żaden jego podziór właściwy nie jest kluczem, nazywamy kluczem minimalnym. Terminologia alternatywna: W niej to, co powyżej nazwaliśmy kluczem minimalnym, nazywa sie˛ po prostu kluczem, natomiast każdy nadzbiór klucza nazywamy nadkluczem. c 2010-12 P. F. Góra Copyright 2–16 Zauważmy, że zbiór cl{A1, A2, . . . , An} zawiera wszystkie atrybuty pewnej tabeli wtedy i tylko wtedy, gdy {A1, A2, . . . , An} jest (nad)kluczem tej tabeli. Sprawdzenie, czy dany zbiór elementów stanowi klucz tabeli, sprowadza sie˛ do sprawdzenia, • czy wszystkie atrybuty tabeli należa˛ do domkniecia ˛ klucza kandydujacego, ˛ • czy jakiś właściwy podzbiór klucza kandydujacego ˛ także nie ma tej właściwości. Obliczanie domknieć ˛ nad zadanym zbiorem zależności funkcyjnych jest formalnym narz˛edziem służacym ˛ do identyfikowania kluczy tabel. c 2010-12 P. F. Góra Copyright 2–17 Pierwsza postać normalna Tabela jest w pierwszej postaci normalnej (1PN), jeżeli 1. Tabela posiada klucz. 2. Wszystkie składowe krotek sa˛ atomowe. Można powiedzieć, że pierwsza postać normalna jest warunkiem tego, żeby w ogóle można było mówić o sytemie relacyjnym. Warunek posiadania klucza jest równoważny temu, że tabela jest zbiorem krotek . c 2010-12 P. F. Góra Copyright 2–18 Atomowość danych Atomowość danych oznacza, że składowych krotek nie można podzielić. Warunek atomowości uniemożliwia to, żeby składowymi krotek były złożone struktury danych, takie jak tablice, listy itp. W zasadzie wymóg atomowości nakazuje dzielić też atrybuty, które można podzielić, na cz˛eści logicznie niepodzielne. Na przykład zamiast atrybutu “Imi˛ e i Nazwisko”, powinniśmy mieć dwa atrybuty: “Imi˛ e”, “Nazwisko”. Można sobie jednak wyobrazić sytuacje, w których taki podział byłby niepotrzebny lub niewskazany∗. O ile zatem pierwsza postać normalna z cała˛ pewnościa˛ wyklucza złożone struktury danych, o tyle interpretacja pojecia ˛ “można podzielić” może niekiedy zależeć od natury samych danych, które reprezentować ma konstruowana przez nas baza danych. ∗ Rozważmy na przykład nazwy osobowe z Chin czy Korei. c 2010-12 P. F. Góra Copyright 2–19 Anomalie baz danych • Redundancja — ta sama informacja jest niepotrzebnie przechowywana w kilku krotkach. • Anomalia modyfikacji — informacja zostanie zmodyfikowana w pewnych krotkach, a w innych nie. Która informacja jest wówczas prawdziwa? • Anomalia usuwania — usuwanie cz˛eści informacji powoduje utrate˛ innej informacji, której nie chcielibyśmy stracić. • Anomalia dołaczania ˛ — wprowadzenie pewnej informacji jest możliwe tylko wtedy, gdy jednocześnie wprowadzamy jakaś ˛ inna˛ informacje, ˛ która może być obecnie niedostepna. ˛ Celem normalizacji baz danych jest unikanie powyższych anomalii. c 2010-12 P. F. Góra Copyright 2–20 Bezstratne złaczenie ˛ Normalizacje˛ baz danych (powyżej 1PN) przeprowadza sie˛ dzielac ˛ tabele “wertykalnie” na tabele potomne. Tabele te jednak musza˛ pozwalać na pełne odtworzenie wyjściowej informacji po dokonaniu złaczenia. ˛ Niedopuszczalne jest także, aby złaczenia ˛ kreowały informacje˛ fałszywa. ˛ Dekompozycje˛ tabeli R na tabele R1, R2, . . . , Rn nazywamy dekompozycja˛ bezstratnego złaczenia ˛ (ze wzgledu ˛ na pewien zbiór zależności funkcyjnych), jeśli naturalne złaczenie ˛ R1, R2, . . . , Rn jest równe tabeli R. c 2010-12 P. F. Góra Copyright 2–21 Dekompozycja tabeli R na dwie tabele R1, R2 jest dekompozycja˛ bezstratnego złaczenia, ˛ jeśli spełniony jest jeden z dwu warunków (symbol → oznacza zależność funkcyjna): ˛ (R1 ∩ R2) → (R1\R2) lub (R1 ∩ R2) → (R2\R1) Innymi słowy, wspólna cz˛eść atrybutów R1, R2 musi zawierać klucz kandydujacy ˛ R1 lub R2. c 2010-12 P. F. Góra Copyright 2–22 Przykład negatywny Przypuśćmy, że w pewnej tabeli przechowujemy informacje˛ na temat studentów zapisujacych ˛ sie˛ na kurs baz danych. Przykładowa instancja tabeli mogłaby wygladać ˛ tak: T0 NrStudenta 1010057 1010132 1015678 1020159 1026789 c 2010-12 P. F. Góra Copyright NrKursu K202 K203 K202 K204 K205 DataZapisu 01.10.2012 01.10.2012 01.10.2012 04.10.2012 11.10.2012 Sala A1 A2 A2 A1 C2 Prowadzacy ˛ Góra Łachwa Łachwa Góra Oramus 2–23 Rozbijamy te˛ tabele na dwie, dzielac ˛ je “wzdłuż” kolumny DataZapisu. T1 NrStudenta 1010057 1010132 1015678 1020159 1026789 NrKursu K202 K203 K202 K204 K205 c 2010-12 P. F. Góra Copyright DataZapisu 01.10.2012 01.10.2012 01.10.2012 04.10.2012 11.10.2012 T2 DataZapisu 01.10.2012 01.10.2012 01.10.2012 04.10.2012 11.10.2012 Sala A1 A2 A2 A1 C2 Prowadzacy ˛ Góra Łachwa Łachwa Góra Oramus 2–24 Dokonujemy złaczenia ˛ tabel T1 i T2. Okazuje sie, ˛ że dzielenie pierwotnej tabeli “wzdłuż” kolumny DataZapisu to był kiepski pomysł. Otrzymujemy T1 1 T2 6= T0 NrStudenta NrKursu 1010057 K202 1010132 K203 1015678 K202 DataZapisu 01.10.2012 01.10.2012 01.10.2012 itd Sala A1 A1 A1 Prowadzacy ˛ Góra Góra Góra Zaznaczone krotki nie wystepuj ˛ a˛ w pierwotnej tabeli. Na skutek podziału tabeli nie spełniajacego ˛ warunku bezstratnego złaczenia, ˛ utraciliśmy informacje˛ o tym, kto kogo uczy. c 2010-12 P. F. Góra Copyright 2–25 Druga postać normalna Tabela jest w drugiej postaci normalnej (2PN), jeżeli 1. Tabela jest 1PN. 2. Wszystkie atrybuty niekluczowe zależa˛ funkcyjnie od pełnego klucza. Atrybuty niekluczowe maja˛ zależeć od pełnego klucza, a nie od jego podzbioru właściwego (który nie musi być kluczem!). Wszystkie tabele 1PN, które maja˛ klucze jednokolumnowe, sa˛ automatycznie 2PN. c 2010-12 P. F. Góra Copyright 2–26 Przykład Załóżmy, że zależności funkcyjne pomiedzy ˛ pewnymi atrybutami maja˛ postać A, B → C, A → D. Poniższa tabela (podkreślenia oznaczaja˛ klucz) A a1 a1 a1 a2 B b1 b2 b3 b1 C c1 c2 c3 c4 D d1 d1 d1 d2 nie jest 2PN, gdyż atrybut D zależy tylko od atrybutu A, a wiec ˛ od cz˛eści klucza, nie od całego klucza. c 2010-12 P. F. Góra Copyright 2–27 Schemat tabeli ze strony 27 nie chroni przed wymienionymi wyżej anomaliami: • Nie można wprowadzić informacji o tym, że a3 → d3, nie wprowadzajac ˛ jednocześnie informacji, że (a3, b•) → c• (anomalia dołaczania). ˛ • Usuniecie ˛ informacji o tym, że a2 → d2 wymaga jednoczesnego usuniecia ˛ informacji, iż (a2, b1) → c4 (anomalia usuwania). • Wartość d1 przechowywana jest niepotrzebnie w trzech różnych krotkach (redundancja). c 2010-12 P. F. Góra Copyright 2–28 Po rozbiciu powyższej tabeli na dwie tabele bed ˛ ace ˛ w 2PN, anomalie dołacza˛ nia i usuwania nie wystepuj ˛ a, ˛ a wartość d1 przechowywana jest tylko w jednej krotce. A a1 a1 a1 a2 B b1 b2 b3 b1 C c1 c2 c3 c4 A a1 a2 D d1 d2 Prosz˛e pomyśleć, że w poczatkowym ˛ przykładzie d1 mogłoby wystepować ˛ nie w 3, ale w 300 lub w 3000 krotek. c 2010-12 P. F. Góra Copyright 2–29 Trzecia postać normalna Tabela jest w trzeciej postaci normalnej (3PN), jeżeli 1. Tabela jest 2PN. 2. Dla wszystkich atrybutów tabeli zachodzi: Jeżeli A1, A2, . . . , An → Am, to albo {A1, A2, . . . , An} jest nadkluczem, albo Am jest elementem innego klucza. Trzecia postać normalna jest postacia˛ najcz˛eściej wystepuj ˛ ac ˛ a˛ w zastosowaniach praktycznych. Druga cz˛eść warunku definicyjnego (“albo Am jest elementem innego klucza”) ma znaczenie tylko wówczas, gdy w tabeli wystepuj ˛ a˛ zależności cykliczne (lub cz˛eściowe zależności cykliczne). c 2010-12 P. F. Góra Copyright 2–30 Zależności przechodnie Jeżeli w tabeli nie wystepuj ˛ a˛ zależności cykliczne, powiada sie, ˛ że 3PN zakazuje wsytepowania ˛ zależności przechodnich. Istotnie, przyjmijmy, że spełnione sa˛ zależności funkcyjne A → B, B → C, A → C; ostatnia z tych zależności wynika z dwu pierwszych na zasadzie przechodniości. Nastepuj ˛ aca ˛ tabela A B C jest 2PN, ale nie jest 3PN, gdyż zachodzi zależność B → C, zaś atrybut B nie jest nadkluczem. Sprowadzenie do 3PN oznacza rozbicie powyższej tabeli na dwie tabele: A c 2010-12 P. F. Góra Copyright B B C 2–31 Przykład Niech zależności funkcyjne bed ˛ a˛ takie, jak na poprzednim ekranie. Rozważmy nastepuj ˛ ac ˛ a˛ instancje˛ pierwszej tabeli: A a1 a2 a3 a4 c 2010-12 P. F. Góra Copyright B b1 b1 b1 b2 C c1 c1 c1 c2 2–32 Wystepuj ˛ a˛ anomalie dołaczania ˛ (nie można wprowadzić a5 → b3 bez jednoczesnego wprowadzenia b3 → c3), usuwania (nie można usunać ˛ b2 → c2 bez jednoczesnego usuniecia ˛ a4 → b2) oraz redundancja (wielkość c1 przechowywana jest w trzech krotkach). Po sprowadzeniu do 3PN A a1 a2 a3 a4 B b1 b1 b1 b2 B b1 b2 C c1 c2 anomalie te znikaja. ˛ c 2010-12 P. F. Góra Copyright 2–33 Cykliczne zależności funkcyjne Przykładem cyklicznych zależności funkcyjnych jest A → B, B → C, C → A. W takiej sytuacji atrybuty A, B, C sa˛ sobie równoważne — określenie wartości jednego z nich, jednoznacznie ustala wartość dwu pozostałych. Każda z trzech tabel A B C A B C A B C jest 3PN, gdyż co prawda wystepuj ˛ a˛ zależności przechodnie, ale atrybuty niekluczowe sa˛ elementami innych kluczy (de facto sa˛ innymi kluczami). c 2010-12 P. F. Góra Copyright 2–34 Uwaga! Przy cyklicznych zależnościach funkcyjnych jak poprzednio, tabele rozbite w taki sposób: A B B C C A technicznie rzecz biorac ˛ także sa˛ 3PN, a nie zawieraja˛ zależności przechodnich. Jednak taki projekt nie zapobiega redundancji, przeciwnie, wymusza ja, ˛ gdyż każda wartość każdego z atrybutów A, B, C jest przechowywana dwa razy. Projekty z poprzedniej strony sa˛ z tego wzgledu ˛ zdecydowanie lepsze. c 2010-12 P. F. Góra Copyright 2–35 Procedura postepowania ˛ 1. Dany jest zbiór atrybutów, które chcemy reprezentować, i zbiór zależności funkcyjnych pomiedzy ˛ atrybutami. 2. Znajdujemy baz˛e minimalna˛ zbioru zależności funkcyjnych. 3. Majac ˛ baz˛e minimalna, ˛ sumujemy zależności funkcyjne o takich samych lewych stronach i dla każdej wysumowanej zależności tworzymy tabele˛ z odpowiednia˛ lewa˛ strona˛ zależności jako kluczem. Taki sposób postepowania ˛ prowadzi do projektu bazy, w której tabele sa˛ 3PN. c 2010-12 P. F. Góra Copyright 2–36 Procedura szukania bazy minimalnej 1. Każdy atrybut musi wystepować ˛ z lewej lub z prawej strony jednej zależności funkcyjnej w zbiorze. 2. Jeśli jakaś zależność funkcyjna jest właczona ˛ do zbioru, nie wszystkie zależności funkcyjne potrzebne do jej wyprowadzenia moga˛ wystepować ˛ w tym zbiorze. 3. Jeśli jakaś zależność funkcyjna zostaje wyłaczona ˛ ze zbioru, zależności funkcyjne potrzebne do jej wyprowadzenia musza˛ zostać doń dołaczone. ˛ Jeżeli w zbiorze zależności funkcyjnych wystepuj ˛ a˛ (cz˛eściowe) cykle, może istnieć wiecej ˛ niż jedna baza minimalna. c 2010-12 P. F. Góra Copyright 2–37