logo

Normálne formuláre v DBMS

Normalizácia je proces minimalizácie nadbytok zo vzťahu alebo súboru vzťahov. Redundancia vo vzťahu môže spôsobiť anomálie vloženia, vymazania a aktualizácie. Pomáha to minimalizovať nadbytočnosť vo vzťahoch. Normálne formy sa používajú na odstránenie alebo zníženie redundancie v databázových tabuľkách.

vlk verzus líška

Normalizácia DBMS od Ranjan Hero

V systémoch správy databáz (DBMS) sú normálne formuláre sériou pokynov, ktoré pomáhajú zabezpečiť, aby bol návrh databázy efektívny, organizovaný a bez anomálií údajov. Existuje niekoľko úrovní normalizácie, z ktorých každá má svoj vlastný súbor pokynov, známych ako normálne formy.



Dôležité body týkajúce sa normálnych formulárov v DBMS

  • Prvá normálna forma (1NF): Toto je najzákladnejšia úroveň normalizácie. V 1NF by mala každá bunka tabuľky obsahovať iba jednu hodnotu a každý stĺpec by mal mať jedinečný názov. Prvá normálna forma pomáha eliminovať duplicitné údaje a zjednodušiť dotazy.
  • Druhá normálna forma (2NF): 2NF eliminuje nadbytočné dáta tým, že vyžaduje, aby každý nekľúčový atribút bol závislý od primárneho kľúča. To znamená, že každý stĺpec by mal priamo súvisieť s primárnym kľúčom a nie s inými stĺpcami.
  • Tretia normálna forma (3NF): 3NF stavia na 2NF tým, že vyžaduje, aby všetky nekľúčové atribúty boli na sebe nezávislé. To znamená, že každý stĺpec by mal priamo súvisieť s primárnym kľúčom a nie so žiadnymi inými stĺpcami v tej istej tabuľke.
  • Normálna forma Boyce-Codda (BCNF): BCNF je prísnejšia forma 3NF, ktorá zabezpečuje, že každý determinant v tabuľke je kandidátskym kľúčom. Inými slovami, BCNF zabezpečuje, že každý nekľúčový atribút je závislý len od kandidátskeho kľúča.
  • Štvrtá normálna forma (4NF): 4NF je ďalším vylepšením BCNF, ktoré zabezpečuje, že tabuľka neobsahuje žiadne viachodnotové závislosti.
  • Piata normálna forma (5NF): 5NF je najvyššia úroveň normalizácie a zahŕňa rozloženie tabuľky na menšie tabuľky, aby sa odstránila redundancia údajov a zlepšila sa integrita údajov.

Normálne formuláre pomáhajú znižovať redundanciu údajov, zvyšujú konzistenciu údajov a zlepšujú výkon databázy. Vyššie úrovne normalizácie však môžu viesť k zložitejším návrhom databáz a dotazom. Pri navrhovaní databázy je dôležité nájsť rovnováhu medzi normalizáciou a praktickosťou.

Výhody normálnej formy

  • Znížená redundancia údajov: Normalizácia pomáha eliminovať duplicitné údaje v tabuľkách, znižuje množstvo potrebného úložného priestoru a zlepšuje efektivitu databázy.
  • Vylepšená konzistencia údajov: Normalizácia zaisťuje, že údaje sú uložené konzistentným a organizovaným spôsobom, čím sa znižuje riziko nezrovnalostí a chýb údajov.
  • Zjednodušený návrh databázy: Normalizácia poskytuje pokyny na organizáciu tabuliek a dátových vzťahov, čím uľahčuje návrh a údržbu databázy.
  • Vylepšený výkon dotazov: Normalizované tabuľky sa zvyčajne ľahšie vyhľadávajú a získavajú z nich údaje, čo vedie k rýchlejšiemu výkonu dotazov.
  • Jednoduchšia údržba databázy: Normalizácia znižuje zložitosť databázy tým, že ju rozdeľuje na menšie, lepšie spravovateľné tabuľky, čím uľahčuje pridávanie, upravovanie a odstraňovanie údajov.

Celkovo používanie normálnych formulárov v DBMS pomáha zlepšiť kvalitu údajov, zvýšiť efektivitu databázy a zjednodušiť návrh a údržbu databázy.

Prvá normálna forma

Ak vzťah obsahuje zložený alebo viachodnotový atribút, porušuje prvú normálnu formu alebo je vzťah v prvej normálnej forme, ak neobsahuje žiadny zložený alebo viachodnotový atribút. Vzťah je v prvej normálnej forme, ak je každý atribút v tomto vzťahu jediný hodnotný atribút .



  • Príklad 1 – Vzťah STUDENT v tabuľke 1 nie je v 1NF kvôli viachodnotovému atribútu STUD_PHONE. Jeho rozklad na 1NF je znázornený v tabuľke 2.
Príklad

Príklad

  • Príklad 2 –
ID Name Courses ------------------ 1 A c1, c2 2 E c3 3 M C2, c3>
  • Vo vyššie uvedenej tabuľke je kurz atribút s viacerými hodnotami, takže nie je v 1NF. Nižšie uvedená tabuľka je v 1NF, pretože neexistuje žiadny atribút s viacerými hodnotami
ID Name Course ------------------ 1 A c1 1 A c2 2 E c3 3 M c2 3 M c3>

Druhá normálna forma

Aby bol vzťah v druhej normálnej forme, musí byť v prvej normálnej forme a vzťah nesmie obsahovať žiadnu čiastočnú závislosť. Vzťah je v 2NF, ak má Žiadna čiastočná závislosť, t.j. , žiadny neprime atribút (atribúty, ktoré nie sú súčasťou žiadneho kandidátskeho kľúča) nie je závislý od akejkoľvek správnej podmnožiny akéhokoľvek kandidátskeho kľúča tabuľky. Čiastočná závislosť - Ak správna podmnožina kandidátskeho kľúča určuje neprime atribút, nazýva sa to čiastočná závislosť.

  • Príklad 1 – Zvážte tabuľku-3 nasledujúcu nižšie.
STUD_NO COURSE_NO COURSE_FEE 1 C1 1000 2 C2 1500 1 C4 2000 4 C3 1000 4 C1 1000 2 C5 2000>
  • {Všimnite si, že existuje veľa kurzov s rovnakým poplatkom za kurz} V tomto prípade nemôže COURSE_FEE sám rozhodnúť o hodnote COURSE_NO alebo STUD_NO; COURSE_FEE spolu s STUD_NO nemôže rozhodnúť o hodnote COURSE_NO; COURSE_FEE spolu s COURSE_NO nemôže rozhodnúť o hodnote STUD_NO; COURSE_FEE by teda nebol prvotriedny atribút, pretože nepatrí k jedinému kandidátskemu kľúču {STUD_NO, COURSE_NO} ; Ale COURSE_NO -> COURSE_FEE, t.j. COURSE_FEE závisí od COURSE_NO, čo je správna podmnožina kandidátskeho kľúča. Neprvotriedny atribút COURSE_FEE je závislý od správnej podmnožiny kandidátskeho kľúča, čo je čiastočná závislosť, a tak tento vzťah v 2NF nie je. Aby sme previedli vyššie uvedený vzťah na 2NF, musíme tabuľku rozdeliť na dve tabuľky, ako napríklad: Tabuľka 1: STUD_NO, COURSE_NO Tabuľka 2: COURSE_NO, COURSE_FEE
   Table 1     Table 2  STUD_NO COURSE_NO COURSE_NO COURSE_FEE  1 C1 C1 1000 2 C2 C2 1500 1 C4 C3 1000 4 C3 C4 2000 4 C1 C5 2000>
  • POZNÁMKA: 2NF sa snaží redukovať nadbytočné dáta, ktoré sa ukladajú do pamäte. Napríklad, ak 100 študentov absolvuje kurz C1, nemusíme uložiť jeho poplatok ako 1 000 pre všetkých 100 záznamov, namiesto toho ho môžeme uložiť do druhej tabuľky, pretože poplatok za kurz C1 je 1 000.
  • Príklad 2 – Zvážte nasledujúce funkčné závislosti vo vzťahu R (A, B, C, D)
AB ->C [A a B spolu určujú C] BC -> D [B a C spolu určujú D]>

Vo vyššie uvedenom vzťahu je AB jediným kandidátskym kľúčom a neexistuje žiadna čiastočná závislosť, t. j. žiadna správna podmnožina AB neurčuje žiadny neprime atribút.



X is a super key. Y is a prime attribute (each element of Y is part of some candidate key).>

Príklad 1: Vo vzťahu STUDENT uvedený v tabuľke 4, FD sada: {STUD_NO -> STUD_NAME, STUD_NO -> STUD_STATE, STUD_STATE -> STUD_COUNTRY, STUD_NO -> STUD_AGE}

Kandidátsky kľúč: {STUD_NO}

Pre tento vzťah v tabuľke 4 platia STUD_NO -> STUD_STATE a STUD_STATE -> STUD_COUNTRY.

STUD_COUNTRY je teda prechodne závislá od STUD_NO. Porušuje tretiu normálnu formu.

Aby sme to previedli do tretej normálnej formy, rozložíme vzťah STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_COUNTRY_STUD_AGE) ako: STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_AGE) STATE_COUNTRY (STATE, COUNTRY)

Zvážte vzťah R(A, B, C, D, E) A -> BC, CD -> E, B -> D, E -> A Všetky možné kandidátske kľúče vo vyššie uvedenom vzťahu sú {A, E, CD, BC} Všetky atribúty sú na pravej strane všetkých funkčných závislostí sú prvočíslo.

Príklad 2: Nájdite najvyššiu normálnu formu vzťahu R(A,B,C,D,E) s FD nastaveným ako {BC->D, AC->BE, B->E}

Krok 1: Ako vidíme, (AC)+ ={A,C,B,E,D}, ale žiadna z jeho podmnožín nemôže určiť všetky atribúty vzťahu, takže AC bude kandidátsky kľúč. A alebo C nemožno odvodiť zo žiadneho iného atribútu vzťahu, takže bude existovať iba 1 kandidátsky kľúč {AC}.

Krok 2: Prvotriedne atribúty sú tie atribúty, ktoré sú v tomto príklade súčasťou kandidátskeho kľúča {A, C} a ostatné v tomto príklade nebudú prvočíslo {B, D, E}.

Krok 3: Vzťah R je v 1. normálnej forme, pretože relačný DBMS neumožňuje viachodnotový alebo zložený atribút. Vzťah je v 2. normálnej forme, pretože BC->D je v 2. normálnej forme (BC nie je správnou podmnožinou kandidátskeho kľúča AC) a AC->BE je v 2. normálnej forme (AC je kandidátsky kľúč) a B->E je v 2. normálnej forme (B nie je správnou podmnožinou kandidátskeho kľúča AC).

Vzťah nie je v 3. normálnej forme, pretože v BC->D (ani BC nie je superkľúč, ani D nie je prvočíslo) av B->E (ani B nie je superkľúč, ani E nie je prvočíslo), ale aby vyhovujú 3. normálu, pretože buď LHS FD by mal byť super kľúč alebo RHS by mal byť hlavným atribútom. Takže najvyššia normálna forma vzťahu bude 2. normálna forma.

Uvažujme napríklad vzťah R(A, B, C) A -> BC, B -> A a B sú oba super kľúče, takže vyššie uvedený vzťah je v BCNF.

Tretia normálna forma

Hovorí sa, že vzťah je v tretej normálnej forme, ak nemáme žiadnu tranzitívnu závislosť pre neprime atribúty. Základnou podmienkou tretej normálnej formy je, že vzťah musí byť v druhej normálnej forme.

Nižšie je uvedená základná podmienka, ktorá musí byť splnená v netriviálnej funkčnej závislosti X -> Y:

  • X je super kľúč.
  • Y je hlavný atribút (to znamená, že prvok Y je súčasťou kandidátskeho kľúča).

Ďalšie informácie nájdete v časti Tretia normálna forma v DBMS.

BCNF

BCNF (Boyce-Codd Normal Form) je len pokročilá verzia tretej normálnej formy. Tu máme niekoľko ďalších pravidiel ako Tretia normálna forma. Základnou podmienkou pre akýkoľvek vzťah, aby bol v BCNF, je, že musí byť v tretej normálnej forme.

Musíme sa zamerať na niektoré základné pravidlá, ktoré platia pre BCNF:

1. Table must be in Third Normal Form. 2. In relation X->Y, X musí byť superkľúč vo vzťahu.>

Ďalšie informácie nájdete v časti BCNF v DBMS.

Štvrtá normálna forma

Štvrtá normálna forma neobsahuje žiadnu netriviálnu viacnásobnú závislosť okrem kandidátskeho kľúča. Základnou podmienkou pri štvrtej normálnej forme je, že vzťah musí byť v BCNF.

kruhový plánovací algoritmus

Základné pravidlá sú uvedené nižšie.

1. It must be in BCNF. 2. It does not have any multi-valued dependency.>

Ďalšie informácie nájdete v časti Štvrtá normálna forma v DBMS.

Piata normálna forma

Piata normálna forma sa tiež nazýva premietaná normálna forma. Základné podmienky Piatej normálnej formy sú uvedené nižšie.

Relation must be in Fourth Normal Form. The relation must not be further non loss decomposed.>

Ďalšie informácie nájdete v časti Piata normálna forma v DBMS.

Aplikácie normálnych foriem v DBMS

  • Konzistencia údajov: Normálne formuláre zabezpečujú, že údaje sú konzistentné a neobsahujú žiadne nadbytočné informácie. To pomáha predchádzať nezrovnalostiam a chybám v databáze.
  • Redundancia údajov: Normálne formuláre minimalizujú redundanciu údajov organizovaním údajov do tabuliek, ktoré obsahujú iba jedinečné údaje. To znižuje množstvo úložného priestoru potrebného pre databázu a uľahčuje jej správu.
  • Doba odozvy: Normálne formuláre môžu zlepšiť výkon dotazov znížením počtu spojení potrebných na získanie údajov. Pomáha to urýchliť spracovanie dotazov a zlepšiť celkový výkon systému.
  • Údržba databázy: Normálne formuláre uľahčujú údržbu databázy znížením množstva nadbytočných údajov, ktoré je potrebné aktualizovať, vymazať alebo upraviť. Pomáha to zlepšiť správu databázy a znížiť riziko chýb alebo nezrovnalostí.
  • Návrh databázy: Normálne formuláre poskytujú pokyny na navrhovanie databáz, ktoré sú efektívne, flexibilné a škálovateľné. To pomáha zaistiť, že databázu možno podľa potreby jednoducho upravovať, aktualizovať alebo rozširovať.

Niektoré dôležité body o normálnych formulároch

  • BCNF neobsahuje redundanciu spôsobenú funkčnými závislosťami.
  • Ak je vzťah v BCNF, potom je splnený aj 3NF.
  • Ak sú všetky atribúty vzťahu hlavným atribútom, potom je vzťah vždy v 3NF.
  • Vzťah v relačnej databáze je vždy a minimálne vo forme 1NF.
  • Každý binárny vzťah (vzťah s iba 2 atribútmi) je vždy v BCNF.
  • Ak má vzťah iba jeden kandidátsky kľúč (t. j. každý kandidátsky kľúč pozostáva iba z 1 atribútu), potom je vzťah vždy v 2NF (pretože nie je možná čiastočná funkčná závislosť).
  • Niekedy prechod na formu BCNF nemusí zachovať funkčnú závislosť. V takom prípade prejdite na BCNF len vtedy, ak sa nepožaduje stratené FD, inak normalizujte iba do 3NF.
  • Existuje oveľa viac normálnych foriem, ktoré existujú po BCNF, ako je 4NF a ďalšie. Ale v reálnych databázových systémoch sa vo všeobecnosti nevyžaduje ísť nad rámec BCNF.

Záver

Na záver možno povedať, že relačné databázy môžu byť usporiadané podľa súboru pravidiel nazývaných normálne formy databázy správy (1NF, 2NF, 3NF, BCNF, 4NF a 5NF), ktoré znižujú redundanciu údajov a zachovávajú integritu údajov. Vyriešením rôznych druhov dátových anomálií a závislostí sa každá nasledujúca normálna forma rozširuje na tú, ktorá predchádzala. Konkrétne požiadavky a vlastnosti uložených údajov určujú, ktorá normálna forma by sa mala použiť; vyššie normálne formy ponúkajú prísnejšiu integritu údajov, ale môžu tiež viesť k zložitejším databázovým štruktúram.

Odkazy na otázky z predchádzajúceho roka

  • GATE CS 2012, otázka 2
  • GATE CS 2013, otázka 54
  • GATE CS 2013, otázka 55
  • GATE CS 2005, otázka 29
  • GATE CS 2002, otázka 23
  • GATE CS 2002, otázka 50
  • GATE CS 2001, otázka 48
  • GATE CS 1999, otázka 32
  • GATE IT 2005, otázka 22
  • GATE IT 2008, otázka 60
  • GATE CS 2016 (1. sada), otázka 31

Časté otázky v normálnom formulári

Otázka 1: Prečo je v DBMS dôležitá normalizácia?

odpoveď:

Normalizácia pomáha predchádzať anomáliám databázy, čo v konečnom dôsledku zabezpečuje konzistenciu databázy a pomáha pri jednoduchej údržbe databázy.

Otázka 2: Je možné nadmerne normalizovať databázu?

odpoveď:

Áno, nadmerná normalizácia sa týka zložitých dopytov a tiež znižuje výkon. Vytvára rovnováhu medzi normalizáciou a praktickosťou.

Otázka 3: Je potrebné normalizovať databázu na najvyššiu normálnu formu (BCNF alebo 4NF)?

odpoveď:

Neexistuje žiadna určitá nevyhnutná podmienka pre akúkoľvek normalizáciu databázy. Pre špecifický výkon a jednoduchosť môže často stačiť nižšia forma.