6 - Normalizacija

  • Upload
    roki90

  • View
    28

  • Download
    1

Embed Size (px)

Citation preview

BAZE PODATAKA Predavanje 3/03/2010 6. Normalizacija

http://www.riteh.hr/zav_katd_sluz/zr/nastava/bp

Prola predavanja

Uvod u baze podataka DBMS Relacijski model Relacijska algebra Modeliranje podataka Model entiteti-veze (ER model) Preslikavanje ER-modela u relacije

Gdje smo sada

Analiza zahtjeva (requirements analysis) Projektiranje

Modeliranje podataka Projektiranje logike strukture Projektiranje fizike strukture

Implementacija Testiranje Odravanje

Sadraj predavanja

Operacija pridruivanja (Join) Normalizacija

Join

Join

join je sloena operacija izmeu dvije relacije kojom se kombiniraju polja iz tih tablica prema vrijednostima koja sadre moemo je prikazati kroz dva koraka:1. vri se Kartezijev produkt dviju relacija 2. izdvaja se podskup n-torki

zavisno od tipa join operacije moe se izvriti i trei korak:3. iz dobivene tabele izdvajaju se odreeni stupci

Razlikujemo sljedee tipove join operacije:

inner join (equi-join, natural join, cross join) outer join (left, right, full) self join

Joinprimjeri na ploi

Normalizacija

Redundancija

Redundantni podaci

isti podaci postoje u bazi na dva razliita mjesta (direktna redundancija) mogu se utvrditi iz ostalih podataka u bazi (indirektna redundancija)

Redundantni podaci mogu biti uzrok raznih problema. Izmeu ostalog stvaraju anomalije prilikom:

ubacivanja novih podataka (INSERT) auriranja podataka (UPDATE) brisanja podataka (DELETE)

Normalizacija

je proces kojime se nastoji eliminirati redundancija, ali tako da se sauva integritet podataka u bazi redundancija se izraava kroz pojam funkcijske zavisnosti definiraju se normalne forme (NF)

prva NF, druga NF itd. svaka normalna forma garantira da nema odreenog tipa zavisnosti svaka via NF ukljuuje prethodnu NF te dodatno ureuje model, tj. eliminira dodatne redundantnosti

Prva normalna forma

Relacija je u 1NF ako su sve domene atributa u relaciji skalari to to znai?

to znai da polja u tabeli trebaju sadravati jednu vrijednost, a ne skup sloenih objekata to znai da relacija ne treba sadravati ponavljajue grupe atributa Primjeri: nadnevak, razni sloeni kodovi, bitflag, itd. Primjeri: ponavljajue grupe atributa

Nije uvijek jasna situacija

Normalizacija u 1NF

relaciju pretvarimo u 1NF tako da podijelimo ne-skalarne vrijednosti

Prije normalizacije:

1NF

kolegij K1 K2 K3 K4 K5

zavod Z1 Z1 Z1 Z2 Z2

predava P1 P1 P2 P3 P4

udbenik U1,U2 U1,U3 U4 U1,U5 U6

kolegij K1 K1 K2 K2 K3 K4 K4 K5

zavod Z1 Z1 Z1 Z1 Z1 Z2 Z2 Z2

predava P1 P1 P1 P1 P2 P3 P3 P4

udbenik U1 U2 U1 U3 U4 U1 U5 U6

Problemi sa 1NF

Ostaju neki problemi: Anomalija ubacivanja

1NF

kolegij K1 K1 K2 K2 K3 K4 K4 K5

zavod Z1 Z1 Z1 Z1 Z1 Z2 Z2 Z2

predava P1 P1 P1 P1 P2 P3 P3 P4

udbenik U1 U2 U1 U3 U4 U1 U5 U6

ne mogu dodati kolegij bez udbenika da bi promijenio predavaa za kolegij K1 moram promijeniti 2 reda ako pobriem K3, briem i P2

Anomalija auriranja

Anomalija brisanja

Funkcijske zavisnosti

Redundancije su esto uzrokovane funkcijskim zavisnostima (FZ) Funkcijska zavisnost je veza izmeu dva skupa atributa u relaciji Relaciju moemo normalizirati tako da uklonimo neeljenu funkcijsku zavisnost Def: skup atributa B je funkcijski zavisan od skupa atributa A (A funkcijski odreuje B) ako svaki puta kada dva reda imaju iste vrijednosti za sve atribute u A, onda imaju iste vrijednosti za sve atribute u B.

Funkcijske zavisnosti Primjer

{ID, brKolegija} -> {Ime, Prezime, imeKolegija} {brKolegija} -> {imeKolegija} {ID} -> {Ime, Prezime}

ID 3 7

ime Ivo Ana

prezime Ivi Andri

brKolegija 61655 61651

imeKolegija BP OS

FZ i normalizacija

definira se skup normalnih formi

svaka normalna forma ima manje funkcijskih zavisnosti od prethodne poto funkcijske zavisnosti predstavljaju redundancije => svaka normalna forma ima manje redundancija od prethodne normalne forme uklanjaju one funkcijske zavisnosti koje su problem

nisu sve funkcijske zavisnosti problem

Svojstva FZ

u svakoj relaciji

primarni klju funkcijski odreuje sve skupove atributa u toj relaciji (K-klju, X-skup atributa)KX

isto vrijedi i za kandidantne kljueve svaki skup atributa je FZ o samom sebiXX

pravila:

Refleksivnost (reflexivity) Ako je XY onda: XY (trivijalno pravilo) Proirenje (augmentation) Ako vrijedi XY, onda: XZYZ Tranzitivnost (transitivity) Ako vrijedi XY i YZ, onda: XZ

Funkcijske zavisnosti Primjer1NF

kolegij K1 K1 K2 K2 K3 K4 K4 K5

zavod Z1 Z1 Z1 Z1 Z1 Z2 Z2 Z2

predava P1 P1 P1 P1 P2 P3 P3 P4

udbenik U1 U2 U1 U3 U4 U1 U5 U6

Primarni klju je {kolegij, udbenik} pa je onda: {kolegij, udbenik} {zavod, predava}

Trivijalne funkcijske zavisnosti: {udbenik, zavod} {udbenik} {zavod} {zavod} {zavod, predava} {}

Funkcijske zavisnosti Primjer1NF

kolegij K1 K1 K2 K2 K3 K4 K4 K5

zavod Z1 Z1 Z1 Z1 Z1 Z2 Z2 Z2

predava P1 P1 P1 P1 P2 P3 P3 P4

udbenik U1 U2 U1 U3 U4 U1 U5 U6

Ostale ne-trivijalne funkcijske zavisnosti: {kolegij} {predava} {kolegij} {zavod} {predava} {zavod}

Obratiti panju: lijeva strana navedenih FZ nije klju

Druga normalna forma

A je skup atributa i vrijedi A B

ako moemo skinuti neki atribut iz A da FZ i dalje vrijedi onda je FZ djelomina funkcijska zavisnost atribute koji su dio nekog kandidatnog kljua zovemo kljuni atributi a ostale ne-kljuni atributi

Relacija je u drugoj normalnoj formi (2NF) ako je u 1NF i ako ni jedan ne-kljuni atribut nije djelomino zavisan o kljuu

drugim rijeima nema CB gdje je C podskup od kandidatnog kljua, a B ne-kljuni atribut odnosno svi ne-kljuni atributi moraju zavisiti o cijelom kljuu

Druga normalna forma - primjer1NF

kolegij K1 K1 K2 K2 K3 K4 K4 K5

zavod Z1 Z1 Z1 Z1 Z1 Z2 Z2 Z2

predava P1 P1 P1 P1 P2 P3 P3 P4

udbenik U1 U2 U1 U3 U4 U1 U5 U6

U ovom primjeru nismo u 2NF jer postoji FZ {kolegij, udbenik} {predava, zavod}

isto tako {kolegij} {predava, zavod}

predava i zavod djelomino zavise o kandidatnom kljuu !

Normalizacija u 2NF

Uklanjanje funkcijskih zavisnosti

recimo da A B gdje A i B nemaju zajednikih atributa ako su A atributi sa lijeve strane funkcijske zavisnosti, B atributi sa desne strane, a C svi ostali atributi, onda moemo podijeliti relaciju R na dva dijela: relaciju R1 koja sadri A U C relaciju R2 koja sadri A U B

Poetna relacija se uvijek moe ponovno dobiti operacijom JOIN izmeu relacija R1 i R2

Normalizacija u 2NF - primjer2NFa 1NF

kolegij K1 K1 K2 K2 K3 K4 K4 K5

zavod Z1 Z1 Z1 Z1 Z1 Z2 Z2 Z2

predava P1 P1 P1 P1 P2 P3 P3 P4

udbenik U1 U2 U1 U3 U4 U1 U5 U6

kolegij K1 K2 K3 K4 K52NFb

zavod Z1 Z1 Z1 Z2 Z2

predava P1 P1 P2 P3 P4

kolegij K1 K1 K2 K2 K3 K4 K4 K5

udbenik U1 U2 U1 U3 U4 U1 U5 U6

Problemi rjeeni u 2NF

Problemi u 1NF

ubacivanje: ne mogu dodati kolegij bez udbenika auriranje: da bi promijenio predavaa za kolegij K1 moram promijeniti 2 reda brisanje: ako pobriem K3, briem i P2

2NF rjeava prva dva problema, ali ne i trei2NFa

kolegij K1 K2 K3 K4 K5

zavod Z1 Z1 Z1 Z2 Z2

predava P1 P1 P2 P3 P4

Problemi koji ostaju

Anomalije ubacivanja:

ne mogu dodati predavaa koji ne predaje neki kolegij da bi promijenio zavod za predavaa P1 mora promijeniti 2 reda ako pobriem K3, briem i P22NFa

Anomalije auriranja:

Anomalije brisanja:

kolegij K1 K2 K3 K4 K5

zavod Z1 Z1 Z1 Z2 Z2

predava P1 P1 P2 P3 P4

Trea normalna forma

Tranzitivne funkcije zavisnosti

A C je tranzitivna FZ ako postoji neki skup B takav da su AB i BC ne-trivijalne FZ ABC

Relacija je u treoj normalnoj formi (3NF) ako je u 2NF i ako nema ne-kljunih atributa koji su tranzitivno zavisni o kandidatnom kljuu

Drugim rijeima svi ne-kljuni atributi su meusobno nezavisni

Trea normalna forma - primjer2NFa

kolegij K1 K2 K3 K4 K5

zavod Z1 Z1 Z1 Z2 Z2

predava P1 P1 P2 P3 P4

U ovom primjeru nismo u 3NF jer postoje FZ: {kolegij} {predava} {predava} {zavod}

postoji tranzitivna zavisnost zavoda od primarnog kljua !

Normalizacija u 3NF primjer2NFa 3NFa

kolegij K1 K2 K3 K4 K5

zavod Z1 Z1 Z1 Z2 Z2

predava P1 P1 P2 P3 P4

predava P1 P2 P3 P4

zavod Z1 Z1 Z2 Z2

3NFb

kolegij K1 K2 K3 K4 K5

predava P1 P1 P2 P3 P4

Problemi rjeeni u 3NF

Problemi u 2NF

ubacivanje: ne mogu dodati predavaa koji ne predaje neki kolegij auriranje: da bi promijenio zavod za predavaa P1 mora promijeniti 2 reda brisanje: ako pobriem K3, briem i P23NFb kolegij K1 K2 K3 K4 K5

3NF rjeava sve ove probleme

3NFa

u ovom primjeru, ali relacije u 3NF mogu imati i drugih anomalija!

predava P1 P2 P3 P4

zavod Z1 Z1 Z2 Z2

predava P1 P1 P2 P3 P4

Normalizacija i projektiranje

Baza podataka bi trebala biti barem u 3NF Ako to nije sluaj u naem projektu onda je potrebno:

identificirati problematine funkcijske zavisnosti razmisliti o anomalijama koje uvode ukloniti ih ako je mogue