Druga postać normalna (2NF) — definicja i zastosowanie w bazach danych

Druga postać normalna (2NF) — definicja i praktyczne zastosowania w bazach danych. Dowiedz się, jak eliminuje redundancję i poprawia integralność danych.

Autor: Leandro Alegsa

Druga postać normalna (2NF) to własność modelu relacyjnego, a konkretnie tabel, która jest kryterium normalizacji bazy danych.

Pierwszym kryterium bycia drugą postacią normalną jest to, że tabela jest pierwszą postacią normalną.

W tabeli, która jest w drugiej postaci normalnej, dane w każdej kolumnie w każdym wierszu są zależne od całego klucza podstawowego każdego wiersza. Klucz podstawowy to jedna lub więcej kolumn w wierszu, która jest używana do identyfikacji i indeksowania tego wiersza tabeli. Kolumny, które nie są powiązane z każdą kolumną klucza głównego są usuwane. Tylko kolumny, które są powiązane z wszystkimi kolumnami klucza głównego są zachowywane.

Co to znaczy w praktyce? Druga postać normalna eliminuje tzw. częściowe zależności (partial dependencies) — sytuacje, w których niektóre atrybuty tabeli zależą tylko od fragmentu (podzbioru) składowych klucza podstawowego (gdy klucz jest złożony), a nie od całego klucza. Taka zależność prowadzi do redundancji danych i anomalii przy operacjach INSERT, UPDATE i DELETE.

Kiedy 2NF jest automatycznie spełnione

Jeżeli klucz podstawowy tabeli składa się z jednej kolumny (klucz prosty), to po spełnieniu 1NF tabelę uważa się za spełniającą 2NF, ponieważ nie mogą wystąpić zależności częściowe względem fragmentu klucza (nie istnieje „część” klucza).

Przykład i ilustracja problemu

Załóżmy tabelę zamówień o strukturze:

OrderIDProductIDProductNameQuantityUnitPriceSupplierName
1001P01Klawiatura250FirmaA
1001P02Mysz130FirmaB
1002P01Klawiatura150FirmaA

Tutaj klucz podstawowy to kombinacja (OrderID, ProductID). Atrybuty ProductName i SupplierName zależą tylko od ProductID, nie od całego klucza (OrderID, ProductID). To jest zależność częściowa — naruszenie 2NF.

Jak znormalizować do 2NF

Typowy sposób usunięcia częściowych zależności to rozdzielenie tabeli na dwie (lub więcej) tak, żeby atrybuty zależne od pojedynczej składowej klucza trafiły do osobnej tabeli, której kluczem będzie ta składowa. W powyższym przykładzie poprawna normalizacja daje:

  • OrderItems(OrderID, ProductID, Quantity, UnitPrice) — klucz: (OrderID, ProductID)
  • Products(ProductID, ProductName, SupplierName) — klucz: ProductID

Po takim podziale ProductName i SupplierName są przechowywane tylko raz w tabeli Products, a tabela OrderItems zawiera tylko dane specyficzne dla pozycji zamówienia.

Korzyści z 2NF

  • Zmniejszenie redundancji danych (mniej powtarzających się wartości).
  • Ograniczenie anomalii przy aktualizacjach, wstawieniach i usuwaniu.
  • Łatwiejsze utrzymanie spójności danych i mniejsze ryzyko niespójności.

Ograniczenia i uwagi praktyczne

  • 2NF dotyczy głównie przypadków, gdy klucz podstawowy jest złożony. Jeśli klucz jest prosty, sprawdzenie 2NF zwykle nie wymaga specjalnej akcji poza 1NF.
  • Spełnienie 2NF nie gwarantuje braku wszystkich problemów — dalej może występować zależność przechodnia (transitive dependency), którą usuwa trzecia postać normalna (3NF).
  • W praktyce projektowania bazy danych czasem stosuje się świadome denormalizacje (np. w celu optymalizacji odczytów). Należy je stosować dopiero po rozważeniu kosztów i korzyści.

Krótka lista kontrolna — czy tabela jest w 2NF?

  • Czy tabela jest w 1NF? Jeśli nie — najpierw doprowadź do 1NF.
  • Czy klucz podstawowy jest złożony (wiele kolumn)?
  • Czy istnieją kolumny zależne tylko od części klucza (a nie od całego klucza)? Jeśli tak — rozdziel tabelę tak, by usunąć te zależności.
  • Po podziale sprawdź, czy nowe tabele nadal spełniają 1NF i czy nie wprowadziłeś zależności przechodnich.

Podsumowanie: Druga postać normalna to ważny etap normalizacji, który eliminuje częściowe zależności atrybutów od złożonego klucza głównego. Pomaga to zmniejszyć redundancję i zapobiegać anomaliom, ale nie zastępuje dalszych kroków normalizacyjnych (np. 3NF), gdy występują zależności przechodnie.



Przeszukaj encyklopedię
AlegsaOnline.com - 2020 / 2025 - License CC3