Pozor: glede na to, ali upoštevamo pri normalizaciji le primarni ključ ali pa vse ključe so kriteriji za določanje problematičnih odvisnosti za 2. NO in 3. NO lahko različni. V vsakem primeru pa moramo pri BCNO dobiti enake rezultate. Če imamo le en ključ, seveda ni razlik niti v postopkih.
OceneIzpitov(VpisnaSt, Predmet, Semester, Ocena)
Določite funkcionalne odvisnosti, vse ključe (Saiedian-Spencer) in jo normalizirajte do Boyce-Coddove normalne oblike.
Odvisnosti:
Predmet $\rightarrow$ Semester
VpisnaSt, Predmet $\rightarrow$ Ocena
Saiedian-Spencer:
$\mathcal{L}$: VpisnaSt, Predmet
$\mathcal{R}$: Semester, Ocena
$\mathcal{B}$: $-$
Edini ključ: VpisnaSt, Predmet
Normalizacija (glede na primarni ključ):
PostavkaNarocila(SifraNarocila, CrtnaKodaIzdelka, SifraIzdelka, OpisIzdelka, CenaIzdelka, Kolicina)
Določite funkcionalne odvisnosti, vse ključe (Saiedian-Spencer) in jo normalizirajte do Boyce-Coddove normalne oblike.
Odvisnosti:
CrtnaKodaIzdelka $\rightarrow$ SifraIzdelka
SifraIzdelka $\rightarrow$ CrtnaKodaIzdelka
CrtnaKodaIzdelka $\rightarrow$ OpisIzdelka, CenaIzdelka
SifraNarocila, CrtnaKodaIzdelka $\rightarrow$ Kolicina
Saiedian-Spencer:
$\mathcal{L}$: SifraNarocila
$\mathcal{R}$: OpisIzdelka, CenaIzdelka, Kolicina
$\mathcal{B}$: CrtnaKodaIzdelka, SifraIzdelka
Ključa: SifraNarocila, CrtnaKodaIzdelka in SifraNarocila, SifraIzdelka (primarni ključ je poudarjen, izberemo ga poljubno).
Normalizacija (glede na primarni ključ):
Normalizacija (glede na vse ključe):
Zaloga (SifraIzdelka, SifraAkcije, Proizvajalec, OpisIzdelka, CenaIzdelka)
SifraIzdelka, SifraAkcije $\rightarrow$ Proizvajalec, OpisIzdelka, CenaIzdelka
SifraIzdelka $\rightarrow$ Proizvajalec, OpisIzdelka
Določite vse ključe (Saiedian-Spencer) in jo normalizirajte do Boyce-Coddove normalne oblike.
Saiedian-Spencer:
$\mathcal{L}$: SifraIzdelka, SifraAkcije
$\mathcal{R}$: Proizvajalec, OpisIzdelka, CenaIzdelka
$\mathcal{B}$: $-$
Edini ključ: SifraIzdelka, SifraAkcije
Normalizacija (glede na primarni ključ):
Ob predpostavki, da imajo vsi produkti istega založnika enako garancijo določite še ostale funkcionalne odvisnosti, vse ključe (Saiedian-Spencer) in jo normalizirajte do Boyce-Coddove normalne oblike.
ProgramskaOprema(Založnik, Produkt, Verzija, SistemskeZahteve, Cena, Garancija)
Založnik, Produkt, Verzija $\rightarrow$ SistemskeZahteve, Cena, Garancija
Odvisnosti:
Saiedian-Spencer:
$\mathcal{L}$: Založnik, Produkt, Verzija
$\mathcal{R}$: SistemskeZahteve, Cena, Garancija
$\mathcal{B}$: $-$
Edini ključ: Založnik, Produkt, Verzija
Normalizacija (glede na primarni ključ):
R(D, O, N, T, C, R, Y)
D, O $\rightarrow$ N, T, C, R, Y
D $\rightarrow$ N
Določite vse ključe (Saiedian-Spencer) in jo normalizirajte do Boyce-Coddove normalne oblike.
Saiedian-Spencer:
$\mathcal{L}$: D, O
$\mathcal{R}$: N, T, C, R, Y
$\mathcal{B}$: $-$
Edini ključ: D, O
Normalizacija (glede na primarni ključ):
R(D, O, N, T, C, R, Y)
D, O $\rightarrow$ N, T, C, R, Y
D $\rightarrow$ N
N $\rightarrow$ D
Določite vse ključe (Saiedian-Spencer) in jo normalizirajte do Boyce-Coddove normalne oblike.
Saiedian-Spencer:
$\mathcal{L}$: O
$\mathcal{R}$: T, C, R, Y
$\mathcal{B}$: D, N
Ključa: D, O in N, O
Normalizacija (glede na primarni ključ):
Normalizacija (glede na vse ključe):
R(D, O, N, T, C, R, Y)
D, O $\rightarrow$ N, T, C, R, Y
D $\rightarrow$ N
N $\rightarrow$ D
C, R $\rightarrow$ D
Določite vse ključe (Saiedian-Spencer) in jo normalizirajte do Boyce-Coddove normalne oblike.
Saiedian-Spencer:
$\mathcal{L}$: O
$\mathcal{R}$: T, Y
$\mathcal{B}$: D, N, C, R
Ključi: D, O; N, O in C, R, O
Normalizacija (glede na primarni ključ):
Normalizacija (glede na vse ključe):
Shipping (ShipName, ShipType, VoyageID, Cargo, Port, Date)
ShipName $\rightarrow$ ShipType
VoyageID $\rightarrow$ ShipName, Cargo
ShipName, Date $\rightarrow$ VoyageID, Port
Določite vse ključe (Saiedian-Spencer) in jo normalizirajte do Boyce-Coddove normalne oblike.
Date
je datum prihoda ladje v pristanišče (Port).
Saiedian-Spencer:
$\mathcal{L}$: Date
$\mathcal{R}$: ShipType, Cargo, Port
$\mathcal{B}$: ShipName, VoyageID
Ključa: Date, ShipName in Date, VoyageID
Shipping (ShipName, ShipType, VoyageID, Cargo, Port, Date)
Normalizacija (glede na primarni ključ):
Normalizacija (glede na vse ključe):
Imejmo (v Sloveniji skoraj vsako leto aktualno) relacijo Volitve
z atributi
ImeStranke, DatumVolitev, ImePredsednikaStranke, VolilniRezultatStranke, ŠteviloPoslancevStranke, ŠifraStranke,
kjer veljajo naslednje funkcionalne odvisnosti:
ImeStranke, DatumVolitev $\rightarrow$ ImePredsednikaStranke
ImeStranke, DatumVolitev $\rightarrow$ VolilniRezultatStranke
ImeStranke, DatumVolitev $\rightarrow$ ŠteviloPoslancevStranke
ImeStranke, DatumVolitev $\rightarrow$ ŠifraStranke
ŠifraStranke $\rightarrow$ ImeStranke
a. Skušajte si razložiti pomen funkcijskih odvisnosti.
b. Poiščite vse ključe in preverite, v kateri normalni obliki se nahaja relacija Volitve (2. NO, 3. NO, BCNO).
c. Normalizirajte relacijo v Boyce-Coddovo normalno obliko.
Saiedian-Spencer:
$\mathcal{L}$: DatumVolitev
$\mathcal{R}$: ImeStranke, ImePredsednikaStranke, VolilniRezultatStranke, ŠteviloPoslancevStranke, ŠifraStranke
$\mathcal{B}$: ImeStranke, ŠifraStranke
Ključa: DatumVolitev, ImeStranke in DatumVolitev, ŠifraStranke
Volitve(ImeStranke, DatumVolitev, ImePredsednikaStranke, VolilniRezultatStranke, ŠteviloPoslancevStranke, ŠifraStranke)
Normalizacija (glede na primarni ključ):
Normalizacija (glede na vse ključe):