Normalizace
Sada pravidel, jak postupovat při transformaci struktury entit a relací E-R modelu na strukturu fyzického uspořádání tabulek a relací v databázi.
Proč normalizovat? Redundance – ukládání stejné informace víckrát na různých místech (zvyšuje prostorové nároky) Omezení složitosti Zabránění tzv. aktualizačních anomálií (insert/delete/update) při vložení dat příslušejících jedné entitě je potřeba zároveň vložit data i o jiné entitě Vymazání údajů např. o knize ztratíme data o autorovi knihy pokud se změní jedna kopie redundantních dat, je třeba změnit i ostatní kopie, jinak se databáze stane nekonzistentní Normalizace by měla vést ke vzniku tabulek, které lze dobře udržovat a efektivně se na ně dotazovat.
Příklad „nenormalizovaného“ schématu ZamId Jméno Funkce Hodinová mzda Odpracoval hodin 1 Radek Rachota účetní 200 50 2 František Dobrota obchodník 500 30 3 Jiří Loukota 45 4 Václav Levota 70 5 Josef Drahota 66 6 Pavel Měkota lektor 300 10 1) Funkce určuje hodinovou mzdu – přesto se mzda opakuje – redundance. 2) Smažeme-li záznam o zaměstnanci 6, ztratíme rovněž informaci o mzdě lektora. 3) Změníme-li mzdu funkce „účetní“, musíme tak učinit na třech místech.
13458 Nokia 6110 Finsko EU, USA 34654 65454 45464 Siemens SX1 Německo Sériové číslo Výrobce Model Made in Atest 13458 Nokia 6110 Finsko EU, USA 34654 65454 45464 Siemens SX1 Německo EU 64654 Samsung E720 Taiwan Asie, USA 65787 Redundance hodnot atributu Výrobce, Model, Made in, Atest Entita Mobil skrývá další entity – Výrobce, Model, případně další...
1. normální forma (1.NF) Relace je v první normální formě, pokud každý její atribut obsahuje jen atomické hodnoty. Tedy hodnoty z pohledu databáze již dále nedělitelné. ID Jméno Příjmení Adresa Telefony Havlíčkova 8, Praha 3, 180 00 123045,365214,564879, Jak provést změnu tel, čísla. Jak vyhledat osoby žijící v Praze 3 apod. Řešení: rozpad na dvě tabulky: Osoba (s atributy: ulice, město, PSČ) a tabulka Telefony (ID, tel_číslo)
2.normální forma (2.NF) Relace se nachází v druhé normální formě, pokud je v 1NF a každý neklíčový atribut je plně závislý na primárním klíči, a to na celém klíči a nejen na nějaké jeho podmnožině. Název_výrobku Výrobce tel_výrobce Cena Množství Primárním klíčem je kombinace atributů Název_výrobku a výrobce. Atribut tel_výrobce není závislý na názvu výrobku. Při aktualizaci tel. čísla jednoho výrobce musím změnit více řádků, odstraněním záznamu o prodeji, můžu odstranit i kontakt na výrobce. Řešení: rozpad na dvě tabulky: Výrobek (Název_výrobku, ID_výrobce, cena, množství), Výrobce (ID_výrobce, název, telefon)
3.normální forma (3.NF) Tabulka je v 3 normální formě pokud je ve 2NF a žádný z jejich atributů není tranzitivně závislí na klíči (tzn. Že všechny neklíčové atributy jsou navzájem nezávislé). Tranzitivní závislost je taková závislost, mezi minimálně dvěma atributy a klíčem, kde jeden atribut je funkčně závislí na klíči a druhý atribut je funkčně závislí na prvním. Rod_číslo Jméno Příjmení Město PSČ Funkce plat Neklíčové atributy město a PSČ jsou na sobě závislé, stejně tak jako funkce a plat. Řešení: rozpad na tři tabulky: Zaměstnanec (Rod_cis, jméno, příjmení, ID_město, ID_funkce) Funkce (ID_funkce, název_funkce, plat) a město (ID_město, název_město, PSČ)
Boyce Coddova normální forma (BCNF) Boyce/Coddova normální forma se pokládá za variaci třetí normální formy. Boyce/Coddova normální forma říká, že mezi kandidátními klíči nesmí být žádná funkční závislost. Aby byla porušena BCNF musí být splněno několik podmínek a to poměrně specifických: Relace musí mít více kandidátních klíčů Minimálně 2 kandidátní klíče musí být složené z více atributů Některé složené kandidátní klíče musí mít společný atribut. Kandidátní klíč je atribut, který také jednoznačně identifikuje každý řádek relace, ale není zvolen PK
Číslo_Dod. Jméno_Dod. Číslo_výr. Množství cena Kandidátní klíč je složený: číslo_Dod.,číslo_výr. nebo jméno_Dod, číslo_výr. Mezi položkami číslo_Dod a jméno_Dod. Je funkční závislost. Řešení: rozpad na dvě relace: Výrobek (číslo_výr, číslo_Dod, množství, cena) a Dodavatel (číslo_Dod, název_Dod
Čtvrtá normální forma (4.NF) Tabulka je ve čtvrté normální formě, je-li v BCNF a popisuje pouze příčinnou souvislost. všechny vícehodnotové závislosti jsou zároveň funkčními závislostmi z kandidátních klíčů (zjednodušeně: v jedné relaci se nesmí spojovat nezávislé opakované skupiny). “
Pátá normální forma (5.NF) Relace je v páté normální formě, pokud je ve 4NF a není možné do ní přidat další atribut (skupinu atributů) tak, aby se vlivem skrytých závislostí rozpadla na několik dílčích relací.
Všeho s mírou