Normalizacja w bazie danych

 


Normalizacja w bazie danych to proces organizacji danych w sposób, który minimalizuje redundancję (czyli powielanie danych) oraz zapewnia spójność i integralność informacji. Celem normalizacji jest podzielenie danych na mniejsze, bardziej logicznie powiązane tabele oraz zapewnienie, że każda informacja występuje w bazie tylko raz.

Główne zasady normalizacji opierają się na tzw. postaciach normalnych (ang. normal forms). Oto podstawowe etapy normalizacji i postaci normalne:

1. Pierwsza postać normalna (1NF)

Tabela jest w pierwszej postaci normalnej, jeśli:

  • Wszystkie kolumny zawierają tylko atomowe (czyli niepodzielne) wartości, tzn. każda kolumna zawiera pojedynczą wartość, a nie listy wartości.
  • W każdej kolumnie wszystkie wartości są tego samego typu (np. same liczby, same teksty).

Przykład naruszenia 1NF:

ID KlientaImięZakupy
1Jan             Telefon, Laptop
2Anna             Tablet

Z kolumną „Zakupy” jest problem, ponieważ zawiera ona listę zakupów (czyli wiele wartości w jednej komórce). Aby spełnić 1NF, każdą wartość powinniśmy oddzielić:

ID KlientaImię  Zakup
1  Jan    Telefon
1  Jan  Laptop
2  Anna     Tablet

2. Druga postać normalna (2NF)

Tabela jest w drugiej postaci normalnej, jeśli:

  • Spełnia wymagania 1NF.
  • Wszystkie kolumny, które nie są kluczami, zależą całkowicie od całego klucza głównego (czyli nie mogą zależeć od części klucza, jeśli klucz główny jest złożony z więcej niż jednej kolumny).

Przykład naruszenia 2NF: Załóżmy, że mamy tabelę zamówień, gdzie klucz główny składa się z „ID Klienta” i „ID Produktu”, ale dodatkowo jest tam kolumna „Imię Klienta”:

ID KlientaID ProduktuImię KlientaCena Produktu
1101Jan200
1102Jan150

Kolumna „Imię Klienta” zależy tylko od „ID Klienta”, a nie od całego klucza głównego (który składa się z „ID Klienta” i „ID Produktu”), co narusza 2NF. Rozwiązaniem jest przeniesienie danych o klientach do osobnej tabeli.

Poprawna wersja: Tabela Klientów:

ID KlientaImię
1Jan
2Anna

Tabela Zamówień:

ID KlientaID ProduktuCena Produktu
1101200
1102150

3. Trzecia postać normalna (3NF)

Tabela jest w trzeciej postaci normalnej, jeśli:

  • Spełnia wymagania 2NF.
  • Żadne pole, które nie jest kluczem, nie zależy od innych pól niebędących kluczami. Innymi słowy, kolumny muszą zależeć wyłącznie od klucza głównego, a nie od innych kolumn.

Przykład naruszenia 3NF: Tabela z danymi o pracownikach:

ID PracownikaImięAdresMiastoKod Pocztowy
1Adamul. Długa 123Warszawa00-001
2Ewaul. Krótka 45Kraków30-001

Kolumny „Miasto” i „Kod Pocztowy” nie zależą bezpośrednio od klucza głównego „ID Pracownika”, ale od siebie nawzajem (kod pocztowy zależy od miasta). Żeby to naprawić, trzeba rozbić dane na dwie tabele:

Tabela Pracowników:

ID PracownikaImięAdresMiasto
1Adamul. Długa 123Warszawa
2Ewaul. Krótka 45Kraków

Tabela Miast i Kodów Pocztowych:

MiastoKod Pocztowy
Warszawa00-001
Kraków30-001

Zalety normalizacji:

  • Zmniejszenie redundancji danych: informacje nie są powielane w wielu miejscach.
  • Zwiększenie integralności danych: zmiany w danych są łatwiejsze do zarządzania (np. zmiana nazwiska klienta w jednym miejscu aktualizuje je wszędzie).
  • Optymalizacja zapytań: mniejsze, wyspecjalizowane tabele mogą sprawniej obsługiwać zapytania.

Wady normalizacji:

  • Złożoność zapytań: wiele znormalizowanych tabel może wymagać bardziej skomplikowanych zapytań (np. połączeń wielu tabel).
  • Czas operacji: przy skomplikowanych zapytaniach może wystąpić większe obciążenie systemu z powodu licznych operacji JOIN.

Podsumowując, normalizacja to proces przekształcania danych w taki sposób, by były przechowywane w najbardziej efektywny i bezpieczny sposób, z minimalną redundancją.

Komentarze

Popularne posty z tego bloga

O mnie

Optymalizacja zapytań Oracle

Prefect.io: Narzędzie do Automatyzacji Przepływów Pracy