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. Doprowadzenie relacji do postaci normalnej nazywa się normalizacją (lub dekompozycją) 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ę[1],
- 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:
- Jest zdefiniowany klucz relacji.
- 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 ż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
[edytuj | edytuj kod]Imię | Płeć |
---|---|
Antoni | Męska |
Natalia | Żeńska |
Alina | Żeńska |
Trzecia postać normalna (3NF)
[edytuj | edytuj kod]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[1].
Przykład tabeli „Pracownicy” przed normalizacją
[edytuj | edytuj kod]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
[edytuj | edytuj kod]Imię | Nazwisko | Stanowisko |
---|---|---|
Antoni | Anonim | Stolarz |
Natalia | Niewiadoma | Sekretarka |
Alina | Enigma | Sekretarka |
Tabela „Stawki godzinowe” po normalizacji
[edytuj | edytuj kod]Stanowisko | Stawka |
---|---|
Stolarz | 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 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.
Przypisy
[edytuj | edytuj kod]- ↑ a b Ullman i Wisdom 2011 ↓, s. 112.
Bibliografia
[edytuj | edytuj kod]- Jeffrey D. Ullman, Jennifer Wisdom: Podstawowy kurs systemów baz danych. Helion, 2011. ISBN 83-246-3224-7. (pol.).