Databzov systmy Datov analza relace Ludvk Friebel Katedra
Databázové systémy Datová analýza - relace • Ludvík Friebel • Katedra aplikované matematiky a informatiky • EF JU v Českých Budějovicích
Datová analýza - volba vhodného uložení dat, definice tabulek, jejich polí včetně definice vazebních vztahů mezi tabulkami. 2
Entitní vztahy • Entita je objekt, o kterém chceme v bázi dat registrovat nějaké údaje (např. ČTENÁŘ, KNIHA, EXEMPLÁŘ apod. ). Pro návrh logické struktury báze dat jsou důležité vzájemné vztahy mezi různými typy entit - tzv. entitní vztahy. Prakticky zkoumáme pouze vztahy mezi dvojicí typů entit tzv. binární entitní vztahy. 3
Vztahy mezi entitami - relace Nechť máme dva typy entit X, Y a množiny jejich výskytu F(X) a F(Y). Pak nastávají tři možné stavy: 1. Mezi typy entit X, Y je vztah 1: 1, pokud existuje funkční zobrazení z F(X) do F(Y) i naopak. 2. Mezi typy entit X, Y je vztah 1: N, pokud existuje funkční zobrazení z F(Y) do F(X). 3. Mezi typy entit X, Y je vztah M: N, pokud neexistuje funkční zobrazení z F(X) do F(Y) a naopak. Poznámka: Typ relace se také označuje pojmem mohutnost vztahu. 4
Vztahy mezi entitami - relace 5
Příklady • Vztah 1: N existuje např. mezi typy entit KNIHAEXEMPLÁŘ - v knihovně mají několik exemplářů téže knihy. • Vztah 1: 1 nastává mezi typy entit ČTENÁŘEXEMPLÁŘ, protože jeden konkrétní exemplář může být zapůjčen pouze jedním čtenářem. • Vztah M: N nastává mezi typy entit ČTENÁŘREZERVACE, kdy rezervace na jednu knihu může být provedena více čtenáři a také jeden čtenář může rezervovat více knih. 6
Referenční integrita • Nástroj SŘBD který pomáhá udržovat vztahy v tabulkách propojených relací. • Klíč – množina atributů, jejíž hodnoty určují n-tice relace (požadovaný záznam). • Primární klíč je kombinace hodnot atributů, která je pro každý záznam jedinečná. • Jednoduchý klíč obsahuje pouze jeden atribut • Složený klíč jedinečná kombinace atributů • Cizí klíč – atribut soužící, jako odkaz na jinou tabulku. 7
Jednoduchý klíč - příklad 8
Složený klíč - příklad 9
Referenční integrita • Referenční integrita se definuje cizím klíčem pro dvojici tabulek. Tabulka, v níž je pravidlo uvedeno, se nazývá podřízená tabulka (používá se také anglický termín slave). Tabulka, jejíž jméno je v omezení uvedeno je nadřízená tabulka (master). Pravidlo referenční integrity vyžaduje, aby každý záznam použitý v podřízené tabulce existoval v nadřízené tabulce. 10
Referenční integrita - projev • Při přidání záznamu do podřízené tabulky se kontroluje, zda stejná hodnota klíče existuje v nadřízené tabulce, porušení pravidla vyvolá chybu. • Při mazání nebo úpravě záznamů v nadřízené tabulce se kontroluje, zda v podřízené tabulce není záznam se stejnou hodnotou klíče – porušení pravidla může vyvolat chybu nebo úpravu dat v podřízené tabulky v souladu s definovanými akcemi. 11
Referenční integrita - příklad • Při vkládání záznamu do tabulky, která obsahuje adresy podniků, se kontroluje, zda vložené poštovní směrovací číslo existuje v tabulce poštovních směrovacích čísel (směrovací číslo je v tabulce směrovacích čísel primárním klíčem). • z tabulky poštovních směrovacích čísel nelze záznam s konkrétním poštovním směrovacím číslem odstranit, pokud existuje alespoň jeden podnik, který toto poštovní směrovací číslo používá. 12
Operace s relačními tabulkami • základním nástrojem pro manipulaci s relacemi je relační algebra. (soubor unárních a binárních operací, operandy i výsledky jsou relace) • relace jsou množiny a lze na ně použít množinové operace - sjednocení, průnik, rozdíl, kartézský součin. 13
Spojení • Výsledkem spojení dvou tabulek je jedna tabulka obsahující všechny sloupce ze spojovaných tabulek, počet řádků je roven součinu řádků první a druhé tabulky, ve výsledné tabulce je množství řádků, které nejsou zapotřebí. • Při operaci spojení možno provést selekci, je-li zadána podmínka, zajišťující výběr řádků. 14
Spojení dvou tabulek jméno rodné číslo obec okres Zdena Malá 765212/1245 Benešov SČ Hana Slavíková 775123/1248 Zdice Beroun SČ Zuzana Šustrová 515420/0646 Zdice Beroun SČ Ivan Vidím 370212/1245 Klatovy ZČ Jiří Vlak 511220/0666 Huslenky Vsetín SM Jiří Vlk 711230/0666 Huslenky Vsetín SM kód název kraj učitel IS Informační systémy Milan Frolík MODEL Modelování František Kubeš TEPO Teorie pole Pavel Paukert 15
Spojení jméno rodné číslo obec okres kraj kód název učitel Zdena Malá 765212/1245 Benešov SČ IS Informační systémy Milan Frolík Hana Slavíková 775123/1248 Zdice Beroun SČ IS Informační systémy Milan Frolík Zuzana Šustrová 515420/0646 Zdice Beroun SČ IS Informační systémy Milan Frolík Ivan Vidím 370212/1245 Klatovy ZČ IS Informační systémy Milan Frolík Jiří Vlak 511220/0666 Huslenky Vsetín SM IS Informační systémy Milan Frolík Jiří Vlk 711230/0666 Huslenky Vsetín SM IS Informační systémy Milan Frolík Zdena Malá 765212/1245 Benešov SČ MODEL Modelování František Kubeš Hana Slavíková 775123/1248 Zdice Beroun SČ MODEL Modelování František Kubeš Zuzana Šustrová 515420/0646 Zdice Beroun SČ MODEL Modelování František Kubeš Ivan Vidím 370212/1245 Klatovy ZČ MODEL Modelování František Kubeš Jiří Vlak 511220/0666 Huslenky Vsetín SM MODEL Modelování František Kubeš Jiří Vlk 711230/0666 Huslenky Vsetín SM MODEL Modelování František Kubeš Zdena Malá 765212/1245 Benešov SČ TEPO Teorie pole Pavel Paukert Hana Slavíková 775123/1248 Zdice Beroun SČ TEPO Teorie pole Pavel Paukert Zuzana Šustrová 515420/0646 Zdice Beroun SČ TEPO Teorie pole Pavel Paukert Ivan Vidím 370212/1245 Klatovy ZČ TEPO Teorie pole Pavel Paukert Jiří Vlak 511220/0666 Huslenky Vsetín SM TEPO Teorie pole Pavel Paukert Jiří Vlk 711230/0666 Huslenky Vsetín SM TEPO Teorie pole Pavel Paukert 16
Normalizace – normální formy 17
Normalizace • využívá se při návrhu struktury relačních tabulek • existuje sedm tzv. normálních forem (NF) - rad či doporučení • praktický význam mají první tři normální formy – 1 NF hovoří o nedělitelnosti jednotlivých atributů – 2 NF hovoří o existenci primárního klíče v každé tabulce – 3 NF zakazuje existenci redundantních dat 18
Normalizace - výhody • úroveň řízení báze dat (úroveň programů) je daleko jednodušší při zpracování relací ve vyšší NF než relací v nižší NF – jednodušší zpracování vyžaduje i jednodušší programování • čím jednodušší je program, tím méně potenciálních chyb obsahuje – údržba nenormalizovaných dat, koncovým uživatelem je nemožná • bez rizika porušení integrity dat • bez obslužných programových nadstaveb • riziko (v menší míře) se vyskytuje i v relacích 2 NF 19
Normalizace - postup – nenormalizovaný tvar 1 NF • rozložení datových struktur, na dvourozměrné, nejsou-li dvourozměrné – 1 NF 2 NF • odstranění neúplných závislostí neprimárních atributů na možných klíčích – 2 NF 3 NF • odstranění závislostí neprimárních atributů na sobě 20
1. Normální forma • každý atribut tabulky obsahuje data, která jsou dále nedělitelná • všem atributovým jménům jsou jako domény přiřazeny jednoduché datové typy (hodnoty atributů jsou v rámci databázového systému vnitřně nedělitelné) 21
1. Normální forma - příklad jméno rodné číslo obec okres kraj Zdena Malá 765212/1245 Benešov SČ Hana Slavíková 775123/1248 Zdice Beroun SČ Zuzana Šustrová 515420/0646 Zdice Beroun SČ Ivan Vidím 370212/1245 Klatovy ZČ Jiří Vlak 511220/0666 Huslenky Vsetín SM Jiří Vlk 711230/0666 Huslenky Vsetín SM Atribut jméno je potřeba rozdělit na atributy dva – křestní a příjmení křestní příjmení rodné číslo obec okres kraj Zdena Malá 765212/1245 Benešov SČ Hana Slavíková 775123/1248 Zdice Beroun SČ Zuzana Šustrová 515420/0646 Zdice Beroun SČ Ivan Vidím 370212/1245 Klatovy ZČ Jiří Vlak 511220/0666 Huslenky Vsetín SM Jiří Vlk 711230/0666 Huslenky Vsetín SM 22
2. Normální forma • • • Tabulka je v 1 NF. Žádný neklíčový atribut není funkčně závislý na žádné vlastní podmnožině žádného (možného) klíče. V případě, že přirozený primární klíč v relaci neexistuje, je ho potřeba uměle vyrobit (očíslovat řádky tabulky). Primární klíč řeší zákaz existence dvou totožných řádků v tabulce. Řádky se budou lišit existencí primárního klíče a (pořadí může být dáno hodnotou primárního klíče). Pokud tabulka obsahuje primární klíč, říkáme, že je v druhé normální formě. ID křestní příjmení rodné číslo obec okres kraj 1 Zdena Malá 765212/1245 Benešov SČ 2 Hana Slavíková 775123/1248 Zdice Beroun SČ 3 Zuzana Šustrová 515420/0646 Zdice Beroun SČ 4 Ivan Vidím 370212/1245 Klatovy ZČ 5 Jiří Vlak 511220/0666 Huslenky Vsetín 6 Jiří Vlk 711230/0666 Huslenky Vsetín SM SM 23
3. Normální forma • tabulky neobsahující redundantní data jsou tabulky ve třetí normální formě • redundance (nadbytečnosti) dat je situace, kdy některé hodnoty lze odvodit na základě hodnot jiných uložených v téže bázi dat 24
3. Normální forma – z 2. řádku tabulky vyplývá, že okres Beroun je částí Středočeského kraje – ta samá informace je i v řádku třetím • zde je nadbytečná (redundantní) • lze jí odvodit na základě hodnot obsažených v bázi dat na jiném místě – redundantní informace je i na posledních dvou řádcích – o příslušnosti obce Huslenky do okresu Vsetín – a okresu Vsetín do Severomoravského kraje – redundance se z relační tabulky odstraní tak, že se rozdělí na tabulky dvě – v příkladě se místo atributu okres zavede atribut id_o. – atribut je cizím klíčem a odkazem do nově vzniklé tabulky okresy 25
3. Normální forma - příklad Tabulka Lidé ID křestní příjmení rodné číslo obec id_o 1 Zdena Malá 765212/1245 Benešov BN 2 Hana Slavíková 775123/1248 Zdice BE 3 Zuzana Šustrová 515420/0646 Zdice BE 4 Ivan Vidím 370212/1245 Klatovy KT 5 Jiří Vlak 511220/0666 Huslenky VS 6 Jiří Vlk 711230/0666 Huslenky VS Tabulka okresy id_o jméno kraj BE Beroun SČ BN Benešov SČ KT Klatovy ZČ VS Vsetín SM 26
- Slides: 26