Úvod do databázových systémů Jakub Lokoč
Literatura POKORNÝ, J., HALAŠKA, J.: Databázové systémy, skripta FEL ČVUT 2003 HALAŠKA, J., POKORNÝ, J.: Databázové systémy-cvika, skripta ČVUT 2002 Ramakrishnan, Gehrke: Database Systems Management, McGraw-Hill, 2003 Další zdroje - web http://nb.vse.cz/~palovska/uds/ http://siret.ms.mff.cuni.cz/skopal/DBI025.htm Upozornění – informace v této prezentaci nejsou vyčerpávající !!! Databázové systémy, Jakub Lokoč
Univerzální relace Funkční závislosti mezi atributy A relace R Jiný přístup – všechny atributy se slijí do jedné tabulky Není třeba řešit vztahy, vše na jednom řádku Formulace dotazu triviální Má ale i spoustu nevýhod – redundance, ztráta informace, … Funkční závislosti mezi atributy A relace R Formálně: f([x1, .., xn]) [y1, .., yn], kde xi a yi jsou atributy z A Budeme zapisovat bez f, např. Adresa PSČ nebo AdresaČíslo Vše Relace se pak určuje nejen atributy A ale i závislostmi F Adresa PSČ Číslo Barva Estonská 12345 1 Modrá 2 Červená Vltavská 45678 Zelená 3 Bílá Databázové systémy, Jakub Lokoč
Funkční závislosti (FZ) Pomáhají určit redundance v datech Dají se odvodit z jiných FZ - Armstrongova pravidla Nechť X, Y, Z jsou podmnožiny atributů z relace R = (A, F) 1) jestliže Y X, potom X Y (triviální FZ, axiom) 2) jestliže X Y a Y Z, potom X Z (tranzitivita, pravidlo) 3) jestliže X Y a X Z, pak X YZ (kompozice, pravidlo) 4) jestliže X YZ, pak X Y a X Z (dekompozice,pravidlo) Používají se při Dekompozici – odvození DB schéma splňujícího danou NF Hledání klíčů – min. skupina atributů K taková, že K Vše Databázové systémy, Jakub Lokoč
Funkční závislosti (FZ) Dekompozice se dá odvodit z prvních tří Předpoklad X YZ Máme odvodit X Y a X Z Odvození Triviálně : YZ Y a YZ Z (první axiom) Tranzitivitou spojíme X YZ s YZ Y Tranzitivitou spojíme X YZ s YZ Z Získáme požadované X Y a X Z Množina všech FZ odvoditelných z F pomocí Armstrongových pravidel tvoří funkční uzávěr F+ Databázové systémy, Jakub Lokoč
Funkční uzávěr F+ R = (A = {a, b, c}, F = {a b} ) F+ = {a a, b b, a b, c c, ab a, ab b, ab ab, ac a, ac c, ac b, ac ac, ac abc, bc b, bc c, abc a, abc b, abc c, abc ab, abc ac, abc bc, abc abc} Co tvoří klíč relace R? Databázové systémy, Jakub Lokoč
Atributový uzávěr Klíčový algoritmus na hledání klíče Nechť R = (A, F) a X je podmnožina A Atributový uzávěr značíme X+ X+ je množina všech atributů z A, které jsou funkčně závislé na všech atributech z X Databázové systémy, Jakub Lokoč
Atributový uzávěr Příklad s relací Dům = (A, F) A = {Adresa, PSČ, Číslo, barva} F = {Adresa PSČ, AdresaČíslo Barva} {Adresa}+ = {Adresa, PSČ} {Adresa, Barva}+ = {Adresa, PSČ, Barva} {Adresa, Číslo}+ = Vše (klíč relace Dům) Databázové systémy, Jakub Lokoč
Klíč tabulky Co tvoří klíč tabulky? Je klíčů více? Klíč je minimální skupina atributů určující vše Klíčů obecně může být více Pokud ke klíči přidáme atribut nadklíč Najít jeden klíč je lehké Najít všechny klíče – problém z třídy NP Znalost klíče důležitá při zajištění NF Klíčový atribut nesmí být většinou NULL Databázové systémy, Jakub Lokoč
Nalezení prvního klíče Z A+ se postupně odebírají ty atributy, které jsou odvoditelné ze zbývajících atributů Příklad s relací Dům = (A, F) A = {Adresa, Majitel, PSČ, Číslo, barva} F = {Adresa MajitelPSČ, Majitel Adresa, AdresaČíslo Barva} {Adresa, Majitel, Číslo, PSČ, Barva}+ = Vše {Adresa, Majitel, Číslo, PSČ}+ = Vše {Adresa, Majitel, Číslo}+ = Vše {Adresa, Číslo}+ = Vše (již nelze odebrat žádný) Databázové systémy, Jakub Lokoč
Nalezení všech klíčů Složité – musí se vyzkoušet všechny permutace atributů z předchozího slajdu (klíčů může být hodně) Používají se heuristiky Pokud existuje X Y ( kde Y je klíčový atribut) Pak se může zkusit (klíč – Y) X Z předchozího příkladu AdresaČíslo je klíč a existuje závislost Majitel Adresa (AdresaČíslo - Adresa) Majitel je kandidát na klíč {Majitel, Číslo}+ = Vše (bingo, máme nový klíč) X Klíč Y Databázové systémy, Jakub Lokoč
Normální formy, normalizace Slouží k zlepšení „kvality“ DB Snižuje množství redundancí Vhodné pro DB, kde dochází často ke změnám Nejjednodušší je 1NF Data jsou v atomické formě Nelze dát do buňky třeba pole či strom Porušeno až v Objektově-Relačních DB 4NF a 5NF nebude u zkoušky požadována Databázové systémy, Jakub Lokoč
Normální formy 2NF 3NF BCNF X Klíč Y Neexistuje funkční závislost neklíčových atributů na části klíče 3NF Neexistuje tranzitivní závislost na klíči Alternativní definice Závislost je jen triviální Levá část závislosti je nadklíč Pravá část závislosti je součástí klíče BCNF Podobné jako 3NF Jen neplatí 3. bod definice 3NF X Y X Klíč Klíč Y X Klíč Y Databázové systémy, Jakub Lokoč
Bezeztrátovost Relaci nelze rozštěpit libovolně (viz. příklad) Z normalizovaných tabulek by měla jít rekonstruovat původní relace Adresa PSČ Číslo Barva Estonská 12345 1 Modrá 2 Červená Vltavská 45678 Zelená Evropská 3 Bílá Adresa PSČ Číslo Barva Estonská 12345 1 Modrá 2 Červená 3 Bílá Vltavská 45678 Zelená Evropská Adresa PSČ Estonská 12345 Vltavská 45678 Evropská PSČ Číslo Barva 12345 1 Modrá 2 Červená 45678 Zelená 3 Bílá Databázové systémy, Jakub Lokoč
Dekompozice Metoda rozdělení univerzální relace na menší tabulky, které splňují Bezeztrátovost BCNF nebo 3NF Jak na to? Rekurzivní proces V aktuálně dělené relaci se musí určit klíče Dělení relace na dvě podle nevyhovující závislosti Do nových tabulek se delegují i všechny platné funkční závislosti (konstrukce funkčního uzávěru!) Nezachovává obecně pokrytí závislostí Databázové systémy, Jakub Lokoč
Dekompozice - příklad A = {Adresa, Číslo, PSČ, Barva, RGB} F = {Adresa PSČ, AdresaČíslo Barva, Barva RGB} (porušena 2NF, porušena 3NF) Adresa PSČ Číslo Barva RGB Estonská 12345 1 Modrá 0; 0; 255 2 Červená 255; 0; 0 Vltavská 45678 Zelená 0; 255; 0 3 Bílá 255; 255; 255 A = {Adresa, Číslo, Barva, RGB} F = {AdresaČíslo Barva , Barva RGB} Adresa Číslo Barva RGB Estonská 1 Modrá 0; 0; 255 2 Červená 255; 0; 0 Vltavská Zelená 0; 255; 0 3 Bílá 255; 255; 255 A = {Adresa, PSČ} F = {Adresa PSČ} Adresa PSČ Estonská 12345 Vltavská 45678 A = {Adresa, Číslo, Barva} F = {AdresaČíslo Barva} A = {Barva, RGB} F = {Barva RGB} Adresa Číslo Barva Estonská 1 Modrá 2 Červená Vltavská Zelená 3 Bílá Barva RGB Červená 255; 0; 0 Modrá 0; 0; 255 Zelená 0; 255; 0 Bílá 255; 255; 255 Jakou NF splňují nové tabulky? Je zachována bezeztrátovost? Je zachováno pokrytí závislostí? Databázové systémy, Jakub Lokoč
Rekapitulace Modelování relačního schéma DB – dva přístupy Intuitivní konceptuální modelování a konverze Algoritmická dekompozice V praxi spíše intuitivní přístup – diagramy Dekompozice se používá na „škaredé“ tabulky Máme obecně popsané tabulky, potřebujeme silný a současně jednoduchý formální dotazovací jazyk Databázové systémy, Jakub Lokoč