Uvedení databáze do první normální formy
První normální forma (1NF) má dvě základní pravidla pro a normalizovaná a organizovaná databáze. Prvním je odstranění duplicitních sloupců ze stejné tabulky. Druhým je vytvořit samostatné tabulky pro každou skupinu souvisejících dat a identifikovat každý řádek pomocí jedinečného sloupce (primárního klíče). Co tato pravidla znamenají při zvažování praktického návrhu databáze?
Eliminujte duplikaci
První pravidlo nařizuje, že nesmíme duplikovat data ve stejném řádku tabulky. V rámci databázové komunity je tento koncept označován jako atomicita tabulky. Stoly, které tomuto pravidlu vyhovují, jsou označovány za atomové.
Prozkoumejme tento princip na klasickém příkladu: tabulkou v databázi lidských zdrojů, která uchovává vztah manažer-podřízený. Pro účely našeho příkladu zavedeme obchodní pravidlo, že každý manažer může mít jednoho nebo více podřízených, zatímco každý podřízený může mít pouze jednoho manažera.
Při vytváření seznamu nebo tabulky pro sledování těchto informací můžeme intuitivně vytvořit tabulku s následujícími poli:
- Manažer
- Podřízený1
- Podřízený2
- Podřízený3
- Podřízený4
Připomeňme si však první pravidlo uložené 1NF: Odstraňte duplicitní sloupce ze stejné tabulky. Je zřejmé, že sloupce Podřízený1 až Podřízený4 jsou duplicitní. Udělejte si chvilku a zamyslete se nad problémy, které tento scénář vyvolává.
Pokud má manažer pouze jednoho podřízeného, jsou sloupce Subordinate2 až Subordinate4 plýtváním úložným prostorem (vzácná databázová komodita). Dále si představte případ, kdy má manažer čtyři podřízené. Co se stane, když přijmou jiného zaměstnance? Struktura tabulky by vyžadovala úpravu.
V tomto okamžiku obvykle napadne nováčkům v databázích druhá jasná myšlenka: Nechceme mít více než jeden sloupec a chceme umožnit flexibilní množství dat; zkusme něco takového:
- Manažer
- Podřízení
A pole Podřízení by obsahovalo více položek ve formě "Mary, Bill, Joe."
Toto řešení je bližší, ale také nedosahuje úrovně. Sloupec podřízených je stále duplicitní a neatomický. Co se stane, když potřebujeme přidat nebo odebrat podřízeného? Potřebujeme přečíst a zapsat celý obsah tabulky. To není v této situaci velký problém, ale co kdyby jeden manažer měl sto zaměstnanců? Také to 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ý jeden záznam, ale manažeři mohou mít více záznamů.
Identifikujte primární klíč
A co druhé pravidlo: Identifikujte každý řádek jedinečným sloupcem nebo sadou sloupců ( primární klíč). Můžete se podívat na tabulku výše a navrhnout použití sloupce Podřízený jako primárního klíče. Ve skutečnosti je sloupec Podřízený dobrým kandidátem na primární klíč, protože naše obchodní pravidla stanovila, že každý podřízený může mít pouze jednoho manažera.
Nicméně data, která jsme se rozhodli uložit do naší tabulky, z toho dělají méně než ideální řešení. Co se stane, když najmeme dalšího zaměstnance jménem Jim? Jak uložíme jeho vztah manažer-podřízený do databáze?
Nejlepší je použít jedinečný identifikátor, např ID zaměstnance jako primární klíč. Náš finálový stůl by vypadal takto:
- ID manažera
- Podřízené ID
Nyní je náš stůl v první normální podobě. Kromě toho jsou zde možnosti, jak umístit svůj databáze ve druhé normální formě, stejně jako v Třetí normální forma pokud jste nadšení z větší organizace.