Plan wykładu Spis treści 1 Projektowanie baz danych 1 2 Zależności funkcyjne 1 3 Normalizacja 1NF, 2NF, 3NF, BCNF 4 4 Normalizacja 4NF, 5NF 6 5 Podsumowanie 9 6 Źródła 10 1 Projektowanie baz danych Projektowanie baz danych Jaki zestaw danych ma być przechowywany? Jakie zależności występują między danymi? Jak wiernie odzwierciedlić świat i zachować występujące w nim zależności? Jak uniknąć anomalii? Jak zachować integralność danych? Jakich dziedzin atrybutów użyć? Jakiej logicznej struktury użyć? Jak implementacja fizyczna zmienia model logiczny? 2 Zależności funkcyjne Zależności funkcyjne FD Zależności funkcyjne (FD - functional dependency) można rozpatrywać ze względu na: wartość danej relacji (zmiennej relacyjnej) zbiór wszystkich możliwych wartości relacji Zależności funkcyjne dla wartości relacji Zależności funkcyjne dla wartości relacji Niech R będzie relacją, X i Y dowolnymi podzbiorami zbioru atrybutów R. Mówimy, ze Y jest funkcyjnie zależny od X: X Y wtedy i tylko wtedy, gdy każda wartość X z R jest stowarzyszona z dokładnie jedną wartością Y z relacji R. 1
Zależności funkcyjne dla wartości relacji {#id d } {siedziba} {#id d, #id cz} {liczba} #id d siedziba #id cz liczba d1 Poznań cz1 100 d1 Poznań cz2 100 d2 Wrocław cz1 200 d2 Wrocław cz2 200 d3 Wrocław cz2 300 d4 Lublin cz2 400 d4 Lublin cz4 400 d4 Lublin cz5 400 {#id d, #id cz} {siedziba} {#id d, #id cz} {siedziba, liczba} {#id d, #id cz} {#id d} {#id d, #id cz} {#id d, #id cz, siedziba, liczba} {#id d} {liczba} {liczba} {#id d} element determinujący element determinowany Zależności funkcyjne dla zbioru wartości relacji Zależności funkcyjne dla zbioru wartości relacji Niech R będzie zmienną relacyjną, X i Y dowolnymi podzbiorami zbioru atrybutów R. Mówimy, ze Y jest funkcyjnie zależny od X: X Y wtedy i tylko wtedy, gdy dla każdej dopuszczalnej legalnie wartości R każda wartość X z R jest stowarzyszona z dokładnie jedną wartością Y z relacji R. Zależności funkcyjne dla zbioru wartości relacji #id d siedziba #id cz liczba d1 Poznań cz1 100 d1 Poznań cz2 100 d2 Wrocław cz1 200 d2 Wrocław cz2 200 d3 Wrocław cz2 300 d4 Lublin cz2 400 d4 Lublin cz4 400 d4 Lublin cz5 400 {#id d} {siedziba} {#id d, #id cz} {liczba} {#id d, #id cz} {siedziba} {#id d, #id cz} {siedziba, liczba} {#id d, #id cz} {#id d} {#id d, #id cz} {#id d, #id cz, siedziba, liczba} Zależności funkcyjne a klucz główny Jeżeli X jest kluczem kandydującym relacji R (w szczególności kluczem głównym) to wszystkie pozostałe atrybuty relacji zależą funkcyjnie od X. Na przykład: {#id dzialu} {#id dzialu, nazwa, siedziba} Jeżeli w relacji R występuje związek funkcyjny A B i A nie jest kluczem kandydującym, to w relacji występuje redundancja. Zależności trywialne i nietrywialne Zależności trywialne Zależność jest trywialna wtedy i tylko wtedy, gdy elementy determinowane stanowią podzbiór elementów determinujących (nie może być niespełniona). Na przykład: {#id d, #id cz} {#id d} Zależności nietrywialne to pozostałe zależności. 2
Domknięcie zbioru zależności Zależność {#id d, #id cz} {siedziba, liczba} implikuje {#id d, #id cz} {liczba} {#id d, #id cz} {siedziba} Domknięcie S + zbioru zależności to zbiór wszystkich implikowanych danych zbiorem S zależności funkcyjnych. Reguły wnioskowania Armstronga Niech A, B i C będą dowolnymi podzbiorami zbioru atrybutów relacji R, (AB oznacza sumę A i B) wówczas zachodzą związki: zwrotność: jeżeli B A to A B dołączenie: jeżeli A B to AC BC przechodniość: jeżeli A B i B C to A C Reguły powyższe są zupełne i znaczące, można z nich wyprowadzić dalsze reguły wnioskowania: samookreślenie: A A rozkład: jeżeli A BC to A B i A C suma: jeżeli A B i A C to A BC złożenie: jeżeli A B i C D to AC BD Nieredukowalne zbiory zależności Zbiór zależności funkcyjnych S jest nieredukowalny wtedy i tylko wtedy, gdy: element determinowany każdej zależności funkcyjnej w S ma tylko jeden atrybut element determinujący każdej zależności funkcyjnej w S jest nieredukowalny nie można usunąć żadnej zależności funkcyjnej z S bez zmiany jej domknięcia S + Redukowalność zbiorów zależności #A B #A {B, C} #A C #A D #A D #A E #A E #A #A #A B #A C #A D #A E {#A, C} B #A C #A D #A E Związki funkcyjne a więzy integralności Cechy związków funkcyjnych przekładają się na cechy więzów integralności: pewne więzy integralności są trywialne więzy integralności mogą implikować inne więzy integralności zestaw wszystkich więzów integralności wynikających z danego zbioru można traktować jako domknięcie tego zbioru można znaleźć nieredukowalny zbiór więzów integralności 3
3 Normalizacja 1NF, 2NF, 3NF, BCNF Normalizacja Normalizacja pozwala uniknąć redundancji i anomalii aktualizacji w bazie danych. Proces normalizacji polega na sprowadzeniu relacji do określonej postaci normalnej, tak by spełniła zbiór narzuconych warunków. Rozróżniamy wiele postaci normalnych: zdefiniowane przez Codda (1NF, 2NF, 3NF), Heatha (Boyce a/codda - BCNF), Fagina (4NF, 5NF) Proces normalizacji powinien polegać na rozkładzie bezstratnym. Nie zawsze doprowadzenie bazy do 5NF ma sens praktyczny. Normalizacja - cechy Pożądane cechy normalizacji: zachowanie atrybutów zachowanie informacji zachowanie zależności Rozkład bezstratny i stratny Relacja wejściowa: #id dzialu status siedziba 10 1 Częstochowa 20 2 Poznań 30 2 Wrocław Rozkład bezstratny: #id dzialu 10 1 20 2 30 2 status #id dzialu siedziba 10 Częstochowa 20 Poznań 30 Wrocław Rozkład stratny: #id dzialu 10 1 20 2 30 2 status status siedziba 1 Częstochowa 2 Poznań 2 Wrocław Warunek rozkładu bezstratnego Rozkład jest procesem rzutowania relacji wejściowej. Wejściowa relacja jest równa złączeniu naturalnemu swoich rzutów. Twierdzenie Heatha Niech R będzie relacją, zaś A, B i C zbiorami atrybutów tej relacji. Jeśli R spełnia zależność funcyjną A B, wówczas relacja R jest równa złączeniu jej rzutów (A, B) i (A, C). 4
1NF Pierwsza postać normalna 1NF Relacja występuje w pierwszej postaci normalnej 1NF wtedy i tylko wtedy, gdy wszystkie jej dziedziny zawierają wyłącznie wartości skalarne (atrybuty mają atomowe wartości). rok studenci 1 Kowalski Nowak 2 Piotrowski Kowalczyk 3 Marciniak rok student 1 Kowalski 1 Nowak 2 Piotrowski 2 Kowalczyk 3 Marciniak 1NF Pierwsza postać normalna ogranicza występowanie relacji zagnieżdżonych. Dekompozycja relacji zawierającej relacje zagnieżdżone polega często na utworzeniu dwóch odrębnych relacji. relacja wewnętrzna będzie posiadała klucz złożony z klucza relacji zewnętrznej i wewnętrznej. Na przykład relację: wlasciciele(#pesel, imie, nazwisko, mieszkania(#id, adres)) można zdekomponować do: wlasciciele(#pesel, imie, nazwisko) posiada(#pesel, #id, adres) 2NF Druga postać normalna 2NF Relacja ma drugą postać normalną wtedy i tylko wtedy, gdy jest już w 1NF oraz każdy niekluczowy atrybut jest nieredukowalnie zależny od klucza głównego (przy założeniu, że istnieje jeden klucz kandydujący będący kluczem głównym). 2NF #id d nazwa siedziba #id cz liczba d1 10 Poznań cz1 100 d1 10 Poznań cz2 100 d2 10 Wrocław cz1 200 d2 10 Wrocław cz2 200 d3 20 Wrocław cz2 300 d4 30 Lublin cz2 400 d4 30 Lublin cz4 400 d4 30 Lublin cz5 400 {#id d} {status} {#id d} {siedziba} {#id d, #id cz} {liczba} {#id d, #id cz} {siedziba} {#id d, #id cz} {status} 2NF #id d status siedziba d1 10 Poznań d2 10 Wrocław d3 20 Wrocław d4 30 Lublin {#id d} {status} {#id d} {siedziba} #id d #id cz liczba d1 cz1 100 d1 cz2 100 d2 cz1 200 d2 cz2 200 d3 cz2 300 d4 cz2 400 d4 cz4 400 d4 cz5 400 {#id d, #id cz} {liczba} 5
3NF Trzecia postać normalna 3NF Relacja jest w trzeciej postaci normalnej wtedy i tylko wtedy, gdy jest już w 2NF oraz każdy niekluczowy atrybut jest w sposób nieprzechodni zależny od klucza głównego (przy założeniu, że istnieje jeden klucz kandydujący będący kluczem głównym). 3NF #id prac jednostka wydzial p1 Instutut Matematyki WIMI p2 Instutut Informatyki WIMI Teoretycznej i Stosowanej p3 Instytut Maszyn Cieplnych WIMI p4 Katedra Teorii Konstrukcji WB p5 Katedra Teorii Konstrukcji WB {#id prac} {jednostka} {#id prac} {wydzial} {jednostka} {wydzial} 3NF #id prac p1 p2 p3 p4 p5 jednostka Instutut Matematyki Instutut Informatyki Teoretycznej i Stosowanej Instytut Maszyn Cieplnych Katedra Teorii Konstrukcji Katedra Teorii Konstrukcji #jednostka Instutut Matematyki Instutut Informatyki Teoretycznej i Stosowanej Instytut Maszyn Cieplnych Katedra Teorii Konstrukcji wydzial WIMI WIMI WIMI WB {#id prac} {jednostka} {#jednostka} {wydzial} BCNF Postać normalna Boyce a/codda - BCNF Relacja ma postać BCNF wtedy i tylko wtedy, gdy elementem determinującym każdej nietrywialnej, lewostronnie nieredukowalnej zależności funcyjnej jest klucz kandydujący. #id d nip siedziba d1 4764376 Poznań d2 43784343 Wrocław d3 6598323 Wrocław d4 7236237 Lublin {#id d} {nip} {#id d} {siedziba} {nip} {siedziba} 4 Normalizacja 4NF, 5NF Przykład przedmiot wykladowca podrecznik Bazy danych prof. Nowakowski dr Sobociński Wprowadzenie do systemów baz danych Systemy baz danych prof. Wiórkowski dr Malinowski Algorytmika Sztuka programowania I,II,III Podstawy budowy i działania komputerów 6
przedmiot wykladowca podrecznik Bazy danych prof. Nowakowski Wprowadzenie do systemów baz danych Bazy danych prof. Nowakowski Systemy baz danych Bazy danych dr Sobociński Wprowadzenie do systemów baz danych Bazy danych dr Sobociński Systemy baz danych prof. Wiórkowski Algorytmika prof. Wiórkowski Sztuka programowania I,II,III prof. Wiórkowski Podstawy budowy i działania komputerów dr Malinowskii Algorytmika dr Malinowskii Sztuka programowania I,II,III dr Malinowskii Podstawy budowy i działania komputerów Zależność wielowartościowa Zależność wielowartościowa MVD Niech R będzie relacją, zaś A, B, C będą dowolnymi podzbiorami zbioru atrybutów R. Mówimy, że B jest wielowartościowo zależne (MVD - multivalued dependencies) od A A B wtedy i tylko wtedy, gdy zbiór wartości B odpowiadający danej parze (A, C) w R zależy od wartości A i jest niezależny od wartości C. przedmiot wykladowca przedmiot podrecznik lub w skrócie przedmiot wykladowca podrecznik Twierdzenie Fagina Twierdzenie Fagina Niech R będzie relacją, zaś A, B, C będą dowolnymi podzbiorami zbioru atrybutów R. R jest równa złączeniu swoich rzutów na (A, B) i (A, C) wtedy i tylko wtedy, gdy spełnia zależność wielowartościową A B C 4NF Czwarta postać normalna 4NF Jeżeli istnieją podzbiory A i B atrybutów relacji R takie, że jest spełniona nietrywialna zależność wielowartościowa A B, a wszystkie atrybuty relacji R są funkcyjnie zależne od A, wówczas relacja R jest w 4NF. Relacja jest w 4NF jeżeli jest w postaci BCNF i wszystkie zależności wielowartościowe są zależnościami funkcyjnymi wychodzącymi z kluczy kandydujących. Zawsze istnieje możliwość doprowadzenia relacji do 4NF. Przykład rozkładu do 4NF przedmiot wykladowca podrecznik Bazy danych prof. Nowakowski Wprowadzenie do systemów baz danych Bazy danych prof. Nowakowski Systemy baz danych Bazy danych dr Sobociński Wprowadzenie do systemów baz danych Bazy danych dr Sobociński Systemy baz danych prof. Wiórkowski Algorytmika prof. Wiórkowski Sztuka programowania I,II,III prof. Wiórkowski Podstawy budowy i działania komputerów dr Malinowski Algorytmika dr Malinowski Sztuka programowania I,II,III dr Malinowski Podstawy budowy i działania komputerów przedmiot Bazy danych Bazy danych wykladowca prof. Nowakowski dr Sobociński prof. Wiórkowski dr Malinowski przedmiot Bazy danych Bazy danych podrecznik Wprowadzenie do systemów baz danych Systemy baz danych Algorytmika Sztuka programowania I,II,III Podstawy budowy i działania komputerów 7
Brak rozkładu bezstratnego na dwa rzuty Rozkład bezstratny na trzy rzuty Zależność złączenia Zależność złączenia JD 8
Niech R będzie relacją, zaś A, B,..., Z będą dowolnymi podzbiorami zbioru atrybutów R. Mówimy, że R spełnia zależność łączenia (JD - join dependency): (A, B,..., Z) wtedy i tylko wtedy, gdy R jest równe złączeniu swoich rzutów na A, B,..., Z. Opisana przykładem relacja wykładowcy, przedmioty, laboratoria (oznaczmy odpowiednio: w, p, l)spełnia zależność złączenia (wp, pl, wl). 5NF Piąta postać normalna 5NF Mówimy, że relacja R jest w piątej postaci normalnej 5NF (zwanej inaczej postacią normalną rzutu-złączenia) wtedy i tylko wtedy, gdy każda zależność złączenia w R jest implikowana kluczami kandydującymi R. Relacja jest w 5NF jeżeli jest w postaci 4NF i nie posiada już anomalii, które można by usunąć przy pomocy rzutowania. 5 Podsumowanie Normalizacja raz jeszcze i mniej formalnie Normalizacja Dana jest pewna relacja R oraz lista więzów FD, MVD, JD odnoszących się do tej relacji. Normalizacja polega na systematycznej redukcji R do zestawów mniejszych relacji równoważnych R, jednakże pozbawionych redundancji i anomalii aktualizacji. Etapy normalizacji: 1. Przedstaw relację w postaci 1NF, eliminując relacje zagnieżdżone i wartości nieskalarne. 2. Wykonaj takie rzuty relacji będącej w 1NF, aby wszystkie niekluczowe atrybuty zależały od klucza głównego. Otrzymasz 2NF. 3. Usuń zależności przechodnie - otrzymasz 3NF. 4. Usuń wszelkie zależności funkcyjne, w których elementem determinującym nie jest klucz kandydujący - otrzymasz BCNF. (Kroki 2 do 4 można zastąpić jednym rzutowaniem usuwajacym wszelkie zależności funkcyjne nie determinowane przez klucz kandydujący.) 5. Wykonaj takie rzuty na relacji w BCNF, aby wyeliminować wszystkie zależności wielowartościowe, które nie są zależnościami funkcyjnymi - otrzymasz 4NF. 6. Wyeliminuj wszystkie zależności złączenia nie implikowane kluczami kandydującymi. W każdym kroku rzutowanie powinno byc bezstratne i zachowujace zależności. 9
Cele normalizacji Celem normalizacji jest: eliminacja redundancji eliminacja anomalii związanych z aktualizacją stworzenie wiernego odzwierciedlenia świata rzeczywistego z jego licznymi zależnościami uproszczenie wymuszania pewnych więzów integralności 6 Źródła Źródła W wykładzie wykorzystano materiały: C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000 http://wazniak.mimuw.edu.pl/index.php?title=bazy_danych 10