170 likes | 333 Views
Ú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
E N D
Ú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: DatabaseSystems 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 • 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ř. AdresaPSČ nebo AdresaČísloVše • Relace se pak určuje nejen atributy A ale i závislostmi F 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, abab, ac a, ac c,ac b, ac ac, ac abc, bc b,bc c, abc a, abc b, abc c,abcab, abc ac, abcbc, abcabc} 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 Klíč X Y • 2NF • 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 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) • A = {Adresa, Číslo, Barva, RGB} • F = {AdresaČíslo Barva , Barva RGB} • A = {Adresa, PSČ} • F = {Adresa PSČ} • A = {Adresa, Číslo, Barva} • F = {AdresaČíslo Barva} • A = {Barva, RGB} • F = {Barva RGB} 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č