Trzecia postać normalna

Trzecia postać normalna ( 3NF ) to podejście do projektowania schematów baz danych dla relacyjnych baz danych , które wykorzystuje zasady normalizacji w celu zmniejszenia powielania danych, uniknięcia anomalii danych , zapewnienia integralności referencyjnej i uproszczenia zarządzania danymi. Został zdefiniowany w 1971 roku przez Edgara F. Codda , angielskiego informatyka, który wynalazł relacyjny model zarządzania bazami danych .

relacja bazy danych (np. tabela bazy danych ) spełnia standardy trzeciej postaci normalnej, jeśli wszystkie atrybuty (np. kolumny bazy danych ) są funkcjonalnie zależne wyłącznie od klucza podstawowego . Codd zdefiniował to jako relację w drugiej postaci normalnej , w której wszystkie atrybuty inne niż pierwsze zależą tylko od kluczy kandydujących i nie mają przechodniej zależności od innego klucza.

Hipotetycznym przykładem niespełnienia trzeciej postaci normalnej byłaby szpitalna baza danych posiadająca tabelę pacjentów zawierającą kolumnę na numer telefonu ich lekarza. Numer telefonu jest zależny od lekarza, a nie od pacjenta, dlatego lepiej przechowywać go w tabeli lekarzy. Negatywnym skutkiem takiego projektu jest to, że numer lekarza zostanie zduplikowany w bazie danych, jeśli ma wielu pacjentów, zwiększając w ten sposób zarówno prawdopodobieństwo błędu przy wprowadzaniu, jak i koszt i ryzyko aktualizacji tego numeru w przypadku jego zmiany (w porównaniu z trzecim normalnym zgodny z formularzem model danych, który przechowuje numer lekarza tylko raz na stole lekarskim).

Codd później zdał sobie sprawę, że 3NF nie wyeliminował wszystkich niepożądanych anomalii danych i opracował mocniejszą wersję, aby rozwiązać ten problem w 1974 r., Znaną jako normalna postać Boyce'a-Codda .

Definicja trzeciej postaci normalnej

Trzecia postać normalna (3NF) to postać normalna używana w normalizacji baz danych . 3NF został pierwotnie zdefiniowany przez EF Codda w 1971 roku.

Definicja Codda mówi, że tabela jest w 3NF wtedy i tylko wtedy, gdy spełnione są oba następujące warunki:

  • Relacja R (tabela) jest w drugiej postaci normalnej (2NF) .
  • Żaden inny niż pierwszy atrybut R nie jest przechodnie zależny od klucza podstawowego.

Atrybut inny niż główny R to atrybut, który nie należy do żadnego klucza kandydującego R. Zależność przechodnia to zależność funkcjonalna , w której X Z ( X określa Z ) pośrednio, na mocy X Y i Y Z (gdzie nie jest tak, że Y X ).

Definicja 3NF, która jest równoważna definicji Codda, ale wyrażona inaczej, została podana przez Carlo Zaniolo w 1982 r. Definicja ta stwierdza, że ​​​​tabela jest w 3NF wtedy i tylko wtedy, gdy dla każdej z jej zależności funkcjonalnych X → A , co najmniej jedna z następujących spełnia warunki: [ potrzebuję wyceny do weryfikacji ]

  • X zawiera A (to znaczy A jest podzbiorem X , co oznacza, że ​​X A jest trywialną zależnością funkcjonalną),
  • X jest superkluczem ,
  • każdy element A \ X , różnica między A i X , jest atrybutem pierwszym (tj. każdy atrybut w A \ X jest zawarty w jakimś kandydującym kluczu ).

Definicja Zaniolo daje jasne poczucie różnicy między 3NF a bardziej rygorystyczną postacią normalną Boyce'a-Codda (BCNF). BCNF po prostu eliminuje trzecią alternatywę („Każdy element A \ X , ustalona różnica między A i X , jest atrybutem głównym”).

„Nic oprócz klucza”

Przybliżenie definicji 3NF Codda, analogicznej do tradycyjnej przysięgi złożenia prawdziwych zeznań w sądzie, zostało podane przez Billa Kenta: „[każdy] niekluczowy [atrybut] musi zawierać fakt dotyczący klucza, całego klucza, i tylko klucz”. Powszechna odmiana uzupełnia tę definicję przysięgą „tak mi dopomóż Codd ”.

Wymaganie istnienia „klucza” zapewnia, że ​​tabela jest w 1NF ; wymaganie, aby atrybuty niebędące kluczami były zależne od „całego klucza” zapewnia 2NF ; ponadto wymaganie, aby atrybuty niebędące kluczami były zależne od „niczego poza kluczem”, zapewnia 3NF. Chociaż ta fraza jest użytecznym mnemonikiem, fakt, że wspomina tylko jeden klucz, oznacza, że ​​​​zdefiniowała pewne konieczne, ale niewystarczające warunki, aby spełnić drugą i trzecią postać normalną. Zarówno 2NF, jak i 3NF dotyczą w równym stopniu wszystkich kluczy kandydujących w tabeli, a nie tylko jednego klucza.

Chris Date odnosi się do podsumowania Kenta jako „intuicyjnie atrakcyjnej charakterystyki” 3NF i zauważa, że ​​przy niewielkiej adaptacji może służyć jako definicja nieco silniejszej postaci normalnej Boyce’a-Codda : „Każdy atrybut musi reprezentować fakt dotyczący klucza, całość klucz i tylko klucz”. Wersja 3NF definicji jest słabsza niż odmiana BCNF Date'a, ponieważ ta pierwsza dotyczy jedynie zapewnienia, że ​​niekluczowe atrybuty są zależne od kluczy. Atrybuty pierwsze (które są kluczami lub częściami kluczy) nie mogą w ogóle być funkcjonalnie zależne; każdy z nich reprezentuje fakt dotyczący klucza w sensie dostarczania części lub całości samego klucza. (Ta reguła ma zastosowanie tylko do atrybutów zależnych funkcjonalnie, ponieważ zastosowanie jej do wszystkich atrybutów w sposób dorozumiany zablokowałoby złożone klucze kandydujące, ponieważ każda część takiego klucza naruszyłaby klauzulę „cały klucz”).

Przykładem tabeli, która nie spełnia wymagań 3NF jest:

Zwycięzcy turnieju
Turniej Rok Zwycięzca Data urodzenia zwycięzcy
Zaproszenie do Indiany 1998 Ala Fredricksona 21 lipca 1975
Otwarte Cleveland 1999 Boba Albertsona 28 września 1968
Mistrzowie Des Moines 1999 Ala Fredricksona 21 lipca 1975
Zaproszenie do Indiany 1999 Chipa Mastersona 14 marca 1977

Ponieważ każdy wiersz w tabeli musi informować nas, kto wygrał dany turniej w danym roku, klucz złożony {Tournament, Year} to minimalny zestaw atrybutów gwarantujących jednoznaczną identyfikację wiersza. Oznacza to, że {Tournament, Year} jest kluczem kandydującym do stołu.

Naruszenie 3NF występuje, ponieważ atrybut drugorzędny (data urodzenia zwycięzcy) jest przejściowo zależny od klucza kandydującego {Turniej, rok} poprzez atrybut drugorzędny Zwycięzca. Fakt, że data urodzenia Zwycięzcy jest funkcjonalnie zależna od Zwycięzcy, sprawia, że ​​tabela jest podatna na logiczne niespójności, ponieważ nic nie stoi na przeszkodzie, aby ta sama osoba była wyświetlana z różnymi datami urodzenia w różnych rekordach.

Aby wyrazić te same fakty bez naruszania 3NF, konieczne jest podzielenie tabeli na dwie części:

Zwycięzcy turnieju
Turniej Rok Zwycięzca
Zaproszenie do Indiany 1998 Ala Fredricksona
Otwarte Cleveland 1999 Boba Albertsona
Mistrzowie Des Moines 1999 Ala Fredricksona
Zaproszenie do Indiany 1999 Chipa Mastersona
Daty urodzenia zwycięzcy
Zwycięzca Data urodzenia
Chipa Mastersona 14 marca 1977
Ala Fredricksona 21 lipca 1975
Boba Albertsona 28 września 1968

Anomalie aktualizacji nie mogą wystąpić w tych tabelach, ponieważ w przeciwieństwie do poprzednio, Zwycięzca jest teraz kluczem kandydującym w drugiej tabeli, co pozwala na tylko jedną wartość daty urodzenia dla każdego Zwycięzcy.

Obliczenie

Relację można zawsze rozłożyć na trzecią postać normalną, to znaczy relację R przepisać na projekcje R 1 , ..., R n , których sprzężenie jest równe relacji pierwotnej. Co więcej, ten rozkład nie traci żadnej funkcjonalnej zależności , w tym sensie, że każda funkcjonalna zależność od R może być wyprowadzona z funkcjonalnych zależności, które utrzymują się na projekcjach R1 , ..., Rn . Co więcej, taki rozkład można obliczyć w czasie wielomianowym .

Aby rozłożyć relację na 3NF z 2NF, podziel tabelę na kanoniczne zależności funkcjonalne pokrywy, a następnie utwórz relację dla każdego kandydującego klucza oryginalnej relacji, który nie był już podzbiorem relacji w dekompozycji.

Wyprowadzenie warunków Zaniolo

Definicja 3NF zaproponowana przez Carlo Zaniolo w 1982 roku i podana powyżej jest udowodniona w następujący sposób: Niech X → A będzie nietrywialnym FD ( tj. takim, w którym X nie zawiera A) i niech A będzie atrybutem niekluczowym. Niech Y będzie również kluczem R. Wtedy Y → X.

Normalizacja poza 3NF

Większość tabel 3NF jest wolna od anomalii aktualizacji, wstawiania i usuwania. Niektóre typy tablic 3NF, rzadko spotykane w praktyce, są dotknięte takimi anomaliami; są to tabele, które albo nie spełniają formy normalnej Boyce'a-Codda (BCNF), albo, jeśli spełniają BCNF, nie spełniają wyższych form normalnych 4NF lub 5NF .

Uwagi dotyczące stosowania w środowiskach raportowania

Podczas gdy 3NF był idealny do przetwarzania maszynowego, segmentowany charakter modelu danych może być trudny do wykorzystania przez użytkownika. Analityka za pośrednictwem zapytań, raportów i pulpitów nawigacyjnych była często ułatwiana przez inny typ modelu danych, który zapewniał wstępnie obliczone analizy, takie jak linie trendu, obliczenia od początku okresu (od początku miesiąca, od początku kwartału, do końca roku, do chwili obecnej), obliczenia skumulowane, podstawowe statystyki (średnia, odchylenie standardowe, średnie kroczące) i porównania z poprzednimi okresami (rok temu, miesiąc temu, tydzień temu) np. modelowanie wymiarowe i pozawymiarowe, spłaszczanie gwiazd przez Hadoop i data science .

Zobacz też

Dalsza lektura

Linki zewnętrzne