Bazy danych 1
Transkrypt
Bazy danych 1
Bazy danych 1 Wykład 6 Metodologia projektowania baz danych (projektowanie logiczne - Normalizacja) Projektowanie logiczne – przegląd krok po kroku 1. 2. 3. 4. 5. 6. Usuń własności niekompatybilne z modelem relacyjnym Wyznacz relacje dla logicznego modelu danych Wykonaj normalizację relacji Sprawdź, czy relacje umoŜliwiają realizacje transakcji. Wyznacz więzy integralności. Omów logiczny model danych z uŜytkownikiem. Projektowanie logiczne (krok 2 - przypomnienie) 2. Wyznacz relacje dla logicznego modelu danych Relacje będziemy opisywać za pomocą języka definiowania bazy danych DDL (DataBase Definition Language) Definicja (uproszczona) relacji w DDL zawiera: nazwę relacji (w liczbie mnogiej), ujętą w nawiasy listę prostych atrybutów relacji, klucz główny, wszystkie klucze alternatywne i obce, nazwę relacji zawierającą wskazany klucz obcy jako klucz główny listę atrybutów pochodnych wraz z wyraŜeniami definiującymi sposób wyliczenia ich wartości. Projektowanie logiczne (krok 2 - przypomnienie) 1. Dla kaŜdej encji tworzymy schemat relacji (reprezentacją relacji jest tabela). Najczęściej nazwa relacji jest taka sama jak nazwa encji, tylko w liczbie mnogiej ze względu na to, ze relacja zawiera wiele wystąpień obiektu. 2. Atrybuty encji stają się atrybutami w schemacie relacji. Atrybuty odpowiadające kluczom głównym stają się kluczami głównymi relacji. Atrybuty opcjonalne stają się kolumnami o dopuszczalnych wartościach NULL, atrybuty obligatoryjne stają się kolumnami NOT NULL. 3. Sposób tworzenia kluczy obcych zaleŜy od liczności (krotności) oraz uczestnictwa encji w związku. Projektowanie logiczne (krok 2 - przypomnienie) 1. W przypadku związków „jeden do jeden” najczęściej tworzymy jedną relację zawierająca atrybuty obu encji 2. W przypadku związków „jeden do wiele” najczęściej do schematu do schematu po stronie wiele wstawiamy jako dodatkowy atrybut klucz główny z relacji po stronie jeden. 3. W przypadku związków „wiele do wiele” związek ten reprezentujemy dodatkową relacją , który zawiera dwa klucze obce – związek reprezentujemy dodatkową relacją, który zawiera dwa klucze obce – klucze główne z relacji po obu stronach związku (oraz atrybuty związku). Normalizacja (krok 3) Aby uniknąć w bazie redundancji (powtórzeń) i związanych z nią anomalii róŜnego typu, przeprowadza się normalizacje relacji wchodzących w skład bazy. 6 ZaleŜność funkcyjna Niech R będzie schematem relacji i X,Y⊆R Definicja Zbiór Y jest w zaleŜności funkcyjnej względem zbioru X (X→Y) wtw, gdy dla kaŜdej relacji o schemacie R wartości atrybutów ze zbioru X jednoznacznie wyznaczają wartości atrybutów ze zbioru Y. 7 ZaleŜność funkcyjna - przykład Niech schemat relacji R określa rozkład zajęć w szkole. Ma on następujące atrybuty: N (nauczyciel),G (godzina),S (sala),K (klasa),P (przedmiot). KaŜda z krotek relacji r oznacza, Ŝe: „Nauczyciel N wykładający przedmiot P prowadzi zajęcia o godzinie G w sali S z klasą K” Dla tego schematu określamy następujące zaleŜności funkcyjne: dany nauczyciel o danej godzinie prowadzi zajęcia tylko z jedną klasą - NG→K o danej godzinie w danej sali znajduje się tylko jeden nauczyciel - GS→N 8 ZaleŜność funkcyjna Sformułowanie zaleŜności funkcyjnych oznacza ustalenie pewnych związków między atrybutami odzwierciedlających związki między odpowiednimi obiektami w świecie rzeczywistym. Wybór zaleŜności funkcyjnych nie pozostaje bez wpływu na organizację danych. Np.. ustalenie zaleŜności N→P oznacza, Ŝe Ŝaden nauczyciel nie będzie mógł wykładać kilku przedmiotów. 9 Klucz relacji Definicja Zbiór atrybutów X tworzy klucz, gdy: wszystkie pozostałe atrybuty są funkcyjnie zaleŜne od atrybutów X; jest to minimalny taki zbiór, tzn. nie istnieje podzbiór właściwy zbioru X wyznaczający funkcyjnie pozostałe atrybuty relacji. 10 Klucz relacji Niech F będzie zbiorem zaleŜności funkcyjnych dla schematu relacji R. Definicja ZaleŜność funkcyjna X→Y wynika logicznie ze zbioru zaleŜności F (F |= X→Y), jeśli kaŜda relacja o schemacie R spełniająca wszystkie zaleŜności funkcyjne z F spełnia równieŜ zaleŜność X→Y. 11 Domknięcie zbioru zaleŜności Definicja Domknięciem F+ zbioru F zaleŜności funkcyjnych dla schematu relacji R nazywamy zbiór wszystkich zaleŜności funkcyjnych wynikających logicznie ze zbioru F. 12 ZaleŜności trywialne Definicja ZaleŜność funkcyjna X→Y jest trywialna, gdy Y⊆X, nietrywialna, gdy Y∩X≠∅ i ¬Y⊆X, 13 Rozkład schematu relacji ZaleŜność od klucza jest jedyną „zdrową” zaleŜnością funkcyjną i najlepiej by było, Ŝeby kaŜda relacja reprezentowała tylko jedną taką zaleŜność funkcyjną. ZaleŜność nie od klucza wprowadza wewnętrzną zaleŜność między atrybutami, moŜliwość przewidywania wartości jednych atrybutów przez inne, co oznacza redundancję. Usunięcie z relacji anomalii i redundancji odbywa się poprzez podział (rozkład) relacji na kilka nowych. 14 Rozkład schematu relacji Definicja Rozkładem schematu relacji R nazywamy rodzinę {Ri}i∈{1,...,k} podzbiorów R taką, Ŝe R=R1∪...∪Rk. Krotki relacji o schemacie Ri otrzymujemy poprzez rzutowanie relacji o schemacie R na zbiór atrybutów Ri: ri = ΠRi(r) Rozkład schematu nie moŜe być byle jaki, powinien on być poprawny, tzn. zachowywać informację i zaleŜności funkcyjne wyjściowego schematu. Rozkład odwracalny (bezstratny) Definicja Rozkład R=Q∪S jest odwracalny względem F wtw gdy kaŜda relacja o schemacie R i spełniająca zaleŜności z F jest złączeniem naturalnym swoich rzutów na Q i S 16 Rozkład zachowujący zaleŜności funkcyjne Definicja Rozkład R=Q∪S zachowuje zbiór zaleŜności F, jeśli wszystkie zaleŜności naleŜące do F wynikają logicznie z sumy wszystkich zaleŜności naleŜących do rzutów zbioru F na Q i S. 17 Postacie normalne Pojęcie postaci normalnej wprowadził Codd. Zaproponował on trzy postacie normalne: pierwszą (1NF), drugą (2NF) i trzecią (3NF). Kolejnymi postaciami normalnymi są postać normalna Boyce’a-Codda (BCNF), czwarta postać normalne (4NF) i złączeniowa postać normalna (5NF). Najczęściej najbardziej poŜądaną jest postać normalna Boyce’a-Codda. 18 Postać Boyce’a-Codda Definicja Schemat relacji jest w BCNF wtw, gdy dla kaŜdej zaleŜności X→A∈F+ zachodzi jeden z przypadków: A∈X (czyli jest to zaleŜność trywialna) X jest nadkluczem Jeśli schemat jest w BCNF, nie ma redundancji, tzn. nie moŜna przewidzieć jednych wartości w oparciu o inne. 19 Postać Boyce’a-Codda Przykład. Niech R = {M (miasto), U (ulica), K (kod)} i F = {MU→K, K→M}. Schemat nie jest w BCNF, gdyŜ są dwa klucze: {M, U} i {K, U} i nie są spełnione warunki definicji dla zaleŜności K→M (K nie jest nadkluczem). Twierdzenie KaŜdy schemat albo jest w BCNF albo daje się rozłoŜyć na sumę schematów relacji w BCNF z zachowaniem informacji (ale niekoniecznie z zachowaniem zaleŜności). 20 Trzecia postać normalna Definicja Schemat relacji jest w 3NF wtw, gdy dla kaŜdej zaleŜności X→A∈F+ zachodzi jeden z przypadków: A∈X (zaleŜność trywialna), X jest nadkluczem, A jest atrybutem kluczowym (naleŜy do co najmniej jednego klucza). 21 Trzecia postać normalna Uwaga: Schemat relacji w BCNF jest w 3NF, ale nie odwrotnie Przykład. Niech R = {M (miasto), U (ulica), K (kod)} i F = {MU→K, K→M}. Są dwa klucze: {M,U} i {K,U}. Schemat jest w 3NF ({M, U} jest nadkluczem a M jest atrybutem kluczowym). Twierdzenie KaŜdy schemat relacji daje się rozłoŜyć na sumę schematów relacji w 3NF z zachowaniem informacji i zaleŜności funkcyjnych. 22 Druga postać normalna Definicja ZaleŜność funkcyjna X→A jest zaleŜnością częściową, gdy X jest właściwym podzbiorem pewnego klucza. Definicja ZaleŜność funkcyjna X→A jest zaleŜnością przechodnią, gdy X nie jest właściwym podzbiorem Ŝadnego klucza. Definicja Schemat relacji jest w 2NF wtw, gdy nie zawiera zaleŜności częściowych. 23 Druga postać normalna Przykład. Schemat relacji w BCNF i 3NF jest w 2NF. Przykład. Niech R={A, B, C, D} i F={AB→C, AC→D}. Jedynym kluczem jest {A, B}. Schemat nie jest w 3NF (D nie jest atrybutem kluczowym). W schemacie nie ma zaleŜności częściowych. Schemat jest w 2NF. W schemacie istnieje zaleŜność przechodnia: AC→D. Przykład. Niech R={A, B, C, D} i F={AB→C, B→D, BC→A}. Jedynymi kluczami są {A, B} i {B, C}. D jest atrybutem niekluczowym i {B} jest podzbiorem właściwym klucza, więc zaleŜność B→D jest zaleŜnością częściową. Schemat nie jest w 2NF. Twierdzenie Schemat relacji jest w 3NF wtw, gdy jest w 2NF i nie zawiera zaleŜności przechodnich. 24 Pierwsza postać normalna Definicja Schemat relacji jest w 1NF wtw, gdy jego atrybuty przyjmują wartości atomowe (wartości atrybutów nie są zbiorami). 25 Postacie normalne - przykład Hodowca zaproponował następujący schemat bazy danych: Hodowle (Nr_strusiarni, Liczba_strusi, Imię_strusia, Płeć_strusia, Wiek_strusia,Opiekun_strusiarni, Nazwisko_opiekuna, Imię_opiekuna) 1. 2. 3. 4. 5. Nr_strusiarni → Liczba_strusi Nr_strusiarni → Opiekun_strusiarni Imię_strusia, Nr_strusiarni → Płeć_Strusia Imię_strusia, Nr_strusiarni → Wiek_Strusia Opiekun_strusiarni → Nazwisko_opiekuna, Imię_opiekuna Normalizacja (krok 3) Projekt logiczny (po wykonaniu normalizacji) nie musi być projektem ostatecznym. Jeśli wymagają tego kryteria dotyczące wydajności, projekt fizyczny moŜe się róŜnić od logicznego – jedną z moŜliwości jest denormalizacja niektórych relacji. Normalizacja słuŜy udoskonaleniu modelu danych tak, aby spełniał szereg warunków pozwalających uniknąć duplikowania danych, dzięki normalizacji model lepiej odwzorowuje informacje modelowanego przedsiębiorstwa, staje się spójny, zapewnia minimum redundancji i maksimum stabilności. Realizacja transakcji (krok 4) Sprawdź, czy relacje umoŜliwiają realizacje transakcji Celem tego kroku jest sprawdzenie, czy logiczny model danych umoŜliwia wykonanie transakcji opisanych w specyfikacji wymagań uŜytkownika. W kroku tym próbujemy wykonać manualnie poszczególne operacje zawarte w transakcjach, korzystając z relacji, powiązań między kluczami głównymi i obcymi relacji. Więzy integralności (krok 5) Wyznacz więzy integralności Więzy integralności to dodatkowe warunki, których spełnienie zapobiega niespójności bazy danych. Na tym etapie koncentrujemy się na wysokopoziomowym opisie specyfikującym, jakie więzy integralności powinny być spełnione, niezaleŜnie od tego, w jaki sposób zapewniona będzie ich realizacja. Po ustaleniu więzów integralności logiczny model danych moŜna uznać za kompletna reprezentacje rzeczywistości. Więzy integralności RozwaŜamy pięć typów więzów integralności: • wymagana obecność danych – niektóre atrybuty nie powinny zawierać wartości pustych; więzy tego typu powinny być ustalone na etapie dokumentowania informacji o atrybutach w słowniku danych. • więzy dziedzin atrybutów – z kaŜdym atrybutem związana jest dziedzina, czyli zbiór dopuszczalnych wartości; wiązy tego typu naleŜy ustalić wraz z wyborem dziedzin atrybutów. • integralność encji – klucz główny encji nie moŜe przyjmować wartości pustych; ograniczenie to naleŜy uwzględnić przy wyborze klucza głównego dla danego zbioru encji. Więzy integralności • więzy ogólne – są nazywane regułami biznesowymi (lub zasadami działania); reguły te wynikają z zasad obowiązujących w opisywanym przez nie fragmencie „świata rzeczywistego”, np. Promotor moŜe prowadzić 10 prac dyplomowych studentów • integralność referencyjna – klucz obcy wiąŜe krotkę relacji podrzędnej z krotką relacji nadrzędnej o pasującej wartości klucza kandydującego; integralność referencyjna oznacza, Ŝe jeśli wartość klucza obcego jest określona, to wartość ta musi odpowiadać istniejącej krotce w relacji nadrzędnej. Więzy integralności Integralność referencyjna Przykład: Personel Nr_Pracownika <pk> Zarządza Nieruchomość Nr_Nieruchomosci <pk> Nr_Pracownika <fk> Atrybut Nr_Pracownika w relacji Nieruchomość wiąŜe nieruchomość do wynajęcia z krotką w relacji Personel zawierającą dane pracownika zarządzającego daną nieruchomością. Jeśli wartość Nr_Pracownika (w relacji Nieruchomość) jest określona, to powinna ona zawierać „poprawny” numer pracownika, występujący jako wartość Nr_Pracownika w relacji Personel. Więzy integralności Integralność referencyjna Pierwszym problemem jest kwestia, czy dozwolone są wartości puste klucza obcego. • W przypadku opcjonalnego uczestnictwa relacji podrzędnej wartości puste są dozwolone, np. dopuszczamy moŜliwość przechowywania informacji o nieruchomości do wynajęcia bez podania pracownika zarządzającego tą nieruchomością • W przypadku obowiązkowego uczestnictwa relacji podrzędnej wartości puste nie są dozwolone, np. nie dopuszczamy moŜliwości przechowywania informacji o nieruchomości do wynajęcia bez podania pracownika zarządzającego tą nieruchomością Więzy integralności Integralność referencyjna Kolejnym problemem jest sposób zapewnienia integralności referencyjnej. Operacje na bazie danych mogą naruszyć więzy referencyjne. Przypadek 1. Wstawienie krotki do relacji podrzędnej – dla zachowania integralności referencyjnej konieczne jest sprawdzenie , czy klucz obcy w relacji podrzędnej ma wartość pusta lub jest równy wartości występującej w jednej z krotek relacji nadrzędnej Przypadek 2. Usunięcie krotki z relacji podrzędnej – nie narusza integralności referencyjnej Przypadek 3. Modyfikacja klucza obcego krotki w relacji podrzędnej – sytuacja podobna do przypadku 1 Więzy integralności Integralność referencyjna Przypadek 4. Wstawienie krotki do relacji nadrzędnej – nie narusza integralności referencyjnej Przypadek 5. Usunięcie krotki z relacji nadrzędnej – moŜe naruszyć integralność referencyjną w przypadku, gdy w relacji podrzędnej występuje krotka wskazującą na usuniętą krotkę nadrzędną (patrz dalej) Przypadek 6. Modyfikacja klucza głównego krotki nadrzędnej - moŜe naruszyć integralność referencyjną w przypadku, gdy w relacji podrzędnej występuje krotka wskazującą na wartość klucza głównego sprzed modyfikacji (patrz dalej) Więzy integralności Integralność referencyjna W przypadku 5 i 6 moŜna wybrać kilka moŜliwości: NO ACTION lub RESTRICT - uniemoŜliwia usunięcie (modyfikację) krotki z relacji nadrzędnej jeśli występują jakiekolwiek krotki od niej zaleŜne. CASCADE – usunięcie (modyfikacja) krotki nadrzędnej pociąga za sobą usunięcie (modyfikację) wszystkich związanych z nią krotek podrzędnych; jeśli krotka podrzędna pełni rolę nadrzędną w innym związku, analogiczna operacja usuwania (modyfikacji) powinna być wykonana dla krotek podrzędnych tego związku. SET NULL – usunięcie krotki nadrzędnej pociąga za soną automatyczne nadanie wartości pustych odpowiednim kluczom obcym wszystkich krotek SET DEFAULT – usunięcie krotki nadrzędnej pociąga za soną automatyczne nadanie wartości domyślnych odpowiednim kluczom obcym wszystkich krotek podrzędnych. Nieruchomość( nieruchomośćNr NumerNieruchomości NOT NULL ulica Ulica NOT NULL miasto Miasto NOT NULL typ TypNieruchomości NOT NULL DEFAULT ‘F’ pokoje NieruchomośćPokoje NOT NULL DEFAULT 4 czynsz NieruchomośćCzynsz NOT NULL DEFAULT 600 właścicielNr NumerWłaściciela NOT NULL pracownikNr NumerPracownika NOT NULL biuroNr NumerBiura NOT NULL kaucja NieruchomośćCzynsz NOT NULL PRIMARY KEY (nieruchomośćNr) ALTERNATE KEY (ulica, miasto) FOREIGN KEY (pracownikNr) REFERENCES Personel(pracownikNr) ON UPDATE CASCADE ON DELETE SET NULL FOREIGN KEY (właścicielNr) REFERENCES WłaścicielPrywatny(właścicielNr) and WłaścicielInstytucjonalny(właścicielNr) ON UPDATE CASCADE ON DELETE NO ACTION DERIVED kaucja (czynsz*0,1) Dziękuję za uwagę!!!