Postać normalna (bazy danych)

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

Postać normalna – postać relacji w bazie danych, w której nie występuje redundancja (nadmiarowość), czyli powtarzanie się tych samych informacji. Doprowadzeniu relacji do postaci normalnej służy normalizacja bazy danych.

Rozróżniane postacie normalne[edytuj | edytuj kod]

Pierwsza postać normalna (1NF)[edytuj | edytuj kod]

Relacja jest w pierwszej postaci normalnej, jeśli:

  • opisuje jeden obiekt,
  • wartości atrybutów są elementarne (atomowe, niepodzielne) – każda kolumna jest wartością skalarną (atomową), a nie macierzą lub listą czy też czymkolwiek, co posiada własną strukturę,
  • nie zawiera kolekcji (powtarzających się grup informacji),
  • posiada klucz główny,
  • kolejność wierszy może być dowolna (znaczenie danych nie zależy od kolejności wierszy).

Tabela przed normalizacją[edytuj | edytuj kod]

Płeć Imię
Męska Jan, Piotr, Zenon
Żeńska Anna, Maria, Zofia

Pierwsza postać normalna[edytuj | edytuj kod]

Płeć Imię
Męska Jan
Męska Piotr
Męska Zenon
Żeńska Anna
Żeńska Maria
Żeńska Zofia

Właściwości, które muszą zaistnieć w 1 formie:

  1. Jest zdefiniowany klucz relacji.
  2. Wszystkie atrybuty niekluczowe są w zależności funkcyjnej od klucza.

Druga postać normalna (2NF)[edytuj | edytuj kod]

Relacja jest w drugiej postaci normalnej wtedy i tylko wtedy, gdy jest w I postaci normalnej i każda kolumna zależy funkcyjnie od całego klucza potencjalnego (a nie np. od części klucza).

Trzecia postać normalna (3NF)[edytuj | edytuj kod]

Mamy z nią do czynienia wtedy i tylko wtedy, gdy tabela jest w 2NF oraz gdy wszystkie pola niebędące polami klucza potencjalnego są od niego zależne bezpośrednio.

Przykład tabeli „Pracownicy” przed normalizacją[edytuj | edytuj kod]

Imię Nazwisko Stanowisko Stawka za godzinę
Antoni Anonim Młotkowy 10 zł
Natalia Niewiadoma Sekretarka 20 zł
Eufogenia Enigma Sekretarka 20 zł

Wartości w kolumnie „Stawka za godzinę” są zależne jedynie od pola „Stanowisko”, a tylko pośrednio od klucza głównego. Prowadzi to do powtarzania się wartość „20 zł”, co powoduje redundancję (nadmiarowość danych). Może to też prowadzić do anomalii i niespójności danych, gdy np. pani Eufogenii zmienimy stawkę na 25 zł, a zapomnimy zmienić stawki drugiej sekretarce, pani Natalii.

Sprowadzenie do III postaci normalnej będzie polegać na przeniesieniu stawek do osobnej tabeli, a w tabeli pracowników pozostawienie jedynie nazwy stanowiska.

Tabela „Pracownicy” po normalizacji[edytuj | edytuj kod]

Imię Nazwisko Stanowisko
Antoni Anonim Młotkowy
Natalia Niewiadoma Sekretarka
Eufogenia Enigma Sekretarka

Tabela „Stawki godzinowe” po normalizacji[edytuj | edytuj kod]

Stanowisko Stawka
Młotkowy 10 zł
Sekretarka 20 zł

Postać normalna Boyce’a-Codda (BCNF lub 3.5NF)[edytuj | edytuj kod]

W tej postaci zależności funkcyjne muszą mieć następującą postać: jeżeli X → A i atrybut A nie jest zawarty w X, to X jest kluczem lub zawiera klucz.

Czwarta postać normalna (4NF)[edytuj | edytuj kod]

Relacja jest w czwartej postaci normalnej, jeżeli zbiór atrybutów X określa wartościowo Y, to zachodzi jeden z następujących warunków (trywialne zależności wielowartościowe)

  • Y jest puste lub zawiera się w X,
  • suma zbiorów X i Y jest pełnym zbiorem atrybutów,
  • X zawiera klucz.

Ponadto 4PN zachodzi wówczas gdy:

  • spełnione są warunki PNB-C
  • istnieją nietrywialne zależności gdzie Y wynika z X, X i Y są rozdzielne oraz X jest kluczem.

Czwarta i piąta postać normalna są w zasadzie używane wyłącznie przy okazji rozważań teoretycznych.