Postać normalna (bazy danych): Różnice pomiędzy wersjami
[wersja nieprzejrzana] | [wersja oczekująca na przejrzenie] |
Znaczniki: wulgaryzmy lub nieodpowiednie słownictwo (filtr nadużyć) Wycofane VisualEditor |
|||
(Nie pokazano 32 wersji utworzonych przez 24 użytkowników) | |||
Linia 1: | Linia 1: | ||
'''Postać normalna''' – postać [[Relacja (matematyka)|relacji]] w [[Baza danych|bazie danych]], w której nie występuje [[redundancja]] (nadmiarowość), czyli powtarzanie się tych samych [[informacja|informacji]]. |
'''Postać normalna''' – postać [[Relacja (matematyka)|relacji]] w [[Baza danych|bazie danych]], w której nie występuje [[redundancja]] (nadmiarowość), czyli powtarzanie się tych samych [[informacja|informacji]]. Doprowadzenie relacji do postaci normalnej nazywa się normalizacją (lub dekompozycją) bazy danych. |
||
== Rozróżniane postacie normalne == |
== Rozróżniane postacie normalne == |
||
Linia 5: | Linia 5: | ||
Relacja jest w pierwszej postaci normalnej, jeśli: |
Relacja jest w pierwszej postaci normalnej, jeśli: |
||
* opisuje jeden [[Obiekt (programowanie obiektowe)|obiekt]], |
* opisuje jeden [[Obiekt (programowanie obiektowe)|obiekt]], |
||
* wartości [[Atrybut (programowanie)|atrybutów]] są elementarne (atomowe, niepodzielne) – każda kolumna jest wartością [[Skalar (matematyka)|skalarną]] (atomową), a nie [[Macierz|macierzą]] lub [[Lista|listą]] czy też czymkolwiek, co posiada własną strukturę, |
* wartości [[Atrybut (programowanie)|atrybutów]] są elementarne (atomowe, niepodzielne) – każda kolumna jest wartością [[Skalar (matematyka)|skalarną]] (atomową), a nie [[Macierz|macierzą]] lub [[Lista|listą]] czy też czymkolwiek, co posiada własną strukturę{{odn|Ullman|Wisdom|2011|s=112}}, |
||
* nie zawiera kolekcji (powtarzających się grup informacji) |
* nie zawiera kolekcji (powtarzających się grup informacji) |
||
* kolejność [[Rekord (informatyka)|wierszy]] może być dowolna (znaczenie danych nie zależy od kolejności wierszy) |
* kolejność [[Rekord (informatyka)|wierszy]] może być dowolna (znaczenie danych nie zależy od kolejności wierszy). |
||
==== Tabela przed normalizacją ==== |
==== Tabela przed normalizacją ==== |
||
{| class="wikitable" |
|||
{| |
|||
|+frajerzy |
|||
!Płeć |
!Płeć |
||
!Imię |
!Imię |
||
Linia 23: | Linia 22: | ||
==== Pierwsza postać normalna ==== |
==== Pierwsza postać normalna ==== |
||
{| class="wikitable" |
|||
{| |
|||
!Płeć |
!Płeć |
||
!Imię |
!Imię |
||
Linia 34: | Linia 33: | ||
|- |
|- |
||
|Męska |
|Męska |
||
|Zenon |
|||
|Kornel |
|||
|- |
|- |
||
|Żeńska |
|Żeńska |
||
Linia 120: | Linia 119: | ||
=== Trzecia postać normalna (3NF) === |
=== 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. |
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{{odn|Ullman|Wisdom|2011|s=112}}. |
||
==== Przykład tabeli „Pracownicy” przed normalizacją ==== |
==== Przykład tabeli „Pracownicy” przed normalizacją ==== |
||
Linia 132: | Linia 131: | ||
|Anonim |
|Anonim |
||
|Stolarz |
|Stolarz |
||
| |
|11 zł |
||
|- |
|- |
||
|Natalia |
|Natalia |
||
Linia 175: | Linia 174: | ||
|- |
|- |
||
|Stolarz |
|Stolarz |
||
| |
|11 zł |
||
|- |
|- |
||
|Sekretarka |
|Sekretarka |
||
Linia 192: | Linia 191: | ||
Ponadto 4NF zachodzi wówczas gdy: |
Ponadto 4NF zachodzi wówczas gdy: |
||
* spełnione są warunki BCNF |
* spełnione są warunki BCNF |
||
* istnieją nietrywialne zależności gdzie Y wynika z X, X i Y są [[Rozdzielność |
* istnieją nietrywialne zależności gdzie Y wynika z X, X i Y są [[Rozdzielność|rozdzielne]] oraz X jest kluczem. |
||
Czwarta i piąta postać normalna są w zasadzie używane wyłącznie przy okazji rozważań teoretycznych. |
Czwarta i piąta postać normalna są w zasadzie używane wyłącznie przy okazji rozważań teoretycznych. |
||
== Przypisy == |
|||
{{Przypisy}} |
|||
== Bibliografia == |
|||
* {{Cytuj książkę |tytuł = Podstawowy kurs systemów baz danych |imię = Jeffrey D. |nazwisko = Ullman |imię2 = Jennifer |nazwisko2 = Wisdom |rok = 2011 |wydawca = Helion |isbn = 8324632247 |język = pl |odn = tak}} |
|||
[[Kategoria:Bazy danych]] |
[[Kategoria:Bazy danych]] |
Aktualna wersja na dzień 15:20, 16 wrz 2024
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 | 11 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 | 11 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.).