Delta Plaground » Notes 2

Normalizacja tabel mySQL

szczegóły
powiązane

Poprzednio pisałem coś o normalizacji tabel w bazach danych. Dla początkujących webmasterów nie jest to może termin znany, więc postaram się krótko opisać co to jest i do czego to jest.

Otóż normalizacja to, mówiąc chłopskim językiem, przebudowanie tabeli, by odpowiadała pewnym kryteriom. Wyróżniamy trzy stopnie normalizacji, no i oczywiście każdy kolejny jest bliźszy idealnej tabeli. ;-) A konkretnie:

Pierwszy stopień

Tu trzeba zadbać, żeby w ramach jednej kolumny zawarty był "podstawowy" i "nierozkładalny" pakiet danych. Wiem, ze to kiepskie tłumaczenie, więc podam przykład: tabela o kolumnie "osoba", w której umieszczamy imię i nazwisko użytkownika. Pomyślmy, co by było, gdybyśmy chcieli pobrać samo imię lub samo nazwisko? Dlatego powinno się tą kolumnę rozdzielić na dwie kolumny: imię i nazwisko, of course.

drugi stopień

Wszystkie kolumny (dane w nich zawarte) muszą zależeć funkcyjnie od klucza podstawowego tabeli (kluczem podstawowym jest najmniejszy zbiór kolumn potrzebny do jednoznacznego oznaczenia wiersza, np. kolimna ID; o tym może później jeszcze napiszę). Przykład: jesli mamy na blogu tagi lub kategorie, to do tabeli z notkami wpisujemy ID kategorii, miast jej nazwy, oraz tworzymy tabele kategorie o kolumnach idkat oraz nazwakat. Jak widać, nazwa kategorii nie zależy od danej notki - zależy jedynie numer kategorii. Co za tym idzie możemy bezboleśnie zmieniać kategorię ('webmastering' na 'tworzenie stron www') nie robiąc sobie sajgonki z bazy danych.

trzeci stopień

to już tylko dla najstarszych jedi. ;) każda kolumna powinna zależeć funkcyjnie od klucza podstawowego i tylko od klucza podstawowego. Przykładu na szybko nie podam, bo jestem dopiero młodym adiunktem, :) w każdym razie chodzi o to, żeby rozbić jedną tabelę na wiecej w przypadku, gdy kolumny są "za bardzo zależne od siebie".

Wiem, nie umiem tłumaczyć za dobrze, wiedzę też mam jakąś taką płytką, ale myślę, że trochę rozjaśniło to obraz sytuacji.

Archiwum