Pokud už nějakou dobu pracujete s databázemi, je pravděpodobné, že jste slyšeli termín normalizace. Možná se vás někdo zeptal: „Je ta databáze normalizovaná?“ nebo „Je to v BCNF?“ Normalizace je často považována za luxus, na který mají čas jen akademici. Znát principy normalizace a aplikovat je na každodenní úlohy návrhu databáze však není tak složité a mohlo by to drasticky zlepšit výkon vašeho DBMS. V tomto článku představíme koncept normalizace a krátce se podíváme na nejběžnější normální formy.
Co je normalizace?
Normalizace je proces efektivní organizace dat v databázi. Proces normalizace má dva cíle: eliminovat nadbytečná data (například ukládat stejná data do více než jedné tabulky) a zajistit, aby závislosti na datech měly smysl (pouze ukládání souvisejících dat do tabulky). Oba jsou hodné cíle, protože snižují velikost prostoru, který databáze zabírá, a zajišťují logické ukládání dat.
Normální formy
Komunita databáze vyvinula řadu pokynů pro zajištění normalizace databází. Ty se označují jako normální formy a jsou očíslovány od jedné (nejnižší forma normalizace, označovaná jako první normální forma nebo 1NF) do pěti (pátá normální forma nebo 5NF). V praktických aplikacích často uvidíte 1NF, 2NF a 3NF spolu s příležitostnými 4NF. Pátá normální forma je viděna velmi zřídka a v tomto článku o ní nebudeme hovořit. Než začneme diskutovat o normálních formách, je důležité zdůraznit, že se jedná pouze o pokyny a pokyny. Občas je nutné se od nich odchýlit, abychom splnili praktické obchodní požadavky. Když však dojde ke změnám, je nutné vyhodnotit případné důsledky, které by ve vašem systému mohly mít, a zohlednit potenciální nesrovnalosti. To znamená, pojďme prozkoumat normální formy.
První normální forma (1NF)
První normální forma (1NF) stanoví základní pravidla pro organizovanou databázi:
- Eliminujte duplicitní sloupce ze stejné tabulky.
- Vytvořte samostatné tabulky pro každou skupinu souvisejících dat a každý řádek označte jedinečným sloupcem nebo sadou sloupců (primární klíč).
Druhá normální forma (2NF)
Druhá normální forma (2NF) se dále zabývá konceptem odstraňování duplicitních dat:
- Splňte všechny požadavky první normální formy.
- Odeberte podmnožiny dat, které se vztahují na více řádků tabulky, a umístěte je do samostatných tabulek.
- Vytvářejte vztahy mezi těmito novými tabulkami a jejich předchůdci pomocí cizích klíčů.
Třetí normální forma (3NF)
Třetí normální forma (3NF) jde o významný krok dále:
- Splňte všechny požadavky druhé normální formy.
- Odeberte sloupce, které nejsou závislé na primárním klíči.
Boyce-Codd normální forma (BCNF nebo 3,5NF)
Normální forma Boyce-Codd, označovaná také jako „třetí a poloviční (3,5) normální forma“, přidává ještě jeden požadavek:
- Splňte všechny požadavky třetí normální formy.
- Každý determinant musí být klíčem kandidáta.
Čtvrtý normální tvar (4NF)
Konečně čtvrtá normální forma (4NF) má jeden další požadavek:
- Splňte všechny požadavky třetí normální formy.
- Relace je v 4NF, pokud nemá žádné vícehodnotové závislosti.
Pamatujte, že tyto normalizační pokyny jsou kumulativní. Aby byla databáze v 2NF, musí nejprve splňovat všechna kritéria databáze 1NF.
Mám normalizovat?
I když je normalizace databáze často dobrý nápad, není to absolutní požadavek. V některých případech je dobrým postupem úmyslné porušení pravidel normalizace. Pokud se chcete ujistit, že je vaše databáze normalizována, začněte tím, že se naučíte, jak dát databázi do prvního normálního formuláře.