Przyjrzeliśmy się kilku aspektom normalizacji tabeli bazy danych. Najpierw omówiliśmy podstawowe zasady normalizacji baz danych. Ostatni raz zbadaliśmy podstawowe wymagania ustanowione przez pierwszą normalną formę (1NF). Teraz kontynuujmy naszą podróż i zasłońmy zasady drugiej normalnej formy (2NF).
Ogólne wymagania 2NF
- Usuń podzbiory danych, które dotyczą wielu wierszy tabeli i umieść je w osobnych tabelach.
- Twórz relacje między tymi nowymi tabelami a ich poprzednikami za pomocą obcych kluczy.
Reguły te można podsumować w prostej instrukcji: 2NF podejmuje próbę zredukowania ilości nadmiarowych danych w tabeli poprzez wyodrębnienie jej, umieszczenie w nowej tabeli (tabelach) i utworzenie relacji między tymi tabelami.
Spójrzmy na przykład. Wyobraź sobie sklep internetowy, który utrzymuje informacje o klientach w bazie danych. Mogą mieć jedną tabelę o nazwie Klienci z następującymi elementami:
- CustNum
- Imię
- Nazwisko
- Adres
- Miasto
- Stan
- zamek błyskawiczny
Krótkie spojrzenie na tę tabelę pokazuje niewielką ilość zbędnych danych. Przechowujemy wpisy "Sea Cliff, NY 11579" i "Miami, FL 33157" dwa razy. To może nie wydawać się zbyt dużym dodatkiem do pamięci w naszym prostym przykładzie, ale wyobraźmy sobie zmarnowaną przestrzeń, jeśli mamy tysiące rzędów w naszym stole. Dodatkowo, jeśli kod pocztowy do Sea Cliff miał ulec zmianie, musielibyśmy wprowadzić tę zmianę w wielu miejscach w bazie danych.
W strukturze bazy danych zgodnej z 2NF ta nadmiarowa informacja jest pobierana i przechowywana w osobnej tabeli. Nasza nowa tabela (nazwijmy ją ZIP) może mieć następujące pola:
- zamek błyskawiczny
- Miasto
- Stan
Jeśli chcemy być super-wydajni, możemy nawet wypełnić tę tabelę z wyprzedzeniem - poczta udostępnia katalog wszystkich ważnych kodów pocztowych i ich relacji miasto / państwo. Z pewnością spotkałeś się z sytuacją, w której ten typ bazy danych został wykorzystany. Ktoś, kto odebrał zamówienie, najpierw zapytał Cię o kod pocztowy, a następnie znał miasto i stan, z którego dzwoniłeś. Ten rodzaj układu zmniejsza błąd operatora i zwiększa wydajność.
Po usunięciu powielonych danych z tabeli Klienci spełniliśmy pierwszą zasadę drugiej normalnej formy. Nadal musimy używać klucza obcego, aby powiązać dwie tabele. Wykorzystamy kod pocztowy (klucz podstawowy z tabeli ZIP), aby utworzyć tę relację. Oto nasza nowa tabela Klienci:
- CustNum
- Imię
- Nazwisko
- Adres
- zamek błyskawiczny
Obecnie zminimalizowaliśmy ilość zbędnych informacji przechowywanych w bazie danych, a nasza struktura ma drugą normalną formę.