1
PRIMER 1: Izvršiti normalizaciju relacije Iznajmljivanja na 1.NF 2.NF, 3.NF
GLUMAC (SIFRA, PREZIME, IME, NAPOMENA) • Relaciona šema GLUMAC jeste u 1.N F zato što sva
obeležja uzimaju vrednosti iz skupova čiji su elementi atomarne vrednosti. Nema ponavljajućih grupa atributa.
• Relaciona šema GLUMAC jeste u 2.N F zato što je u 1.NF i sva obeležja potpuno funkcionalno zavise od celog ključa.
Funkcionalne zavisnosti:SIFRA PREZIME, IME, NAPOMENA
f(x) = yX Y
Funkcionalna zavisnost SIFRA PREZIME ne postoji ukoliko se jednom elemntu skupa X (originalu) može pridružiti više elemenata skupa Y (kopija). U primeru to znači na glumac sa šifrom 1 ne može biti u isto vreme i De Niro i Žigon!
3
Relaciona šema GLUMAC jeste u 3.NF zato što ne postoje tranzitivne funkcionalne zavisnosti neključnih obeležja od ključa.
SIFRA PREZIME i SIFRA IME, a ne postoji funkcionalna zavisnost imena glumca od prezimena PREZIME IME!
5
TRANZITOVNOST: (A B) (B C) (A C)
Primer 2:CLAN (BROJCLANSKEKARTE, IME, TELEFON, PREZIME, ADRESA)
Relaciona šema CLAN nije u 1.NF zato što atribut (obeležje, kolona tabele) ADRESA nije atomarna vrednost (nenormalizovana relaciona šema).
Prevođenje u prvu normalnu formu podrazumeva rastavljanje kolone na dve ili više kolona koje su atomarne:
CLAN (BROJCLANSKEKARTE, IME, TELEFON, PREZIME, ULICA, KBR, PTT, NAZIVMESTA)
1.NF+, 2.NF+, 3.NF- Relaciona šema CLAN jeste u 2.NF zato što su sva obeležja atomarne vrednosti i sva neključna
obeležja potpuno funkcionalno zavise od celog ključa.BROJCLANSKEKARTE IME, TELEFON, PREZIME, ULICA, KBR, PTT, NAZIVMESTA
PTT NAZIVMESTA
Relaciona šema CLAN nije u 3.NF zato što postoji tranzitivna funkcionalna zavisnost kolone NAZIV MESTA od ključa BROJCLANSKEKARTE preko kolone PTT.
BROJCLANSKEKARTE PTT NAZIVMESTA Prevođenje u treću normalnu formu podrazumeva rastavljanje relacione šeme na dve ili više
manjih koje ne sadrže tranzitivnost (svaka pojedinačno): MESTO (PTT, NAZIVMESTA) 1.NF+, 2.NF+, 3.NF+CLAN (BROJCLANSKEKARTE, IME, TELEFON, PREZIME, ULICA, KBR, PTT) 1.NF+, 2.NF+, 3.NF+
6
Primer 3:
FILM (INVENTARNI BROJ, NAZIV, TRAJANJE, ZANR, JEZIK, REZISER) 1.NF-
Varijanta I: FILM (INVENTARNI BROJ, NAZIV, TRAJANJE, ZANR, JEZIK, REZISER IME, REZISER PREZIME) 1.NF+, 2.NF+, 3.NF+
Funkcionalne zavisnosti:INVENTARNI BROJ NAZIV, TRAJANJE, ZANR, JEZIK, REZISER IME, REZISER PREZIME
7
Varijanta II: FILM (INVENTARNI BROJ, NAZIV, TRAJANJE, ZANR, JEZIK, ID REZISERA, REZISER IME, REZISER PREZIME)
1.NF+, 2.NF+, 3NF- Zbog tranzitivnosti: INVENTARNI BROJ ID REZISERA REZISER IME, REZISER PREZIME Funkcionalne zavisnosti:INVENTARNI BROJ NAZIV, TRAJANJE, ZANR, JEZIK, REZISER IME, REZISER PREZIME, ID REZISERAID REZISERA REZISER IME, REZISER PREZIME REZISER (ID REZISERA, REZISER IME, REZISER PREZIME) 3NF+FILM (INVENTARNI BROJ, NAZIV, TRAJANJE, ZANR, JEZIK, ID REZISERA) 3NF+
8
POČETNO REŠENJE: Relaciona šema FILM nije u 1.NF zato što obeležje REZISER nije
atomarna vrednost, moze se rastaviti na: PREZIME REZISERA i IME REZISERA.
Prevodjenje u 1.NF:FILM (INVENTARNI BROJ, NAZIV, TRAJANJE, ZANR, JEZIK, PREZIME REZISERA, IME REZISERA) 1.NF+ 2.NF?, 3.NF? Funkcionalne zavisnosti:Inventarni Broj Naziv, Trajanje, Zanr, Jezik, Ime Rezisera, Prezime Rezisera
Relaciona šema FILM jeste u 2.NF zato što sva nekljucna obeležja potpuno f-nalno zavise od kljuca INVENTARNIBROJ.
Relaciona šema FILM jeste u 3.NF zato što ne postoje tranzitivne f-lne zavisnosti.
FILM (INVENTARNI BROJ, NAZIV, TRAJANJE, ZANR, JEZIK, PREZIME REZISERA, IME REZISERA) 1.NF+ 2.NF+, 3.NF+
9
Primer 4:
ISPIT (BROJINDEKSA, SIFRAPREDMETA, SIFRANASTAVNIKA, NASTAVNIK, STUDENT, NAZIVPREDMETA, OCENA, DATUMPOLAGANJA, NAZIVMESTAPOLAGANJA) 1.NF- zbog NASTAVNIK i STUDENT
Prevodjenje u 1.NF:ISPIT (BROJINDEKSA, SIFRAPREDMETA, SIFRANASTAVNIKA, PREZIME NASTAVNIKA, IME NASTAVNIKA, PREZIME STUDENTA, IME STUDENTA, STATUS, NAZIVPREDMETA, OCENA, DATUMPOLAGANJA, NAZIVMESTAPOLAGANJA) Relaciona sema ISPIT nije u 2.NF zbog parcijalne funkcionalne zavisnosti KOLONE NAZIVPREDMETA od SIFRAPREDMETA. Funkcionalne zavisnosti: BrojIndeksa Student SifraPredmeta NazivPredmeta SifraNastavnika Nastavnik BrojIndeksa, SifraPredmeta, SifraNastavnika Ocena, DatumPolaganja, NazivMestaPolaganja Funkcionalne zavisnosti: BrojIndeksa ImeStudenta, PrezimeStudenta, Status SifraPredmeta NazivPredmeta SifraNastavnika ImeNastavnika, PrezimeNastavnika BrojIndeksa, SifraPredmeta, SifraNastavnika Ocena, DatumPolaganja, NazivMestaPolaganja ISPIT (BROJINDEKSA, SIFRAPREDMETA, SIFRANASTAVNIKA, NASTAVNIK, STUDENT, NAZIVPREDMETA, OCENA, DATUMPOLAGANJA, NAZIVMESTAPOLAGANJA)
10
Prevodjenje u 2.NF: STUDENT (BrojIndeksa, ImeStudenta, PrezimeStudenta, Status) 2.NF+, 3.NF+PREDMET (SifraPredmeta, NazivPredmeta) 2.NF+, 3.NF +NASTAVNIK (SifraNastavnika, PrezimeNastavnika, ImeNastavnika) 2.NF+, 3.NF +ISPIT (BrojIndeksa, SifraPredmeta, SifraNastavnika, Ocena, DatumPolaganja, NazivMestaPolaganja) 2.NF+, 3.NF+
11
Primer 5:
IZDATAKNJIGA (ISBN, BROJCLANSKEKARTE, NAZIVKNJIGE, CITALACPREZIME, CITALACIME, TELEFON, IDPISCA, PREZIMEPISCA, IMEPISCA, DATUMPOZAJMLJIVANJA, BROJSTRANA, GODINANAPISANA) 1.NF+, 2.NF-, 3.NF- Funkcionalne zavisnosti: ISBN, BrojClanskeKarte DatumPozajmljivanja ISBN NazivKnjige, IDPisca, BrojStrana, GodinaNapisana BrojClanskeKarte CitalacPrezime, CitalacIme, Telefon IDPisca PrezimePisca, ImePisca KNJIGA (ISBN, NazivKnjige, IDPisca, BrojStrana, GodinaNapisana) 1.NF+, 2.NF+, 3.NF+CLAN (BrojClanskeKarte, CitalacPrezime, CitalacIme, Telefon) 1.NF+, 2.NF+, 3.NF+PISAC (IDPisca, PrezimePisca, ImePisca) 1.NF+, 2.NF+, 3.NF+IZDATAKNJIGA (ISBN, BrojClanskeKarte, DatumPozajmljivanja) 1.NF+, 2.NF+, 3.NF+
12
Primer 6: PREGLED (BROJPROTOKOLA, BROJKARTONA, PREZIMEPACIJENTA, IMEPACIJENTA, DATUMRODJENJA, SIFRALEKARA, IMELEKARA, PREZIMELEKARA, SPECIJALNOST, SIFRADIJAGNOZE, NAZIVDIJAGNOZE) Funkcionalne zavisnosti: SifraDijagnoze NazivDijagnoze SifraLekara PrezimeLekara, ImeLekara, Specijalnost BrojKartona PrezimePacijenta, ImePacijenta, DatumRodjenja BrojProtokola SifraDijagnoze, SifraLekara, BrojKartona Relaciona sema PREGLED se nalazi u 2.NF zato sto su sva obelezja atomarne vrednosti, sto znaci da je u 1.NF i sva nekljucna obelezja potpuno funkcionalno zavise od celog primarnog kljuca. Nije u 3.NF zbog tranzitivne funkcionalne zavisnosti: BrojProtokola SifraDijagnoze NazivDijagnoze
PREVODJENJE U 3.NF: DIJAGNOZA (SifraDijagnoze, NazivDijagnoze) LEKAR (SifraLekara, PrezimeLekara, ImeLekara, Specijalnost) PACIJENT (BrojKartona, PrezimePacijenta, ImePacijenta, DatumRodjenja) PREGLED (BrojProtokola, SifraDijagnoze, SifraLekara, BrojKartona) Napomena (Bolnica): DIJAGNOZA (SifraDijagnoze, NazivDijagnoze) LEKAR (SifraLekara, PrezimeLekara, ImeLekara, Specijalnost) PACIJENT (BrojKartona, PrezimePacijenta, ImePacijenta, DatumRodjenja) PREGLED (BrojProtokola, BrojKartona, DatumPregleda) PREGLEDAO (BrojProtokola, SifraLekara) UTVRDJENADG (BrojProtokola, SifraDijagnoze)
13
PRIMER 7: Izvršiti normalizaciju relacije Iznajmljivanja na 3NF
14
KlijentID
KIme StanID
Adresa Cena
VlasnikID
VIme
101 Pera Perić 804
560
Dušanova 2,Niš
Višegradska 32,Niš
100
60
40
93
Laza Lazić
Jovan Jovanović
124 Mika Mikić 45
206
301
Petra Petrovića bb, Beograd
Niška 22, Leskovac
Bulevar Oslobođenja 111
250
110
150
40
93
93
Laza Lazić
Jovan Jovanović
Jovan Jovanović
Iznajmljivanja
1NF
KlijentID
KIme StanID
Adresa Cena
VlasnikID
VIme
101 Pera Perić 804 Dušanova 2,Niš 100 40 Laza Lazić
101 Pera Perić 560 Višegradska 32,Niš 60 93 Jovan Jovanović
124 Mika Mikić 45 Petra Petrovića bb, Beograd 250 40 Laza Lazić
124 Mika Mikić 206 Niška 22, Leskovac 110 93 Jovan Jovanović
124 Mika Mikić 301 Bulevar Oslobođenja 111, Leskovac
150 93 Jovan Jovanović
Parcijalne funkcijske zavisnosti (PFZ)
15
KlijentID
KIme StanID
Adresa Cena
VlasnikID
VIme
101 Pera Perić 804 Dušanova 2,Niš 100 40 Laza Lazić
101 Pera Perić 560 Višegradska 32,Niš 60 93 Jovan Jovanović
124 Mika Mikić 45 Petra Petrovića bb, Beograd 250 40 Laza Lazić
124 Mika Mikić 206 Niška 22, Leskovac 110 93 Jovan Jovanović
124 Mika Mikić 301 Bulevar Oslobođenja 111, Leskovac
150 93 Jovan Jovanović
(primarni ključ)
(PFZ 1)
(PFZ 2)
2NF - uklanjanje atributa zavisnih od dela primarnog ključa
2NF
16
KlijentID
KIme
101 Pera Perić
124 Mika Mikić
StanID
Adresa Cena
VlasnikID
VIme
804 Dušanova 2,Niš 100 40 Laza Lazić
560 Višegradska 32,Niš 60 93 Jovan Jovanović
45 Petra Petrovića bb, Beograd 250 40 Laza Lazić
206 Niška 22, Leskovac 110 93 Jovan Jovanović
301 Bulevar Oslobođenja 111, Leskovac
150 93 Jovan Jovanović
KlijentID
StanID
101 804
101 560
124 45
124 206
124 301
Stanovi
Klijenti
Iznajmljivanja
17
StanID
Adresa Cena
VlasnikID
VIme
804 Dušanova 2,Niš 100 40 Laza Lazić
560 Višegradska 32,Niš 60 93 Jovan Jovanović
45 Petra Petrovića bb, Beograd 250 40 Laza Lazić
206 Niška 22, Leskovac 110 93 Jovan Jovanović
301 Bulevar Oslobođenja 111, Leskovac
150 93 Jovan Jovanović
KlijentID
StanID
101 804
101 560
124 45
124 206
124 301
Stanovi
KlijentiIznajmljivanja
Tranzitivne funkcijske zavisnosti (TFZ)KlijentID
KIme
101 Pera Perić
124 Mika Mikić
(TFZ)
3NF - uklanjanje zavisnosti o atributima koji nisu deo jedinstvenog identifikatora (primarnog ključa)
3NF
18
KlijentID
KIme
101 Pera Perić
124 Mika Mikić
StanID
Adresa Cena
VlasnikID
804 Dušanova 2,Niš 100 40
560 Višegradska 32,Niš 60 93
45 Petra Petrovića bb, Beograd 250 40
206 Niška 22, Leskovac 110 93
301 Bulevar Oslobođenja 111, Leskovac
150 93
KlijentID
StanID
101 804
101 560
124 45
124 206
124 301
Stanovi
Klijenti
IznajmljivanjaVlasnikID
VIme
40 Laza Lazić
93 Jovan Jovanović
40 Laza Lazić
93 Jovan Jovanović
93 Jovan Jovanović
Vlasnici
PRIMER 8:
Razmotrimo relaciju R R(Grad, UlicaiBroj, Poskod)
19
Kandidati za ključ su:{Grad, UlicaiBroj} {Poskod, UlicaiBroj}
Relacija nema neključnih atributa pa zadovoljava 3NF
Grad Ulicai Broj Poskod
Niš Dušanova 2 18000
Niš Višegradska 32 18000
Beograd Bulevar Oslobođenja 111
11000
Beograd Niška 22 11090
Leskovac Bulevar Oslobođenja 111
16000
Funkcionalne zavisnosti relacije su:{Grad,UlicaiBroj→Poskod}{Poskod→Grad}
Relacija nije u BCNF, jer Poskod nije superkljuc za R
Postoji mogućnost dupliranja informacija o vezi Poskod-ova i gradova
20
Grad Ulicai Broj Poskod
Niš Dušanova 2 18000
Niš Višegradska 32 18000
Beograd Bulevar Oslobođenja 111
11000
Beograd Niška 22 11090
Leskovac Bulevar Oslobođenja 111
16000
Rakovica ->
Svođenje na BCNF
21
Grad UlicaiBroj Grad Poskod
Grad UlicaiBroj Poskod
Grad Ulicai Broj
Niš Dušanova 2
Niš Višegradska 32
Beograd Bulevar Oslobođenja 111
Beograd Niška 22
Leskovac Bulevar Oslobođenja 111
Grad Poskod
Niš 18000
Beograd 11000
Beograd 11090
Leskovac 16000
U revidiranom dizajnu, ◦ R1tabela ima kandidat za ključ {Grad, UlicaiBroj}, ◦ R2 ima kandidat za ključ {Poskod}.
Na žalost, iako ovaj dizajn zadovoljava BCNF, neprihvatljiv je jer dozvoljava povezivanje Grad-a i UlicaiBroj-a sa više Poskod-ova.
Drugim rečima, kandidati za ključ ne garantuju održanje funkcionalne zavisnosti :
{Grad, Ulica&Broj} →{Pospkod}.22
Grad Ulicai Broj
Niš Dušanova 2
Niš Višegradska 32
Beograd Bulevar Oslobođenja 111
Beograd Niška 22
Leskovac Bulevar Oslobođenja 111
R1 R2 Grad Poskod
Niš 18000
Beograd 11000
Beograd 11090
Leskovac 16000
Gubljenje funkcijske zavisnosti
Dizajn eleminiše anomalije ali ne zadovoljava BCNF. Dizajn se sastoji od originalne tabele R uz dodatak tabele R2. Ako se ograničenje referencijanog integriteta definiše tako
da se atributi {Grad, Poskod} iz tabele R moraju referencirati na atribute {Grad, Poskod} iz tabele R2, onda su anomalije izbegnute.
23
R R2 Grad Poskod
Niš 18000
Beograd 11000
Beograd 11090
Leskovac 16000
Eliminisanje anomalija
Grad Ulicai Broj Poskod
Niš Dušanova 2 18000
Niš Višegradska 32 18000
Beograd Bulevar Oslobođenja 111 11000
Beograd Niška 22 11090
Leskovac Bulevar Oslobođenja 111 16000