Čo je normalizácia? Príklad databázy 1NF, 2NF, 3NF, BCNF

Obsah:

Anonim

Čo je normalizácia?

Normalizácia je technika návrhu databázy, ktorá znižuje nadbytočnosť údajov a eliminuje nežiaduce vlastnosti, ako sú anomálie vloženia, aktualizácie a odstránenia. Normalizačné pravidlá rozdeľujú väčšie tabuľky na menšie tabuľky a spájajú ich pomocou vzťahov. Účelom normalizácie v SQL je eliminovať nadbytočné (opakujúce sa) údaje a zabezpečiť logické ukladanie údajov.

Vynálezca relačného modelu Edgar Codd navrhol teóriu normalizácie údajov zavedením prvej normálnej formy a pokračoval v rozširovaní teórie o druhú a tretiu normálnu formu. Neskôr sa pripojil k Raymondovi F. Boyceovi, aby rozvinul teóriu Boyce-Codd Normal Form.

Normálne formuláre databázy

Tu je zoznam bežných formulárov

  • 1NF (prvá normálna forma)
  • 2 NF (druhá normálna forma)
  • 3NF (tretí normálny tvar)
  • BCNF (normálna forma Boyce-Codd)
  • 4 NF (štvrtý normálny tvar)
  • 5 NF (piaty normálny tvar)
  • 6NF (šiesty normálny tvar)

Teória normalizácie údajov na serveri SQL sa stále vyvíja. Napríklad, tam sú diskusie dokonca o 6 normálne forma. Vo väčšine praktických aplikácií však normalizácia dosahuje svoje najlepšie výsledky v tretej normálnej forme . Vývoj teórií normalizácie SQL je ilustrovaný nižšie -

Normálne formuláre databázy

Normalizácia databázy s príkladmi

Príklad normalizácie databázy možno ľahko pochopiť pomocou prípadovej štúdie. Predpokladajme, že videotéka vedie databázu prenajatých filmov. Bez akejkoľvek normalizácie v databáze sú všetky informácie uložené v jednej tabuľke, ako je uvedené nižšie. Poďme pochopiť normalizáciu v databáze s príkladom tabuliek:

Tu vidíte stĺpec Filmy vypožičané, ktorý má viac hodnôt. Teraz prejdime k 1. normálnym formám:

Pravidlá 1NF (prvá normálna forma)

  • Každá bunka tabuľky by mala obsahovať jednu hodnotu.
  • Každý záznam musí byť jedinečný.

Vyššie uvedená tabuľka v 1NF-

Príklad 1NF

Než budeme pokračovať, pochopme niekoľko vecí -

Čo je to KĽÚČ?

KĽÚČ je hodnota, ktorá sa používa na jednoznačnú identifikáciu záznamu v tabuľke. KĽÚČ môže byť jeden stĺpec alebo kombinácia viacerých stĺpcov

Poznámka: Stĺpce v tabuľke, ktoré NIE sa používajú na jednoznačnú identifikáciu záznamu, sa nazývajú nekľúčové stĺpce.

Čo je primárny kľúč?

Primár je hodnota v jednom stĺpci, ktorá sa používa na jednoznačnú identifikáciu záznamu v databáze.

Má nasledujúce atribúty

  • Primárny kľúč nemôže mať hodnotu NULL
  • Hodnota primárneho kľúča musí byť jedinečná
  • Hodnoty primárneho kľúča by sa mali meniť zriedka
  • Pri vložení nového záznamu musí byť primárnemu kľúču pridelená hodnota.

Čo je zložený kľúč?

Zložený kľúč je primárny kľúč zložený z viacerých stĺpcov používaných na jednoznačnú identifikáciu záznamu

V našej databáze máme dvoch ľudí s rovnakým menom Robert Phil, ktorí však žijú na rôznych miestach.

Preto potrebujeme na identifikáciu záznamu celé meno aj adresu. To je zložený kľúč.

Prejdime do druhej normálnej formy 2NF

Pravidlá 2NF (druhá normálna forma)

  • Pravidlo 1 - Buďte v 1NF
  • Pravidlo 2 - Primárny kľúč s jedným stĺpcom

Je zrejmé, že sa nemôžeme posunúť ďalej, aby sme vytvorili našu jednoduchú databázu v 2. normalizačnom tvare, pokiaľ nerozdelíme tabuľku vyššie.

Rozdelili sme našu 1NF tabuľku na dve tabuľky, viď. Tabuľka 1 a Tabuľka 2. Tabuľka 1 obsahuje informácie o členoch. Tabuľka 2 obsahuje informácie o vypožičaných filmoch.

Zaviedli sme nový stĺpec s názvom Membership_id, ktorý je primárnym kľúčom pre tabuľku 1. Záznamy je možné jednoznačne identifikovať v tabuľke 1 pomocou ID členstva

Databáza - cudzí kľúč

V tabuľke 2 je Membership_ID cudzí kľúč

Cudzí kľúč odkazuje na primárny kľúč inej tabuľky! Pomáha prepojiť vaše tabuľky

  • Cudzí kľúč môže mať iný názov ako jeho primárny kľúč
  • Zaisťuje, aby riadky v jednej tabuľke mali zodpovedajúce riadky v druhej
  • Na rozdiel od primárneho kľúča nemusia byť jedinečné. Najčastejšie nie sú
  • Cudzie kľúče môžu byť nulové, aj keď primárne kľúče nie

Prečo potrebujete cudzí kľúč?

Predpokladajme, že začiatočník vloží záznam do tabuľky B ako napr

Do cudzieho kľúča budete môcť vložiť iba hodnoty, ktoré existujú v jedinečnom kľúči v nadradenej tabuľke. To pomáha pri referenčnej integrite.

Vyššie uvedený problém je možné prekonať deklarovaním ID členstva z Tabuľky2 ako cudzieho kľúča ID členstva z Tabuľky1

Teraz, ak sa niekto pokúsi vložiť do poľa ID členstva hodnotu, ktorá neexistuje v nadradenej tabuľke, zobrazí sa chyba!

Čo sú to prechodné funkčné závislosti?

Tranzitívna funkčná závislosť je pri zmene stĺpca, ktorý nie je kľúčom, môže spôsobiť zmenu ktoréhokoľvek z ostatných stĺpcov, ktoré nie sú kľúčom

Zvážte tabuľku 1. Zmenou nekľúčového stĺpca Celé meno sa môže zmeniť Pozdrav.

Poďme do 3NF

Pravidlá 3NF (tretia normálna forma)

  • Pravidlo 1 - Buďte v 2NF
  • Pravidlo 2 Nemá prechodné funkčné závislosti

Ak chcete presunúť našu tabuľku 2NF na 3NF, musíme znova rozdeliť našu tabuľku.

Príklad 3NF

Ďalej je uvedený príklad 3NF v databáze SQL:

Opäť sme rozdelili naše stoly a vytvorili novú tabuľku, v ktorej sú uložené pozdravy.

Neexistujú žiadne prechodné funkčné závislosti, a preto je naša tabuľka v 3NF

V tabuľke 3 je ID oslovenia primárny kľúč a v tabuľke 1 je ID oslovenia cudzie primárnemu kľúču v tabuľke 3

Náš malý príklad je teraz na úrovni, ktorú nemožno ďalej rozkladať, aby sa dosiahli vyššie normálne formy normalizácie. V skutočnosti je to už vo vyšších normalizačných formách. V komplexných databázach je zvyčajne potrebné vyvinúť samostatné úsilie na prechod na ďalšie úrovne normalizácie údajov. Ďalej však budeme v krátkosti diskutovať o ďalších úrovniach normalizácie.

BCNF (normálna forma Boyce-Codd)

Aj keď je databáza v 3. normálnej forme, stále by došlo k anomáliám, ak má viac ako jeden kandidátsky kľúč.

Niekedy sa BCNF označuje aj ako 3,5 normálnej formy.

Pravidlá 4NF (štvrtá normálna forma)

Ak nie je inštancie databázy tabuľka obsahuje dva alebo viac, nezávislé a viachodnotová dáta popisujúce príslušnú entitu, potom je to v 4 th normálne forma.

Pravidlá 5NF (piata normálna forma)

Tabuľka je v 5 th normálne forma, len ak je to v 4NF a nemôže byť rozložený do ľubovoľného počtu menších tabuliek bez straty dát.

Navrhuje sa 6NF (šiesta normálna forma)

6 th normálna forma nie je štandardizovaná, napriek tomu je však prerokovaný databázovými odborníkmi na nejakú dobu. Dúfajme, že budeme mať jasnú a štandardizovanú definíciu 6 th normálne forma v blízkej budúcnosti ...

To je všetko k normalizácii SQL !!!

Zhrnutie

  • Návrh databázy je rozhodujúci pre úspešnú implementáciu systému správy databáz, ktorý spĺňa dátové požiadavky podnikového systému.
  • Normalizačný proces v DBMS pomáha vyrábať databázové systémy, ktoré sú nákladovo efektívne a majú lepšie modely zabezpečenia.
  • Funkčné závislosti sú veľmi dôležitou súčasťou procesu normalizácie údajov
  • Väčšina databázových systémov je normalizovaná databáza až po tretie bežné formy.
  • Primárny kľúč jednoznačne identifikuje záznamy v tabuľke a nemôže mať hodnotu null
  • Cudzí kľúč pomáha pripojiť tabuľku a odkazuje na primárny kľúč