UDBS Cvičení 10 Funkční závislosti Ing. Miroslav Valečko Zimní semestr 2014/2015 25. 11. 2014
Návrh schématu databáze Existuje mnoho způsobů, jak navrhnout schéma databáze Některá jsou lepší, jiná zase horší Jeden z možných postupů je pomocí Funkčních závislostí Definuje postupy, jak automaticky dojít ke správnému návrhu schématu databáze Správně navržené tabulky
Univerzální relační schéma Vytvoření relace se všemi možnými atributy RU(a,b,c,d,e,f) Je vždy prvním krokem automatického návrhu databáze RU (id_oddeleni, nazev, id_zam, jmeno, prijmeni, plat, profese) id_oddeleni nazev id_zam jmeno prijmeni plat profese 1 Vyzkumné oddělení 1 Jan Novak 15 000 Asistent 1 Vyzkumné oddělení 2 Petr Svoboda 16 500 Vědec 2 Personální oddělení 3 Eva Novotná 13 000 Personalistka
Funkční závislost Je definována mezi dvěma podmnožinami atributů v rámci jednoho schématu relace. Jde o vztah mezi atributy, nikoliv mezi entitami Závislost mezi atributy značíme: X Y RU (id_oddeleni, nazev, id_zam, jmeno, prijmeni, plat, profese) id_oddeleni nazev id_zam jmeno, prijmeni, plat, profese
Funkční závislosti Armstrongovy axiomy Pro funkční závislosti existují určitá odvozovací pravidla Tato pravidla se obvykle nazývají Armstrongovy axiomy: Dekompozice (rozklad) Sjednocení Tranzitivita Rozšíření
Armstrongovy závislosti Dekompozice X A,B,C X A X B X C Sjednocení X A X B X C X A,B,C
Armstrongovy závislosti Rozšíření X A,B,C XY A,B,C,Y Tranzitiva X A A B X B
Uzávěr množiny atributů Máme množinu atributů X a množinu funkčních závislostí F Uzávěr množiny atributů X vzhledem k množině funkčních závislostí F je množina všech funkčně závislých atributů na X Tento uzávěr pak značíme X+ Neformálně Máme hodnoty atributů X a funkčních závislostí F, pak do uzávěru X+ budou patřit všechny hodnoty atributů, které dokážeme nalézt pomocí funkčních závislostí F 8
Uzávěr množiny atributů RU (A, B, C, D, F) F(A F, B GH, C G) Uzávěry množin atributů: A+ = A,F B+ = B,G,H C+= C,G D+=D F+=F
Klíč schématu relace Množina atributů K R je klíčem R, pokud jsou všechny atributy schématu R funkčně závislé na K Tedy pokud K všechny atributy R Zjistit klíč schématu můžeme pomocí uzávěru K+ a zjistím, jestli obsahuje všechny atributy z relace R Můžeme mít více klíčů, obvykle nás pak zajímá ten nejkratší
Minimální neredundantní funkční závislosti V množině FZ se mohou nacházet nadbytečné FZ. Stejně tak některé atributy na levé straně některých FZ mohou být nadbytečné. 1. Musíme rozložit dané FZ na tzv. elementární FZ 2. Vypočteme uzávěry pro levé strany FZ 3. Nalezneme a odstraníme redundantní FZ 4. Nalezneme a odstraníme redundantní atributy na levých stranách FZ
Minimální neredundantní funkční závislosti Redundantní funkční závislosti R(X, Y, Z) F(X YZ, Y XZ) Rozklad FZ na tzv. elementární FZ F(X Y, X Z, Y X, Y Z) Uzávěry levých stran FZ X+ = XYZ Y+ =YXZ Postupně vezmeme každou FZ a zkusíme ji odstranit, zda-li je redundantní Odstraníme X Y, X+ = XZ (neobsahuje Y, není redundantní) Odstraníme X Z, X+ = XYZ (obsahuje vše co původní, je redundantní) Odstraníme Y X, Y+ = YZ (neobsahuje X, není redundatní) Odstraníme Y Z, Y+ = YXZ (obsahuje vše co původní, je redundantní)
Minimální neredundantní funkční závislosti Redundantní funkční závislosti R(X, Y, Z) F(X YZ, Y XZ) Rozklad FZ na tzv. elementární FZ F(X Y, X Z, Y X, Y Z) Výsledek je, že máme dvě možné neredundantní množiny FZ: 1. {X Y, Y X, Y Z} 2. {X Y, X Z, Y X}
Minimální neredundantní funkční závislosti Odstranění redundantních atributů Testujeme pouze tam, kde je na levé straně více atributů R(A, B, C, D, E) F(ABC D, E C, AB E, C D) Musíme určit uzávěr ABC ABC+ = ABCDE Poté určíme uzávěry AB+, BC+, AC+, AB+ = ABCDE BC+ = BCD AC+ = ACD Atribut C je redundantní, jelikož ABC+ = AB+ Výsledkem tedy je tato množina FZ {AB DE, E C, C D}
Minimální neredundantní pokrytí Příklad R(A,B,C,D,E) F={A B, BC D, D BC, C A} Vypočtěte minimální neredundantní pokrytí a poté určete klíč schématu.