Termin "Normalizacja baz danych" po raz pierwszy pojawił się w artykułach autorstwa E. F. Codda i odnosi se do wielu działań mających na celu usunięcie z projektu bazy danych anomalii związanych z redundancją czyli dążenie do tego aby baza danych była znormalizowana - aby nie było w bazie danych pól z identycznymi wartościami w różnych tabelach.
Do normalizacji bazy danych służą trzy postacie normalne. Pierwsza postać normalna jest najsłabszą postacią i wymaga jedynie tego aby pola z danymi były elementarne ( nierozkładalne ).
Weźmy jako przykład tabelę Punktacja, która składa się z następujących kolumn :
- Opistestu
- Uczen
- Datatestu
- Mkasymalnaliczbapunktow
- Zdobytepunkty
- Rodzajtestu
- Nauczyciel
- Asystent
Kluczem głównym tabeli niech będą dwie kolumny : Opis testu i Uczeń Głównym problemem tej tabeli jest to, że podjęto tu próbę umieszczenia wszystkich informacji w jednej tabeli. Pierwsza postać normalna mówi, że zawarte w niej dane powinny zostać rozbite na osobne encje takie jak "uczniowie", "punktacja" i "nauczyciele" przy czym każda z encji reprezentowałaby osobną tabelę.
Wprowadźmy teraz pojęcie zależności funkcyjnej. Niech X,Y będą
podzbiorami zbioru atrybutów. Zależność danych zapisujemy X -> Y i
czytamy : podzbiór atrybutów Y zależy funkcyjnie od podzbioru atrybutów X
jeżeli każda wartość x atrybutów X wyznacza jednoznacznie wartość
atrybutów y ze zbioru Y
Druga postać normalna polega na usunięciu częściowych zależności w tabeli. Problem pojawia się w przypadku kolumny Maksymalnaliczbapunktow. Kolumna ta jest tak naprawdę atrybutem pisanego przez ucznia testu i nie ma nic wspólnego z uczniami. Więc mamy sytuację, że pole "Maksymalnaliczbapunktow" jest zależne funkcyjnie od części klucza, a nie całego klucza.
Zatem tabela jest w drugiej postaci normalnej jeżeli każdy atrybut, który nie jest kluczem zależy funkcyjnie od klucza, a nie podzbioru atrybutów stanowiących klucz.Ostatnią postacią normalną jest trzecia postać normalna, która mówi, że tabela jest w trzeciej postaci normalnej jeżeli jest w drugiej postaci normalnej i nie zawiera nietrywialnych i przechodnich zależności funkcyjnych. Więc musimy w takiej tabeli wyeliminować przechodnie zależności. W tym przykładzie kolumna Asystent jest atrybutem kolumny Nauczyciel. Zatem kolumna Asystent odnosi się do kolumny Nauczyciel, a nie kolumny wchodzącej w skład klucza głównego.
Komentarze
Prześlij komentarz