12. Normalizacja tabel

Normalizację stosuje się, aby sprawdzić, czy zaprojektowane tabele mają prawidłową strukturę. Proces normalizacji rozpoczynamy, gdy zostanie utworzony wstępny projekt tabel. Pozwala ona określić. czy informacje przewidziane w projekcie bazy zostały przydzielone do właściwych tabel. Natomiast nie da odpowiedzi na pytanie, czy projekt bazy danych jest prawidłowy.

Korzyści płynące z normalizacji table są następujące:

  • zlikwidowanie problemu powtarzania danych,
  • optymalizacja objętości bazy danych,
  • optymalizacja efektywności obsługi bazy danych,
  • minimalizacja zagrożenia błędami przy wprowadzaniu danych.

Stosowane są cztery reguły normalizacji, ale w większości projektów baz danych wystarczy sprawdzić trzy pierwsze.

Dla każdej z nich stosowane są określenia: pierwsza postać normalna (I PN), druga postać normalna (II PN) i trzecia postać normalna (III PN).

Pierwsza postać normalna: tabela jest w pierwszej postaci normalnej (I PN), gdy pojedyncze pole tabeli zawiera informację elementarną.

Oznacza to, że w komórce tabeli nie może wystąpić lista wartości, na przykład w polu książki_zamowione można umieścić dwóch tytułów, a należy to rozbić na dwa wpisy w tabeli.

Druga postać normalna: tabela jest w drugiej postaci normalnej (II PN), jeżeli jest w pierwszej postaci normalnej oraz każde z pól niechodzących w skład klucza podstawowego zależy od całego klucza, a nie od jego części.
Każda tabela powinna przechowywać dane dotyczące tylko konkretnej klasy obiektów.

Ta reguła służy do sprawdzenia, czy w tabeli i bazie danych nie doszło do redundacji, czyli niepotrzebnego powtarzania danych. Ponieważ II PN odnosi się do klucza podstawowego, należy najpierw określić ten klucz dla tabeli. Jeżeli klucz podstawowy składa się z jednego pola, tabela jest w II PN, ponieważ wszystkie pola, poza polem klucza podstawowego, muszą odnosić się do pola klucza podstawowego.

Trzecia postać normalna: Tabela jest w trzeciej postaci normalnej (III PN), jeżeli w pierwszej i w drugiej postaci normalnej oraz każde z pól niewchodzących w skład klucza podstawowego niesie informację bezpośrednio o kluczu i nie odnosi się do żadnego innego pola.