Skip to main content

Vložení databáze do prvního normálního formuláře

108 - Normalizace - Dějiny udatného českého národa (Smět 2024)

108 - Normalizace - Dějiny udatného českého národa (Smět 2024)
Anonim

První normální formulář (1NF) nastavuje základní pravidla pro organizovanou databázi:

  • Odstraňte duplicitní sloupce ze stejné tabulky.
  • Vytvořte oddělené tabulky pro každou skupinu souvisejících dat a identifikujte každý řádek s jedinečným sloupcem (primární klíč).

Jaká jsou tato pravidla při zvažování praktického návrhu databáze? Je to docela jednoduché.

Odstranění duplikace

První pravidlo diktuje, že nesmíme duplikovat data ve stejném řádku tabulky. V databázové komunitě se tento pojem označuje jako atomicita tabulky. Tabulky, které vyhovují tomuto pravidlu, jsou atomové. Prozkoumejte tento princip klasickým příkladem: tabulka v databázi lidských zdrojů, která ukládá vztah správce-podřízený. Pro účely našeho příkladu uložíme obchodní pravidlo, že každý správce může mít jednoho nebo více podřízených, zatímco každý podřízený může mít pouze jednoho správce.

Intutivně při vytváření seznamu nebo tabulky pro sledování těchto informací můžeme vytvořit tabulku s následujícími poli:

  • Manažer
  • Podřízený1
  • Subordinate2
  • Podřízené3
  • Podřízené4

Nicméně připomenout první pravidlo uložené 1NF: Odstranit duplicitní sloupce ze stejné tabulky. Je zřejmé, že sloupce Podřízené1-Podřízené4 jsou duplicitní. Udělejte si chvíli a zamyslete se nad problémy, které tento scénář vyvolává. Pokud má správce pouze jednoho podřízeného, ​​sloupce Podřízený2-podřízený4 jsou prostě zbytečnými úložnými prostory (vzácná databázová komodita). Dále si představte případ, kdy má manažer již 4 podřízené - co se stane, pokud převezme jiného zaměstnance? Celá tabulková struktura by vyžadovala úpravu.

V tomto okamžiku se druhým jasným nápadům obvykle objevují nováčci v databázi: Nechceme mít více než jeden sloupec a chceme umožnit flexibilní ukládání dat. Zkusme něco takového:

  • Manažer
  • Podřízené osoby

A pole Podřízené by obsahovalo více záznamů ve tvaru "Mary, Bill, Joe".

Toto řešení je blíže, ale také nedosahuje známky. Podřízený sloupec je stále duplicitní a neatomický. Co se stane, když potřebujeme přidat nebo odebrat podřízeného? Musíme přečíst a zapsat celý obsah tabulky. V této situaci to není velký problém, ale co když jeden manažer má sto zaměstnanců? Také komplikuje proces výběru dat z databáze v budoucích dotazech.

Zde je tabulka, která splňuje první pravidlo 1NF:

  • Manažer
  • Podřízený

V tomto případě má každý podřízený jediný záznam, ale manažeři mohou mít více záznamů.

Určete primární klíč

A co druhé pravidlo: identifikujte každý řádek pomocí jedinečného sloupce nebo sady sloupců (primárního klíče). Můžete se podívat na tabulku výše a navrhnout použití podřízeného sloupce jako primárního klíče. Ve skutečnosti je podřízený sloupec vhodným kandidátem na primární klíč vzhledem k tomu, že naše obchodní pravidla specifikují, že každý podřízený může mít pouze jednoho správce. Údaje, které jsme se rozhodli uložit do tabulky, však činí toto méně než ideální řešení. Co se stane, když najmeme jiného zaměstnance jménem Jim? Jak ukládáme v databázi svůj podřízený manažer?

Nejlepší je použít jako primární klíč skutečně jedinečný identifikátor (například ID zaměstnance). Náš finální stůl by vypadal takto:

  • ID manažera
  • Podřízené ID

Nyní je náš stůl v první normální podobě! Kromě toho existují možnosti pro uvedení vaší databáze do druhého normálního formuláře a třetího normálního formuláře, pokud jste nadšeni ještě větší organizací.