Postać normalna (bazy danych)
| Zasugerowano, aby artykuł Normalizacja bazy danych zintegrować z tym artykułem lub sekcją. (dyskusja) |
| Niektóre informacje zawarte w artykule wymagają weryfikacji. Zajrzyj na stronę dyskusji, by dowiedzieć się, jakie informacje budzą wątpliwości. |
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.
Spis treści |
[edytuj] Rozróżniane postacie normalne
[edytuj] 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),
- posiada klucz główny,
- kolejność wierszy może być dowolna (znaczenie danych nie zależy od kolejności wierszy).
[edytuj] Tabela przed normalizacją
| Płeć | Imię |
|---|---|
| Męska | Jan, Piotr, Zenon |
| Żeńska | Anna, Maria, Zofia |
[edytuj] 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.
[edytuj] Druga postać normalna (2NF)
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 głównego (a nie np. od części klucza).
[edytuj] Trzecia postać normalna (3NF)
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.
[edytuj] Przykład tabeli "Pracownicy" przed normalizacją
| 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.
[edytuj] Tabela "Pracownicy" po normalizacji
| Imię | Nazwisko | Stanowisko |
|---|---|---|
| Antoni | Anonim | Młotkowy |
| Natalia | Niewiadoma | Sekretarka |
| Eufogenia | Enigma | Sekretarka |
[edytuj] Tabela "Stawki godzinowe" po normalizacji
| Stanowisko | Stawka |
|---|---|
| Młotkowy | 10 zł |
| Sekretarka | 20 zł |
[edytuj] 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.
[edytuj] Czwarta postać normalna (4NF)
Relacja jest w czwartej postaci normalnej, jeżeli zawsze wtedy, kiedy zbiór atrybutów X określa wartościowo Y, to zachodzi jeden z następujących warunków:
- Y jest puste lub zawiera się w X,
- suma zbiorów X i Y jest pełnym zbiorem atrybutów,
- X zawiera klucz.
Czwarta i piąta postać normalna są w zasadzie używane wyłącznie przy okazji rozważań teoretycznych.