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.
Diagramski prikaz funkcionalne odvisnosti
Primer funkcionalne odvisnosti: DelavecID =14 -> Delovno mesto = Prodajalec
Funkcionalna odvisnost NI komutativna
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 | |||
StudentID | ProfesorID | PredmetID | Ocena |
305 | 100 | MA1 | 10 |
305 | 200 | KE1 | 9 |
320 | 100 | MA1 | 6 |
305 | 100 | MA2 | 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 | |||
DijakID | Ime | KrajRojstva | DrzavaRojstva |
305 | Jure | Ljubljana | Slovenija |
306 | Charles | Paris | Francija |
307 | Mateja | Ljubljana | Slovenija |
308 | John | 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č.