Funkcionalne odvisnosti

Funkcionalne odvisnosti so glavni koncept, povezan s postopkom normalizacije PB.

Koraki normalizacije temeljijo na določenih pravilih, ki se nanašajo na funkcionalne odvisnosti med atributi tabele Pravilno opredeljene funkcionalne odvisnost na za četku postopka normalizacije so pogoj za uspešno izvedbo normalizacije.

Funkcionalna odvisnost opisuje razmerja med atributi relacije. Če sta A in B atributa relacije R, potem je atribut B funkcionalno odvisen od atributa A (notacija: A -> B), če je vsaki vrednosti atributa A pridružena natanko ena vrednost atributa B. V tem primeru atribut A predstavlja determinanto za atribut B. Za funkcionalno odvisnost lahko rečemo, da je to lastnost pomena (semantike) atributov relacije.

img1_8
Diagramski prikaz funkcionalne odvisnosti
img2_8
Primer funkcionalne odvisnosti: DelavecID =14 -> Delovno mesto = Prodajalec
Atribut DelavecID predstavlja determinanto za atribut DelovnoMesto
img3_8
Funkcionalna odvisnost NI komutativna
Če atribut DelavecID funkcionalno določa vednost atributa Delovno mesto, to še ne pomeni, da atribut Delovno mesto funkcionalno določa vrednost atributa DelavecID.
img4_8
Le na osnovi vrednosti atributa Delovno mesto ne moremo enolično opredeliti vrednost atributa DelavecID.

Glavne značilnost funkcionalnih odvisnosti, ki jih uporabimo pri normalizaciji so:

  • razmerje med atributi na levi in desni strani funkcionalne odvisnosti je 1:1,
  • odvisnosti so trajne (veljajo za vse primerke stanja PB)m
  • so netrivialne.

Opombe glede določanja funkcionalnih odvisnosti:

  • Celotna množica funkcionalnih odvisnosti za dano relacijo je lahko zelo obsežna.
  • Pomemno je najti pristop, s katerim se zmanjša število funkcionalnih odvisnosti na obvladljivo količino Vzeti si je treba čas za iskanje množice funkcionalnih odvisnosti (X) za relacijo, ki je manjša od celotne množice funkcionalnoh odvisnosti (Y) in ima lasnost, da je vsaka funkcionalna odvisnosti v množici Y implicirana (posledica) funkcionalnih odvisnosti v množici X.
  • Določanje funkcionalnih odvisnosti je zahtevno opravilo.

Vrste funkcionalnih odvisnosti

Obstajajo tri vrste funkcionalnih odvisnosti:

  • delna funkcionalna odvisnost,
  • polna funkcionalna odvisnost in
  • tranzitivna funkcionalna odvisnost.

Pri postopku normalizacije PB mora načrtovalec poznati značilnosti različnih vrst funkcionalnih odvisnosti in načine za odpravljanje delnih in tranzitivnih funkcionalnih odvisnosti.

Delna funkcionalna odvisnost

Delna funkcionalna odvisnost obstaja, ko je atribut relacije funkcionalno odvisen le od dela ključa relacije. Lahko se pojavil le, če tabela ima sestavljene ključe.

Primer: Izdelki(IzdelekID,Dobavitelj,ImeIzdelka, OpisIzdelka)

Izdelki
IzdelekID Dobavitelj ImeIzdelka OpisIzdelka
305 Rupro FujiFilmNF300 Drobni inventar
305 ABCComputer FujiFilmNF300 Drobni inventar
320 Murkart Putek02 Pijača
320 Šumko Putek02 Pijača

 

 

 

 

V relaciji Izdelki obstajajo naslednje funkcionalne odvisnosti:

  • IzdelekID,Dobavitelj -> ImeIzdelka, OpisIzdelka in
  • IzdelekID -> ImeIzdelka, Opis izdelka

Očitno je, da sta atributa ImeIzdelka in OpisIzdelka funkcionalno odvisna le od dela ključa tabele Izdelki in sicer le od atributa IzdelekID.

Polna funkcionalna odvisnost

Polna funkcionalna odvisnost obstaja, ko je atribut funkcionalno odvisen od celotnega ključa. Denimo, da sta A in B atributa relacije R. Atrubut B je polno funkcionalno odvisen od atributa A le, če je B funkcionalno odvisen od atributa A in hkrati ni funkcionalno odvisen od katerekoli podmnožice atributov iz skupine A.

Primer: Indeksi(StudentID,ProfesorID,PredmetID, Ocena) // Opomba: v indeks se vpisujejo le pozitivne ocene.

 Indeksi
 StudentIDProfesorID PredmetID Ocena 
 305100 MA1 10 
 305 200KE1 9
 320 100MA1
 6
 305 100MA2
 10

Funkcionalna odvisnost v relaciji Indeksi: StudentID, ProfesorID, PredmetID -> Ocena. Atribut ocena je polno funkcionalno odvisen od celotnega ključa tabele Indeksi.

Tranzitivna funkcionalna odvisnost

Tranzitivna funkcionalna odvisnost obstaja, ko je atribut posredno funkcionalno odvisen od ključa tabele. V tem primeru je posrednik atribut, ki je polno ali delno funkcionalno odvisen od ključa relacije.

Razlaga koncepta tranzitivnosti:

  • Denimo, da so A, B, in C atributi relacije R, za katere velja A->B in B->C.
  • Potem lahko rečemo, da je atrubut C tranzitivno (posredno) funkcionalno odvisen od atributa A preko atributa B.

Primer: Dijak(DijakID,Ime,KrajRojstva,DržavaRojstva)

 Dijak
 DijakIDIme KrajRojstva DrzavaRojstva 
 305Jure Ljubljana  Slovenija
 306CharlesParis
 Francija
 307Mateja Ljubljana
 Slovenija
 308John
London
 Anglija

Funkcionalne odvisnosti v relaciji Dijak:

  • DijakID->Ime,KrajRojstva in
  • KrajRojstva->DržavaRojstva // Atribut Država rojstva je tranzitivno odvisna od DijakID preko atributa KrajRojstva

Povzetek

  • Poznavanje funkcionalnih odvisnosti predstavlja osnovo za izvedbo postopka normalizacije PB.
  • Funkcionalna odvisnost opisuje razmerje med atributi relacije. Funkcionalne odvisnosti lahko določimo le, če poznamo pomen podatkov in poslovna pravila v modeliranem okolju (scenarij).
  • Funkcionalno odvisnost predstavimo v notaciji A -> B. Atribut B je funkcionalno odvisen od atributa A oziroma atribut A je determinanta atributa B.
  • Funkcionalne odvisnosti niso komutativne.
  • Vrste funkcionalnih odvisnosti:
  • Delna funkcionalna odvisnost: atribut je odvisen le od dela ključa.
  • Polna funkcionalna odvisnost: atribut je odvisen od celotnega ključa.
  • Tranzitivna funkcionalna odvisnost: atribut je odvisen od ključa preko posrednega atributa, ki ni ključ.