Używamy cookies, żeby zwiększyć Twoje doświadczenia na stronie
CodeWorlds

Normalizacja w praktyce - kiedy dzielic dane

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.

Jeden fakt - jedno miejsce

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
.

Cena powtórzeń (redundancji)

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.

Klucz złożony i 2NF

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.

Łączenie podzielonych tabel

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;

Rozsądny umiar

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.

Przejdź do CodeWorlds