logo

Normální formuláře v DBMS

Normalizace je proces minimalizace nadbytek ze vztahu nebo souboru vztahů. Redundance ve vztahu může způsobit anomálie vkládání, mazání a aktualizace. Pomáhá tedy minimalizovat redundanci ve vztazích. Normální formy se používají k odstranění nebo snížení redundance v databázových tabulkách.

Normalizace DBMS od Ranjan Hero

V systémech správy databází (DBMS) jsou normální formuláře řadou pokynů, které pomáhají zajistit, aby návrh databáze byl efektivní, organizovaný a bez datových anomálií. Existuje několik úrovní normalizace, z nichž každá má svůj vlastní soubor pokynů, známých jako normální formy.



Důležité body týkající se normálních formulářů v DBMS

  • První normální forma (1NF): Toto je nejzákladnější úroveň normalizace. V 1NF by každá buňka tabulky měla obsahovat pouze jednu hodnotu a každý sloupec by měl mít jedinečný název. První normální formulář pomáhá eliminovat duplicitní data a zjednodušit dotazy.
  • Druhá normální forma (2NF): 2NF eliminuje redundantní data tím, že vyžaduje, aby každý neklíčový atribut byl závislý na primárním klíči. To znamená, že každý sloupec by měl přímo souviset s primárním klíčem a ne s jinými sloupci.
  • Třetí normální forma (3NF): 3NF staví na 2NF tím, že vyžaduje, aby všechny neklíčové atributy byly na sobě nezávislé. To znamená, že každý sloupec by měl přímo souviset s primárním klíčem a ne s žádnými jinými sloupci ve stejné tabulce.
  • Normální forma Boyce-Codda (BCNF): BCNF je přísnější forma 3NF, která zajišťuje, že každý determinant v tabulce je kandidátním klíčem. Jinými slovy, BCNF zajišťuje, že každý neklíčový atribut je závislý pouze na kandidátním klíči.
  • Čtvrtá normální forma (4NF): 4NF je další vylepšení BCNF, které zajišťuje, že tabulka neobsahuje žádné vícehodnotové závislosti.
  • Pátá normální forma (5NF): 5NF je nejvyšší úroveň normalizace a zahrnuje rozložení tabulky na menší tabulky, aby se odstranila redundance dat a zlepšila se integrita dat.

Normální formuláře pomáhají snížit redundanci dat, zvýšit konzistenci dat a zlepšit výkon databáze. Vyšší úrovně normalizace však mohou vést ke složitějším návrhům databází a dotazům. Při návrhu databáze je důležité najít rovnováhu mezi normalizací a praktičností.

Výhody normálního tvaru

  • Snížená redundance dat: Normalizace pomáhá eliminovat duplicitní data v tabulkách, snižuje množství potřebného úložného prostoru a zlepšuje efektivitu databáze.
  • Vylepšená konzistence dat: Normalizace zajišťuje, že data jsou uložena konzistentním a organizovaným způsobem, čímž se snižuje riziko nekonzistence a chyb v datech.
  • Zjednodušený návrh databáze: Normalizace poskytuje pokyny pro uspořádání tabulek a datových vztahů, což usnadňuje návrh a údržbu databáze.
  • Vylepšený výkon dotazů: V normalizovaných tabulkách se obvykle snáze vyhledávají a načítají data, což vede k rychlejšímu výkonu dotazů.
  • Jednodušší údržba databáze: Normalizace snižuje složitost databáze tím, že ji rozděluje na menší, lépe spravovatelné tabulky, což usnadňuje přidávání, úpravy a odstraňování dat.

Celkově použití normálních formulářů v DBMS pomáhá zlepšit kvalitu dat, zvýšit efektivitu databáze a zjednodušit návrh a údržbu databáze.

mysql zobrazit všechny uživatele

První normální forma

Pokud vztah obsahuje složený nebo vícehodnotový atribut, porušuje první normální formu nebo je vztah v první normální formě, pokud neobsahuje žádný složený nebo vícehodnotový atribut. Relace je v první normální formě, pokud je každý atribut v tomto vztahu jediný hodnotný atribut .



  • Příklad 1 – Vztah STUDENT v tabulce 1 není v 1NF kvůli vícehodnotovému atributu STUD_PHONE. Jeho rozklad na 1NF je znázorněn v tabulce 2.
Příklad

Příklad

  • Příklad 2 –
ID Name Courses ------------------ 1 A c1, c2 2 E c3 3 M C2, c3>
  • Ve výše uvedené tabulce je kurz atributem s více hodnotami, takže není v 1NF. Níže uvedená tabulka je v 1NF, protože neexistuje žádný atribut s více hodnotami
ID Name Course ------------------ 1 A c1 1 A c2 2 E c3 3 M c2 3 M c3>

Druhá normální forma

Aby byl vztah v druhé normální formě, musí být v první normální formě a vztah nesmí obsahovat žádnou částečnou závislost. Vztah je v 2NF, pokud má Žádná částečná závislost, tj. , žádný atribut, který není prvočíslem (atributy, které nejsou součástí žádného kandidátního klíče) není závislý na žádné správné podmnožině jakéhokoli kandidátského klíče tabulky. Částečná závislost - Pokud správná podmnožina kandidátského klíče určuje atribut, který není prvočíslem, nazývá se to částečná závislost.

  • Příklad 1 – Zvažte tabulku-3 následující níže.
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šimněte si, že existuje mnoho kurzů se stejným kurzovným} Zde nemůže COURSE_FEE sám rozhodnout o hodnotě COURSE_NO nebo STUD_NO; COURSE_FEE spolu s STUD_NO nemůže rozhodnout o hodnotě COURSE_NO; COURSE_FEE spolu s COURSE_NO nemůže rozhodnout o hodnotě STUD_NO; COURSE_FEE by tedy nebyl primární atribut, protože nepatří k jedinému kandidátnímu klíči {STUD_NO, COURSE_NO} ; Ale COURSE_NO -> COURSE_FEE, tj. COURSE_FEE závisí na COURSE_NO, což je správná podmnožina kandidátského klíče. Non-prime atribut COURSE_FEE je závislý na správné podmnožině kandidátního klíče, což je částečná závislost, takže tento vztah v 2NF není. Abychom převedli výše uvedený vztah na 2NF, musíme tabulku rozdělit do dvou tabulek, jako jsou: Tabulka 1: STUD_NO, COURSE_NO Tabulka 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 se snaží omezit nadbytečná data, která se ukládají do paměti. Pokud například kurz C1 navštěvuje 100 studentů, nemusíme ukládat jeho poplatek jako 1000 pro všech 100 záznamů, místo toho jej můžeme uložit do druhé tabulky, protože poplatek za kurz za C1 je 1000.
  • Příklad 2 – Zvažte následující funkční závislosti ve vztahu R (A, B , C, D )
AB ->C [A a B společně určují C] BC -> D [B a C společně určují D]>

Ve výše uvedeném vztahu je AB jediným kandidátním klíčem a neexistuje zde žádná částečná závislost, tj. žádná správná podmnožina AB neurčuje žádný atribut, který není prvočíslem.



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

Příklad 1: Ve vztahu STUDENT uvedený v tabulce 4, sada FD: {STUD_NO -> STUD_NAME, STUD_NO -> STUD_STATE, STUD_STATE -> STUD_COUNTRY, STUD_NO -> STUD_AGE}

Klíč kandidáta: {STUD_NO}

Pro tento vztah v tabulce 4 platí STUD_NO -> STUD_STATE a STUD_STATE -> STUD_COUNTRY.

STUD_COUNTRY je tedy přechodně závislá na STUD_NO. Porušuje třetí normální formu.

výměna paměti

Abychom jej převedli do třetího normálního tvaru, rozložíme vztah STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_COUNTRY_STUD_AGE) jako: STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_AGE) STATE_COUNTRY (STATE), COUNT

Uvažujme vztah R(A, B, C, D, E) A -> BC, CD -> E, B -> D, E -> A Všechny možné kandidátní klíče ve výše uvedeném vztahu jsou {A, E, CD, BC} Všechny atributy jsou na pravé straně všech funkčních závislostí jsou prvočísla.

Příklad 2: Najděte nejvyšší normální tvar vztahu R(A,B,C,D,E) s FD nastaveným jako {BC->D, AC->BE, B->E}

Krok 1: Jak vidíme, (AC)+ ={A,C,B,E,D}, ale žádná z jeho podmnožin nemůže určit všechny atributy vztahu, takže AC bude kandidátním klíčem. A nebo C nelze odvodit z žádného jiného atributu vztahu, takže bude existovat pouze 1 kandidátský klíč {AC}.

Krok 2: Prvotřídní atributy jsou atributy, které jsou v tomto příkladu součástí kandidátského klíče {A, C} a ostatní v tomto příkladu nebudou prvočíslo {B, D, E}.

Krok 3: Relace R je v 1. normální formě, protože relační DBMS neumožňuje vícehodnotový nebo složený atribut. Vztah je ve 2. normální formě, protože BC->D je ve 2. normální formě (BC není vlastní podmnožinou kandidátského klíče AC) a AC->BE je ve 2. normální formě (AC je kandidátský klíč) a B->E je ve 2. normální formě (B není správná podmnožina kandidátského klíče AC).

Vztah není ve 3. normální formě, protože v BC->D (ani BC není superklíč, ani D není prvočíslo) a B->E (ani B není superklíč, ani E není prvočíslo), ale splňují 3. normální hodnotu, protože buď LHS FD by měl být super klíč nebo RHS by měl být primární atribut. Takže nejvyšší normální forma vztahu bude 2. normální forma.

hashmap v jazyce Java

Uvažujme například vztah R(A, B, C) A -> BC, B -> A a B jsou oba super klíče, takže výše uvedený vztah je v BCNF.

Třetí normální forma

Říká se, že relace je ve třetí normální formě, pokud bychom neměli žádnou tranzitivní závislost pro neprvočíslé atributy. Základní podmínkou u třetí normální formy je, že vztah musí být ve druhé normální formě.

Níže je uvedena základní podmínka, která musí být dodržena v netriviální funkční závislosti X -> Y:

npm vymazat mezipaměť
  • X je super klíč.
  • Y je primární atribut (to znamená, že prvek Y je nějaká část kandidátského klíče).

Více viz Třetí normální forma v DBMS.

BCNF

BCNF (Boyce-Codd Normal Form) je jen pokročilá verze třetí normální formy. Zde máme některá další pravidla než třetí normální formulář. Základní podmínkou pro jakýkoli vztah, aby byl v BCNF, je, že musí být ve třetí normální formě.

Musíme se zaměřit na některá základní pravidla, která platí pro BCNF:

1. Table must be in Third Normal Form. 2. In relation X->Y, X musí být superklíč ve vztahu.>

Více viz BCNF v DBMS.

Čtvrtá normální forma

Čtvrtá normální forma neobsahuje žádnou netriviální vícenásobnou závislost kromě kandidátského klíče. Základní podmínkou čtvrté normální formy je, že vztah musí být v BCNF.

Základní pravidla jsou uvedena níže.

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

Více viz Čtvrtá normální forma v DBMS.

Pátá normální forma

Pátá normální forma se také nazývá promítnutá normální forma. Základní podmínky páté normální formy jsou uvedeny níže.

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

Více viz Pátá normální forma v DBMS.

Aplikace normálních forem v DBMS

  • Konzistence dat: Normální formuláře zajišťují, že data jsou konzistentní a neobsahují žádné nadbytečné informace. To pomáhá předcházet nesrovnalostem a chybám v databázi.
  • Redundance dat: Normální formuláře minimalizují redundanci dat organizováním dat do tabulek, které obsahují pouze jedinečná data. To snižuje množství úložného prostoru potřebného pro databázi a usnadňuje její správu.
  • Doba odezvy: Normální formuláře mohou zlepšit výkon dotazů snížením počtu spojení potřebných k načtení dat. To pomáhá urychlit zpracování dotazů a zlepšit celkový výkon systému.
  • Údržba databáze: Normální formuláře usnadňují údržbu databáze snížením množství nadbytečných dat, která je třeba aktualizovat, mazat nebo upravovat. To pomáhá zlepšit správu databáze a snížit riziko chyb nebo nesrovnalostí.
  • Návrh databáze: Normální formuláře poskytují pokyny pro navrhování databází, které jsou efektivní, flexibilní a škálovatelné. To pomáhá zajistit, že databázi lze podle potřeby snadno upravovat, aktualizovat nebo rozšiřovat.

Některé důležité body o normálních formulářích

  • BCNF je bez redundance způsobené funkčními závislostmi.
  • Pokud je vztah v BCNF, pak je splněna i 3NF.
  • Pokud jsou všechny atributy relace prvočíslem, pak je relace vždy v 3NF.
  • Relace v relační databázi je vždy a alespoň ve formě 1NF.
  • Každá binární relace (vztah s pouze 2 atributy) je vždy v BCNF.
  • Pokud má vztah pouze jednotlivé kandidátní klíče (tj. každý kandidátský klíč se skládá pouze z 1 atributu), pak je vztah vždy v 2NF (protože není možná žádná částečná funkční závislost).
  • Někdy přechod na formu BCNF nemusí zachovat funkční závislost. V takovém případě jděte na BCNF pouze v případě, že ztracené FD(y) není vyžadováno, jinak normalizujte pouze do 3NF.
  • Existuje mnohem více normálních forem, které existují po BCNF, jako je 4NF a další. Ale v databázových systémech v reálném světě se obecně nevyžaduje jít nad rámec BCNF.

Závěr

Závěrem lze říci, že relační databáze mohou být uspořádány podle sady pravidel nazývaných normální formy databáze administrace (1NF, 2NF, 3NF, BCNF, 4NF a 5NF), které snižují redundanci dat a zachovávají integritu dat. Vyřešením různých druhů datových anomálií a závislostí se každá následující normální forma rozšiřuje na tu, která před ní byla. Konkrétní požadavky a vlastnosti ukládaných dat určují, která normální forma by měla být použita; vyšší normální formy nabízejí přísnější integritu dat, ale mohou také vést ke složitějším databázovým strukturám.

Odkazy na otázky z minulého roku

  • 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é dotazy v normálním formuláři

Otázka 1: Proč je v DBMS důležitá normalizace?

Odpovědět:

Normalizace pomáhá předcházet anomáliím databáze, což v konečném důsledku zajišťuje konzistenci databáze a pomáhá při snadné údržbě databáze.

Q.2: Je možné přenormalizovat databázi?

Odpovědět:

Ano, nadměrná normalizace půjde na složité dotazy a také sníží výkon. Vytváří rovnováhu mezi normalizací a praktičností.

Otázka 3: Je nutné normalizovat databázi na nejvyšší normální formu (BCNF nebo 4NF)?

Odpovědět:

Neexistuje žádná určitá nutná podmínka pro jakoukoli normalizaci databáze. Pro konkrétní výkon a jednoduchost může často stačit nižší forma.