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. Do doprowadzenia 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)
  • 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 niekluczowa zależy funkcyjnie od całego klucza głównego (a nie np. od części klucza).

Przykład tabeli „Pracownicy” przed normalizacją

Imię Nazwisko Płeć Stanowisko Stawka za godzinę
Antoni Anonim Męska Młotkowy 10 zł
Natalia Niewiadoma Żeńska Sekretarka 20 zł
Eufogenia Enigma Żeńska Sekretarka 20 zł

Klucz potencjalny składa się tu z dwóch pól: "Imię" oraz "Nazwisko". Przy założeniu, że każde imię ma przypisaną jedną płeć, czyli, że płeć zależy tylko od jednego z atrybutów klucza potencjalnego, tabela nie spełnia warunków na drugą postać normalną.

Przykład tabeli „Pracownicy” po normalizacji do 2NF

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

Każdy atrybut niekluczowy zależy od całego klucza potencjalnego.

Nowa tabela „Płeć imienia” po normalizacji[edytuj | edytuj kod]

Imię Płeć
Antoni Męska
Natalia Żeńska
Eufogenia Żeńska

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 głównego 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ł

Klucz potencjalny składa się tu z dwóch pól: "Imię" oraz "Nazwisko". Oba atrybuty niekluczowe: "Stanowisko" oraz "Stawka za godzinę" są zależne od całego klucza potencjalnego- tzn. dany pracownik ma przyporządkowane jedno stanowisko i jedną stawkę godzinową.

Jeśli założymy, że każde stanowisko jest tak samo płatne, to wartości w kolumnie „Stawka za godzinę” są zależne jedynie od pola „Stanowisko”, a tylko pośrednio od klucza potencjalnego. 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.