Znasz już trzy postaci normalne. Teraz spójrzmy, jak stosować je rozsądnie w prawdziwej Bibliotece - bo normalizacja to nie zaklęcie do mechanicznego powtarzania, lecz sztuka utrzymywania porządku.
Złota zasada normalizacji brzmi: każdy fakt zapisz dokładnie raz. Nazwa kategorii "Filozofia" nie powinna leżeć przepisana w stu zwojach książek - wystarczy raz, w tabeli
kategorie, a książki niech wskazują na nią przez kategoria_id.Gdyby nazwa kategorii powtarzała się w każdej książce, zmiana "Filozofia" na "Filozofia starożytna" wymagałaby poprawienia setek wierszy naraz. Pomylisz jeden - i Biblioteka traci spójność: część zwojów mówi jedno, część drugie. To anomalia aktualizacji, której normalizacja zapobiega.
Przypomnij sobie 2NF: dotyczy tabel z kluczem złożonym. W
wypozyczenia naturalnym kluczem mogłaby być para ksiazka_id + czytelnik_id. Gdybyśmy trzymali tam tytuł książki, zależałby on tylko od ksiazka_id - czyli od części klucza. To łamie 2NF. Tytuł należy do ksiazki, a w wypozyczenia zostaje sam odsyłacz.Po podziale dane odzyskujemy poleceniem JOIN - to ono spina rozdzielone regały z powrotem w jeden wynik:
1SELECT k.tytul, kat.nazwa
2FROM ksiazki k
3JOIN kategorie kat ON k.kategoria_id = kat.id;Normalizujemy, by uniknąć powtórzeń i anomalii - ale nie dzielimy w nieskończoność. Trzy pierwsze postaci normalne wystarczają w zdecydowanej większości projektów. Tak właśnie zbudowana jest nasza baza
biblioteka: czysto, spójnie i bez zbędnego dublowania.