150 likes | 301 Views
Normalizácia. Čo je normalizácia ?. Normalizácia je postup, ktorým sa postupne určuje štruktúra tabuľky tak, aby pri spracovaní dát nevznikali žiadne problémy. Je to činnosť, ktorá vedie k dobre navrhnutým tabuľkám.
E N D
Čo je normalizácia ? • Normalizácia je postup, ktorým sa postupne určuje štruktúra tabuľky tak, aby pri spracovaní dát nevznikali žiadne problémy. • Je to činnosť, ktorá vedie k dobre navrhnutým tabuľkám. • Princípy normalizácie definoval E. F. Codd a nie je to suchá teória. Boli overené praxou a za tie dlhé roky tvorby databázových aplikácií sa vypracovali určité postupy tvorby tabuliek, ktoré sa nazývajú normálne formy. • Najčastejšie sa používajú prvé tri normálne formy
Príklad • V nemenovanej štátnej inštitúcii je archív objednávok. • Slečna referentka (ktorá je naša kamarátka) sa v tom už nevyzná, a tak sme jej sľúbili, že pre ňu vytvoríme program, ktorý jej bude tieto objednávky evidovať.
Nenormalizovaná forma Tabuľka: Objednávky O objednávke budeme evidovať pravdepodobne tieto údaje: Číslo objednávky, Kód tovaru na objednávke, Dátum objednávky, Počet kusov tovaru, Cenu tovaru a Údaje o dodávateľovi. Dáta v tabuľke sú v nenormalizovanej forme, pokiaľ sa v nich nachádzajú opakujúce sa atribúty, ktoré nie sú atomické. Ak niektorá časť tabuľky je opäť tabuľka, potom je výsledná tabuľka v nenormalizovanej forme. Proces normalizácie začína 1NF a preto je potrebné najskôr previesť dáta z NF do 1NF.
Prvá normálna forma 1NF Tabuľka: Objednávky v 1NF • Tabuľka je v 1NF ak všetky atribúty sú ďalej nedeliteľné (atomické) t.j. iba jednoduché atribúty. • nie sú povolené viachodnotové atribúty • nie sú povolené zložené atribúty. • Odstránime zložený atribút Dodávateľ a rozložíme ho na stĺpce, ktoré pridáme do tabuľky. Teraz je tabuľka v 1NF.
Prvá normálna forma 1NF • ZARADENIE (INSERT) – nemôžeme zaradiť nového dodávateľa, pokiaľ nedodáva aspoň jeden tovar • ZRUŠENIE (DELETE) – ak dodávateľ prestane dodávať nejaký tovar je potrebné zrušiť tento vzťah. V prípade, že je to posledný výrobok, zrušia sa aj všetky informácie o dodávateľovi, čo nie je výhodné. • AKTUALIZÁCIA (UPDATE) – informácie o jednom dodávateľovi sa vyskytujú viac krát. Ich odstránením sa dostaneme do druhej normálnej formy. Možné problémy pri základných operáciách:
Prvá normálna forma 1NF V tabuľke Objednávky existujú rôzne závislosti • CENA_TOVARU závisí od KOD_TOVARU • POCET závisí od CISLO_OBJ a KOD_TOVARU • Informácie o dodávateľovi sú závislé od CISLO_OBJ
Druhá normálna forma 2NF Objednávky v 2NF Tabuľka je v 2NF ak je v 1NF a každý nekľúčový atribút je závislý iba na primárnom kľúči. 2NF získame tak, že vytvoríme tri samostatné tabuľky.
Unikátny identifikátor • Nanešťastie ešte nemáme opísané vzťahy medzi oboma entitami. Na to potrebujeme zadefinovať akýsi unikátny identifikátor. • Bude to nový atribút entity, ktorý bude mať tieto vlastnosti: • Bude unikátny v celej tabuľke, opisujúcej danú entitu. To znamená, že sa v celej tabuľke nenájdu dva riadky, ktoré by mali rovnakú hodnotu tohto atribútu. • Jeho hodnota nesmie byť prázdna po celý čas existencie tabuľky. • Už raz zadaná hodnota tohto identifikátora sa nesmie v danom riadku tabuľky nikdy zmeniť po dobu existencie tabuľky. • My už v podstate tento identifikátor poznáme. Je ním nám dobre známy primárny kľúč.
Primárny kľúč • Základom úspechu je správne zvoliť primárny kľúč. Začiatočníci robia často chybu v tom, že za primárny kľúč vyberú napr. priezvisko. • My však vieme, že existujú ľudia, ktorí majú rovnaké priezvisko. • Existuje pravidlo, ktoré hovorí, že primárny kľúč by mal byť čo najmenší. Preto je veľmi vhodné zvoliť ako primárny kľúč číslo, ale nemusí to tak byť. V našej tabuľke sme si pre lepšiu orientáciu zvolili v niektorých tabuľkách aj primárne kľúče zložené z písmena a čísla. • Primárny kľúč môže byť zložený aj z viacerých atribútov – to závisí od konkrétnej aplikácie. • Upravíme diagramy tak, že do každej entity vložíme resp. si v nej zvolíme identifikátor, ktorý bude primárnym kľúčom tabuľky a označíme ho podčiarknutím
Unikátny identifikátor Objednávky v 2NF
Druhá normálna forma 2NF • ZARADENIE (INSERT) – nemôžeme zaradiť nového dodávateľa, ak je udaná iba jeho adresa (je potrebné poznať číslo objednávky) • ZRUŠENIE (DELETE) – ak zrušíme informácie o dodávateľovi stratíme informácie aj o dodávkach, resp. ak zrušíme číslo objednávky stratíme informácie o dodávateľovi • AKTUALIZÁCIA (UPDATE) – ak sa zmení napr. adresa dodávateľa, potom je potrebné vykonať aktualizáciu vo všetkých výskytoch informácií o dodávateľovi Aj tabuľky v 2NF môžu ešte vykazovať problémy. Podobne je tomu aj v prípade HLAV_OBJ. Sú podobné, ako ich vykazovala 1NF pri operácii s dátami. HLAV_OBJ vykazuje tranzitné závislosti.
Tretia normálna forma 3NF • Tabuľka je v 3NF ak je v 2NF a žiaden nekľúčový atribút tranzitne nezávisí na primárnom kľúči. • Tranzitívna závislosť znamená, že hodnoty atribútov nezávisia iba na primárnom kľúči, ale aj na hodnotách iných atribútov, ktoré sú zase závislé na primárnom kľúči. • Inak povedané, 3NF znamená, že žiadne stĺpce v tabuľke nie sú závislé na inom stĺpci, ktorý závisí od primárneho kľúča. • V našom prípade túto podmienku nespĺňa tabuľka HLAV_OBJ, pretože atribúty MENO_DOD a ADR_DOD sú závislé od atribútu KOD_DOD. Preto tieto atribúty oddelíme a vytvoríme novú tabuľku.
Tretia normálna forma 3NF Objednávky v 3NF
Vzťahy medzi tabuľkami m:n 1:n 1:n 1:n