Postać normalna (bazy danych)
Postać normalna – postać relacji w bazie danych, w której nie występuje redundancja (nadmiarowość), czyli powtarzanie się tych samych informacji. Doprowadzenia relacji do postaci normalnej nazywa się normalizacją (lub dekompozycją) bazy danych.
Rozróżniane postacie normalne
Pierwsza postać normalna (1NF)
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ą
Płeć | Imię |
---|---|
Męska | Jan, Piotr, Zenon |
Żeńska | Anna, Maria, Zofia |
Pierwsza postać normalna
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:
- Jest zdefiniowany klucz relacji.
- Wszystkie atrybuty niekluczowe są w zależności funkcyjnej od klucza.
Druga postać normalna (2NF)
Relacja jest w drugiej postaci normalnej wtedy i tylko wtedy, gdy jest w I postaci normalnej i żadna kolumna niekluczowa nie jest częściowo funkcyjnie zależna od jakiegokolwiek klucza potencjalnego.
Przykład tabeli „Pracownicy” przed normalizacją
Imię | Nazwisko | Płeć | Stanowisko | Stawka za godzinę |
---|---|---|---|---|
Antoni | Anonim | Męska | Stolarz | 10 zł |
Natalia | Niewiadoma | Żeńska | Sekretarka | 20 zł |
Alina | 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 | Stolarz | 10 zł |
Natalia | Niewiadoma | Sekretarka | 20 zł |
Alina | Enigma | Sekretarka | 20 zł |
Każdy atrybut niekluczowy zależy od całego klucza potencjalnego.
Nowa tabela „Płeć imienia” po normalizacji
Imię | Płeć |
---|---|
Antoni | Męska |
Natalia | Żeńska |
Alina | Żeńska |
Trzecia postać normalna (3NF)
Relacja jest w trzeciej postaci normalnej wtedy i tylko wtedy, gdy jest w II postaci normalnej i żaden atrybut niekluczowy nie jest zależny funkcyjnie od innych atrybutów niekluczowych.
Przykład tabeli „Pracownicy” przed normalizacją
Imię | Nazwisko | Stanowisko | Stawka za godzinę |
---|---|---|---|
Antoni | Anonim | Stolarz | 10 zł |
Natalia | Niewiadoma | Sekretarka | 20 zł |
Alina | 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ści „20 zł”, co powoduje redundancję (nadmiarowość danych). Może to też prowadzić do anomalii i niespójności danych, gdy np. pani Alinie 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
Imię | Nazwisko | Stanowisko |
---|---|---|
Antoni | Anonim | Stolarz |
Natalia | Niewiadoma | Sekretarka |
Alina | Enigma | Sekretarka |
Tabela „Stawki godzinowe” po normalizacji
Stanowisko | Stawka |
---|---|
Stolarz | 10 zł |
Sekretarka | 20 zł |
Postać normalna Boyce’a-Codda (BCNF lub 3.5NF)
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)
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 4NF zachodzi wówczas gdy:
- spełnione są warunki BCNF
- 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.