Normalizace databáze: První normální formulář

Tato dvě jednoduchá pravidla pomohou normalizovat vaši databázi

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

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

1. Odstraňte duplikaci

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:

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:

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:

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

2. Určete primární klíč

A co druhé pravidlo: identifikujte každý řádek s jedinečným sloupcem nebo sadou sloupců ( primárním klíčem )? 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:

Nyní je náš stůl v první normální podobě! Pokud chcete pokračovat v učení o normalizaci, přečtěte si další články této série: