Wykład nr 2 z Baz Danych część internetowa
Transkrypt
Wykład nr 2 z Baz Danych część internetowa
Wykład nr 2 z Baz Danych część internetowa Michał Bernardelli 28 marca 2008 Baza danych to zbiór danych zapisany na zewnętrznym nośniku informacji, który może zaspokoić potrzeby wielu użytkowników korzystających z niego selektywnie i w dogodnym dla siebie czasie. Przykładowo książka nie jest bazą danych, bo nie można z niej korzystać selektywnie. Zajmować się będziemy relacyjnymi bazami danych, to jest bazami danych opartych na skończonych podzbiorach iloczynu kartezjańskiego (relacjach). Graficznie relacje możemy interpretować przy pomocy tabelek, których wiersze nazywane są często krotkami lub rekordami. Przykład 1 Rozważmy następującą bazę danych złożoną z jednej tabelki: indeks 111111 222222 333333 111111 333333 nazwisko Kowalski Malinowski Wiśniewska Kowalski Wiśniewska Tabela Studenci imię przedmiot Jan Programowanie Rafał Analiza Matematyczna Beata Bazy Danych Jan Bazy Danych Beata Programowanie ocena 5 4 4,5 5 3 Jest ona źle zaprojektowana, gdyż mogą wystąpić: • redundancja (nadmiarowość) – jeżeli chcemy wstawić ocenę z kolejnego przedmiotu, to musimy wpisać za każdym razem imię, nazwisko i numer indeksu. • anomalia przy modyfikacji – jeżeli Pani Wiśniewska zmieni nazwisko, to musimy zmienić je w każdym wierszu, w którym mamy zapisaną jej ocenę. Jest to bardzo kosztowna operacja. • anomalia przy usuwaniu – usunięcie oceny z Analizy Matematycznej Pana Malinowskiego, powoduje, że wymazujemy wszystkie informacje o nim samym, a nie tylko o uzyskanej przez niego ocenie. Podajmy kilka definicji. Zależność funkcyjna A1 , A2 , . . . , An → B1 , B2 , . . . , Bm oznacza, że jeśli atrybuty (kolumny) A1 , A2 , . . . , An są zgodne, to zgodne są również B1 , B2 , . . . , Bm . Przykładowo z numeru PESEL (A1 ) wynika imię (B1 ), nazwisko (B2 ) i data urodzin (B3 ). Nadklucz to taki zbiór atrybutów {A1 , A2 , . . . , An }, że wszystkie pozostałe atrybuty relacji są zależne funkcyjnie od tych atrybutów. Nie może się zatem zdarzyć, że dwie różne krotki relacji były zgodne dla wszystkich atrybutów Ai . Przykładowo nadkluczem w tabeli Studenci jest numer indeksu, nazwisko i przedmiot, albo tylko numer indeksu, imię i przedmiot. Klucz to minimalny (w sensie inkluzji) nadklucz. Przykładowo kluczem w tabeli Studenci nie jest numer indeksu, nazwisko i przedmiot, ale jest numer indeksu i przedmiot. Klucze są często spotykane 1 w życiu codziennym: numer PESEL, INDEKSU, NIP czy numerki w kolejce do lekarza. Czasami składają się z więcej niż jednego atrybutu. Często w takich sytuacjach warto jest dodać do naszej relacji sztuczny klucz. Przykład 2 Rozważmy relację {A, B, C, D} (tabelę o kolumnach A, B, C, D) z następującymi zależnościami funkcyjnymi między nimi: F = {AB → C, C → AB, AB → D}. Kluczem jest zbiór {A, B} lub {C} – nie jest on zatem wyznaczony jednoznacznie. Przejdźmy do przedstawiania normalizacji bazy danych, czyli procesu mający na celu eliminację anomalii wspomnianych w przykładzie 1. Sposoby ustalenia stopnia normalizacji bazy danych nazywane są postaciami normalnymi (ang. Normal Forms). Normalizacja zmienia tylko schemat bazy danych. Twórca normalizacji – Edgar Frank Codd, wymyślił trzy postacie normalne: 1NF, 2NF i 3NF. Obecnie istnieją jeszcze inne postacie, ale 3NF jest powszechnie uznawana za wystarczającą. Większość baz danych w 3NF równocześnie jest postaci BCNF (ang. Boyce-Codd Normal Form). Pierwsza postać normalna 1NF wymaga, aby atrybuty były niepodzielne. Przykładowo atrybut Adres można podzielić (i z reguły chcemy, aby był tak podzielony) na Ulicę, Numer_lokalu, Kod_pocztowy i Miejscowość. To czy dany atrybut uznajemy za niepodzielny zależy od konkretnej bazy danych i jej przeznaczenia. Druga postać normalna 2NF oznacza, że relacja jest w pierwszej postaci normalnej oraz nie ma zależności częściowych, przy czym z zależnością częściową X → A, gdzie A jest nazwą kolumny, mamy do czynienia, gdy (1) A 6∈ X, czyli A jest nietrywialna, (2) X ⊂ klucz, czyli X zawiera się w kluczu, ale nie jest kluczem. Przykład 3 Daną mamy relację R = {Z, M, P } i zbiór zależności funkcyjnych F = {Z → M }. Kluczem jest zbiór atrybutów {Z, P }. Relacja ta nie jest w 2NF, gdyż mamy zależność częściową. Wystarczy sprawdzić bezpośrednio, że warunki (1) i (2) są spełnione dla zależności Z → M . Trzecia postać normalna 3NF oznacza, że relacja jest w pierwszej postaci normalnej oraz nie ma przechodniości zależności atrybutów niekluczowych, czyli dla zależności funkcyjnej X → A nie mogą zachodzić wszystkie poniższe warunki: (1) A 6∈ X, (2) A nie należy do żadnego klucza, (3) X nie jest nadkluczem. Przykład 4 Mamy daną relację R = {Z, M, P } i zbiór zależności funkcyjnych F = {M → P, Z → M }. Kluczem jest zbiór {Z}, a nadkluczami zbiory: {Z}, {Z, P }, {Z, M }, {Z, M, P }. Relacja ta jest w 2NF, ale nie jest w 3NF. Bezpośrednie sprawdzenie pokazuje, że warunki (1)-(3) są spełnione dla zależności M → P . 2 Postać normalna Boyce’a-Codda BCNF oznacza, że relacja jest w pierwszej postaci normalnej oraz nie ma zależności przechodnich, czyli dla zależności funkcyjnej X → A nie mogą zachodzić wszystkie poniższe warunki: (1) A 6∈ X, (2) X nie jest nadkluczem. Innymi słowy lewa strona każdej zależności nietrywialnej musi być nadkluczem. Przykład 5 Mamy daną relację R = {Kino, Miasto, Tytuł} i zbiór zależności funkcyjnych F = {Kino → Miasto; Tytuł, Miasto → Kino}. Kluczem są zbiory {Tytuł, Miasto}, {Tytuł, Kino}. Relacja ta jest w 3NF, ale nie jest w BCNF ze względu na zależność Kino → Miasto. Jako podsumowanie można przytoczyć wiersz: Bez powtórzeń (1NF) Dane zależą od klucza Od całego klucza (2NF) I tylko od klucza (3NF/BCNF) Tak mi dopomóż Codd! 3