Loading [MathJax]/jax/output/HTML-CSS/jax.js

Osnove podatkovnih baz

« nazaj

Osnove podatkovnih baz - vaje 2.4.2020


Normalizacija

Dana je relacija R(S) z množico atributov S in funkcijskimi odvisnostmi oblike XA, kjer je XS in AS.

Lastnosti funkcijskih odvisnosti:


Ključi:


Normalne oblike:


Naloga 1

Dana je relacija R(ABCDE) s funkcijskimi odvisnostmi AB, BCE in DEA. Najdi vse ključe za R. Ali je R v 3NF/BCNF?


Izpeljane funkcijske odvisnosti:

ABBCEDEAACBACCACEBCDDACDBACDEBCDABCDECDEACDEB

Ključi: ACD, BCD, CDE

fun. odv. 3NF BCNF
AB ja ne
BCE ja ne
DEA ja ne

R je v 3NF, ni v BCNF.

Primer podatkov:

A B C D E
1 a x Q Z’
1 a y R W
2 a x S Z’
2 a z S Z

Anomalija spreminjanja: če popravimo Z v Z’ v stolpcu E prve vrstice, moramo to ponoviti še v tretji vrstici.

R(AB*C*D*E)
R1(*AB)
R2(*B*CE)
R3(A*D*E)

V SQL lahko za to poskrbimo z določilom ON UPDATE CASCADE pri določitvi tujih ključev.


Naloga 2

Imejmo sledeče atribute z ER diagrama letališčne baze:

oznaka opis
D datum kontrole
E EMŠO tehnika
I ime testa
K kapaciteta letala
M model letala
O dosežena ocena pri kontroli
P plača tehnika
R reg. št. letala
S oznaka specializacije
T test

Določi funkcijske odvisnosti med zgornjimi atributi, če lahko test na nekem letalu izvaja samo tisti tehnik, ki je specialist za model letala.

Pretvori shemo v 3NF. Ali se sklada s shemo, dobljeno iz ER diagrama?


EPokTIokMKokRMokSE3NF okSMokEMS3NF okDERTOBCNFDRTIKMDERTIKMOPSDRSTEIKMOP

Ključi: DERT, DRST

R(*D*EMO*R*T) kontrola
R2(I*T) test
R4(M*R) letalo
R3(K*M) model
R6(*E*MS) specialist
R5(EM*S) specialist
R1(*EP) tehnik

Naloga 3

Dane so sledeče podrelacije relacije R(ABCDEFGHI) skupaj s funkcijskimi odvisnostmi.

  1. R1(ABCDE), AB, CD
  2. R2(ABF), ACE, BF
  3. R3(AD), DG, GH
  4. R4(DCGH), AI, IA
  5. R5(ACEI)

Za vsak primer ugotovi, ali je podrelacija v BCNF, in če ni, jo pretvori v BCNF.


  1. Ključ: ACE

    R(*A*C*E)
    R1(*AB)
    R2(*CD)
  2. Ključ: AB

    R(*A*B)
    R1(*BF)

3., 4., 5. so v BCNF.


Naloga 4

Dana je relacija R(ABCD) in sledeče množice funkcijskih odvisnosti.

  1. CD, CA, BC
  2. BC, DA
  3. ABCD, DA
  4. AB, BCD, AC
  5. ABC, ABD, CA, DB

Za vsako ugotovi, v kateri normalni obliki je R, in jo pretvori v BCNF.


  1. Ključ: B; ni v 3NF

    R(*BC)
    R1(A*CD)
  2. Ključ: BD; ni v 3NF

    R(*B*D)
    R1(*BC)
    R2(A*D)
  3. Ključa: ABC, BCD; je v 3NF, ni v BCNF

    R(*A*B*CD)
    R1(A*D)
  4. Ključ: A, ni v 3NF

    R(*ABC)
    R1(*B*CD)
  5. Ključi: AB, AD, BC, CD; je v 3NF, ni v BCNF

    R(*A*BCD)
    R1(A*C)
    R2(B*D)