Co je normalizace? Příklad databáze 1NF, 2NF, 3NF, BCNF

Obsah:

Anonim

Co je normalizace?

Normalizace je technika návrhu databáze, která snižuje nadbytečnost dat a eliminuje nežádoucí vlastnosti, jako jsou anomálie vložení, aktualizace a odstranění. Normalizační pravidla rozdělují větší tabulky na menší tabulky a propojují je pomocí vztahů. Účelem normalizace v SQL je eliminovat nadbytečná (opakující se) data a zajistit, aby byla data ukládána logicky.

Vynálezce relačního modelu Edgar Codd navrhl teorii normalizace dat zavedením první normální formy a pokračoval v rozšiřování teorie o druhou a třetí normální formu. Později se připojil k Raymondovi F. Boyceovi, aby vyvinul teorii Boyce-Codd Normal Form.

Normální formuláře databáze

Zde je seznam běžných formulářů

  • 1NF (první normální forma)
  • 2NF (druhý normální tvar)
  • 3NF (třetí normální forma)
  • BCNF (Boyce-Codd normální forma)
  • 4NF (čtvrtý normální tvar)
  • 5NF (pátý normální tvar)
  • 6NF (šestá normální forma)

Teorie normalizace dat na serveru SQL se stále vyvíjí. Například, tam jsou diskuse dokonce o 6 normální forma. Ve většině praktických aplikací však normalizace dosahuje svých nejlepších výsledků ve 3. normální formě . Vývoj teorií normalizace SQL je ilustrován níže -

Normální formuláře databáze

Normalizace databáze s příklady

Příklad normalizace databáze lze snadno pochopit pomocí případové studie. Předpokládejme, že videotéka udržuje databázi pronajatých filmů. Bez normalizace v databázi jsou všechny informace uloženy v jedné tabulce, jak je uvedeno níže. Pojďme pochopit normalizaci v databázi s příkladem tabulek:

Zde vidíte, že sloupec Filmy vypůjčené má několik hodnot. Nyní přejdeme k 1. normálním formám:

Pravidla 1NF (první normální forma)

  • Každá buňka tabulky by měla obsahovat jednu hodnotu.
  • Každý záznam musí být jedinečný.

Výše uvedená tabulka v 1NF-

Příklad 1NF

Než budeme pokračovat, pochopme několik věcí -

Co je KLÍČ?

KEY je hodnota používaná k jedinečné identifikaci záznamu v tabulce. KEY může být jeden sloupec nebo kombinace více sloupců

Poznámka: Sloupce v tabulce, které NENÍ použity k jedinečné identifikaci záznamu, se nazývají neklíčové sloupce.

Co je primární klíč?

Primární je hodnota jednoho sloupce používaná k jedinečné identifikaci záznamu databáze.

Má následující atributy

  • Primární klíč nemůže mít hodnotu NULL
  • Hodnota primárního klíče musí být jedinečná
  • Hodnoty primárního klíče by se měly měnit jen zřídka
  • Při vložení nového záznamu musí mít primární klíč hodnotu.

Co je složený klíč?

Složený klíč je primární klíč složený z více sloupců používaných k jedinečné identifikaci záznamu

V naší databázi máme dva lidi se stejným jménem Robert Phil, ale žijí na různých místech.

Proto požadujeme k úplné identifikaci záznamu celé jméno i adresu. To je složený klíč.

Pojďme přejít do druhé normální formy 2NF

Pravidla 2NF (druhá normální forma)

  • Pravidlo 1 - Buďte v 1NF
  • Pravidlo 2 - Primární klíč s jedním sloupcem

Je jasné, že se nemůžeme pohnout kupředu, abychom vytvořili naši jednoduchou databázi ve 2. normalizační formě, pokud nerozdělíme výše uvedenou tabulku.

Naše tabulka 1NF jsme rozdělili do dvou tabulek viz. Tabulka 1 a Tabulka2. Tabulka 1 obsahuje informace o členech. Tabulka 2 obsahuje informace o vypůjčených filmech.

Zavedli jsme nový sloupec s názvem Membership_id, který je primárním klíčem pro tabulku 1. Záznamy lze jednoznačně identifikovat v tabulce 1 pomocí ID členství

Databáze - cizí klíč

V tabulce 2 je Membership_ID cizí klíč

Cizí klíč odkazuje na primární klíč jiné tabulky! Pomáhá propojit vaše tabulky

  • Cizí klíč může mít jiný název než jeho primární klíč
  • Zajišťuje, aby řádky v jedné tabulce měly odpovídající řádky v jiné
  • Na rozdíl od primárního klíče nemusí být jedinečné. Nejčastěji nejsou
  • Cizí klíče mohou mít hodnotu null, i když primární klíče nikoli

Proč potřebujete cizí klíč?

Předpokládejme, že nováček vloží záznam do tabulky B, jako je

Do svého cizího klíče budete moci vložit pouze hodnoty, které existují v jedinečném klíči v nadřazené tabulce. To pomáhá v referenční integritě.

Výše uvedený problém lze překonat deklarováním ID členství z Tabulky2 jako cizího klíče ID členství z Tabulky1

Nyní, pokud se někdo pokusí vložit hodnotu do pole ID členství, která neexistuje v nadřazené tabulce, zobrazí se chyba!

Co jsou tranzitivní funkční závislosti?

Transitivní funkční závislost je při změně sloupce bez klíče, může způsobit změnu kteréhokoli z ostatních sloupců bez klíče

Zvažte tabulku 1. Změna neklíčového sloupce Celé jméno může změnit Pozdrav.

Pojďme do 3NF

Pravidla 3NF (třetí normální forma)

  • Pravidlo 1 - Být ve 2NF
  • Pravidlo 2 Nemá žádné přechodné funkční závislosti

Chcete-li přesunout naši tabulku 2NF na 3NF, musíme znovu tabulku rozdělit.

Příklad 3NF

Níže je příklad 3NF v databázi SQL:

Znovu jsme rozdělili naše stoly a vytvořili novou tabulku, kde jsou uloženy Pozdravy.

Neexistují žádné přechodné funkční závislosti, a proto je naše tabulka v 3NF

V tabulce 3 je ID oslovení primární klíč a v tabulce 1 je ID oslovení cizí primárnímu klíči v tabulce 3

Náš malý příklad je nyní na úrovni, kterou nelze dále rozložit, abychom dosáhli vyšších normálních forem normalizace. Ve skutečnosti je již ve vyšších normalizačních formách. V komplexních databázích je obvykle zapotřebí samostatného úsilí o přechod na další úrovně normalizujících dat. V dalším však budeme stručně diskutovat o dalších úrovních normalizace.

BCNF (Boyce-Codd normální forma)

Dokonce i když je databáze ve 3 rd normální forma, ještě tam by anomálie za následek, pokud má více než jednoho kandidáta na klíč.

Někdy se BCNF označuje také jako 3,5 normální forma.

Pravidla 4NF (čtvrtá normální forma)

Není-li instance databáze tabulka obsahuje dva nebo více, nezávislé a vícehodnotový data popisující příslušnou entitu, pak je to v 4 th normální forma.

Pravidla 5NF (pátá normální forma)

Tabulka je v 5 th normální forma, pouze pokud je to v 4NF a nemůže být rozložen do libovolného počtu menších tabulek bez ztráty dat.

6NF (šestá normální forma) Navrženo

6 th normální forma není standardizována, přesto je však projednáván databázovými odborníky na nějakou dobu. Doufejme, že budeme mít jasnou a standardizovanou definici 6 th normální forma v blízké budoucnosti ...

To je vše k normalizaci SQL !!!

souhrn

  • Návrh databáze je zásadní pro úspěšnou implementaci systému správy databáze, který splňuje požadavky na data podnikového systému.
  • Normalizační proces v DBMS pomáhá vytvářet databázové systémy, které jsou nákladově efektivní a mají lepší modely zabezpečení.
  • Funkční závislosti jsou velmi důležitou součástí procesu normalizace dat
  • Většina databázových systémů je normalizovaná databáze až po třetí normální formy.
  • Jednoznačně identifikuje primární klíč, který je zaznamenán v tabulce a nemůže mít hodnotu null
  • Cizí klíč pomáhá připojit tabulku a odkazuje na primární klíč