Przejdź do głównej zawartości

Normalizacja baz danych...

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