Normalizácia

15
Normalizácia

description

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. - PowerPoint PPT Presentation

Transcript of Normalizácia

Page 1: Normalizácia

Normalizácia

Page 2: 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.

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

Page 3: Normalizácia

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ť.

Page 4: Normalizácia

Nenormalizovaná formaCISLO_OBJ KOD_TOVARU DATUM_OBJ POCET CENA_TOVARU

DODAVATEL

KOD MENO ADR

1234 A34 930218 150 4 S46 Novák NR

1234 A47 930218 4 50 S46 Novák NR

1459 A34 930415 200 4 S46 Novák NR

1368 A49 930219 5 40 S50 Peterka ZA

1368 A50 930219 20 15 S50 Peterka ZA

1368 A34 930219 200 4 S50 Peterka ZA

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.

Tabuľka: Objednávky

Page 5: Normalizácia

Prvá normálna forma 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.

Tabuľka: Objednávky v 1NF

CISLO_OBJ KOD_TOVARU DATUM_OBJ POCET CENA_TOVARU KOD_DOD MENO_DOD ADR_DOD

1234 A34 930218 150 4 S46 Novák NR

1234 A47 930218 4 50 S46 Novák NR

1459 A34 930415 200 4 S46 Novák NR

1368 A49 930219 5 40 S50 Peterka ZA

1368 A50 930219 20 15 S50 Peterka ZA

1368 A34 930219 200 4 S50 Peterka ZA

Page 6: Normalizácia

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:

Page 7: Normalizácia

Prvá normálna forma 1NF

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

V tabuľke Objednávky existujú rôzne závislosti

Page 8: Normalizácia

Druhá normálna forma 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.

Objednávky v 2NF

TOVAR POLOZKA_OBJ HLAV_OBJ

KOD_TOVARU

CENA_TOVARU

CISLO_OBJ

KOD_TOVARU

POCET

CISLO_OBJ

DATUM_OBJ

KOD_DOD MENO_DOD

ADR_DOD

A34 4 1234 A34 150 1234 930218 S46 Novák NR

A47 50 1234 A47 4 1459 930415 S46 Novák NR

A49 40 1459 A34 200 1368 930219 S50 Peterka ZA

A50 15 1368 A49 5

1368 A50 20

1368 A34 200

Page 9: Normalizácia

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ľúč.

Page 10: Normalizácia

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

Page 11: Normalizácia

Unikátny identifikátor

Objednávky v 2NF

TOVAR POLOZKA_OBJ HLAV_OBJ

KOD_TOVARU

CENA_TOVARU

CISLO_OBJ

KOD_TOVARU

POCET

CISLO_OBJ

DATUM_OBJ

KOD_DOD MENO_DOD

ADR_DOD

A34 4 1234 A34 150 1234 930218 S46 Novák NR

A47 50 1234 A47 4 1459 930415 S46 Novák NR

A49 40 1459 A34 200 1368 930219 S50 Peterka ZA

A50 15 1368 A49 5

1368 A50 20

1368 A34 200

Page 12: Normalizácia

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.

Page 13: Normalizácia

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.

Page 14: Normalizácia

Tretia normálna forma 3NF

Objednávky v 3NF

TOVAR POLOZKA_OBJ OBJ DODAVATEL

KOD_TOVARU

CENA_TOVARU

CISLO_OBJ

KOD_TOVARU

POCET

CISLO_OBJDATUM_OBJ

KOD_DOD KOD_DOD

MENO_DOD

ADR_DOD

A34 4 1234 A34 150 1234 930218 S46 S46 Novák NR

A47 50 1234 A47 4 1459 930415 S46 S50Peterk

a ZA

A49 40 1459 A34 200 1368 930219 S50

A50 15 1368 A49 5

1368 A50 20

1368 A34 200

Page 15: Normalizácia

Vzťahy medzi tabuľkami

TOVAR

KOD_TOVARU

CENA_TOVARU

A34 4

A47 50

A49 40

A50 15

OBJ

CISLO_OBJDATUM_OB

JKOD_DO

D

1234 930218 S46

1459 930415 S46

1368 930219 S50

POLOZKA_OBJ

CISLO_OBJ KOD_TOVARU POCET

1234 A34 150

1234 A47 4

1459 A34 200

1368 A49 5

1368 A50 20

1368 A34 200

DODAVATEL

KOD_DOD MENO_DOD ADR_DOD

S46 Novák NR

S50 Peterka ZA

1:n

1:n

1:n

m:n