29.9.2008 © Jiří Sochor, Jaroslav Ráček 1 Modelování dat 29.9.2008 © Jiří Sochor, Jaroslav Ráček 2 Datový model • Definuje neměnné atributy a strukturu dat. • Slouží jako stabilní základ procesního modelu. • Data, která systém uchovává, jsou relativně konstantní. V čase se daleko více mění způsob jejich zpracování, než jejich struktura. • Datový model vyjadřuje vztahy, které nejsou zachyceny v procesních modelech. • Vztahy v datovém modelu nesmí být porušeny při transformaci dat jednotlivými procesy. 29.9.2008 © Jiří Sochor, Jaroslav Ráček 3 Komponenty datového modelu • Entita - objekt, o němž uchováváme informace - Je identifikovatelná (existuje způsob, jak odlišit jednotlivé entity od sebe). - Je potřebná , hraje významnou roli ve vytvářeném systému. - Je popsána nejméně jedním, ale zpravidla více atributy. • Entitní množina - Množina entit stejného druhu, typu. • Vztah - vztah mezi entitami, který evidujeme a o němž uchováváme informace MUDr. Spaček je ošetřujícím lékařem pana Vopičky. Na zájezd se přihlásili pan Mňouk a pan Muk. Host si rezervoval pokoj. vztah typ vztahu 29.9.2008 © Jiří Sochor, Jaroslav Ráček 4 Komponenty datového modelu • Vztahová množina - Množina vztahů stejného druhu, typu. • Atribut - Vlastnost entity nebo vztahu, jejíž hodnotu chceme uchovat a používat v systému. • Doména atributu - Obor hodnot atributu. Terminologické posuvy v některé literatuře: typ entity - entita typ vztahu - vztah entita - instance (výskyt) entity vztah - instance (výskyt) vztahu 29.9.2008 © Jiří Sochor, Jaroslav Ráček 5 Datový slovník - notace = skládá se z + a zároveň ( ) nepovinná část (0 nebo 1) [ | ] výběr jedné z možností { } iterace (1 nebo více) a=1{b}15 * * komentář @ identifikátor (klíč) 29.9.2008 © Jiří Sochor, Jaroslav Ráček 6 Příklad - Objednávka Objednávka č. 2006-007-24 Sportovní potřeby, Mírotvůrců 17, 602 00 Brno Datum vystavení: 23.4.2006 Datum dodání: 30.4.2006 Zákazník: č. 007, Dr. Jaroslav Ráček Zboží: Číslo Název Kusů Cena za kus PB666 Baseballová pálka Magnum 30 499 H46 Helma Tvrďák 30 --- 29.9.2008 © Jiří Sochor, Jaroslav Ráček 7 Příklad - Objednávka OBJEDNÁVKA = @číslo objednávky + datum vystavení objednávky + číslo zákazníka + jméno zákazníka + (datum dodání) + { číslo výrobku +název výrobku+ počet objednaných výrobků + ( cena za výrobek )} jméno = titul + křestní jméno + (prostřední jméno) + příjmení titul = [ Mr. | Mrs. | Miss. | Dr. | Prof. ] křestní jméno = { přípustný znak} přípustný znak = [ A - Z | a - z | ‘ | ] 29.9.2008 © Jiří Sochor, Jaroslav Ráček 8 Definice datového elementu - DE Definice zachycuje zjištěná fakta o DE • Význam DE v kontextu aplikace • Kompozice DE, pokud je složen z jiných DE • Hodnoty, kterých může DE nabývat Příklady: váha = * váha pacienta při přijetí *, * jednotky: kg; rozsah: 1 - 200 * pohlaví = * hodnoty [M | F] * zákazníkova adresa = [doručovací adresa | účtovací adresa | doručovací adresa + účtovací adresa] 29.9.2008 © Jiří Sochor, Jaroslav Ráček 9 Entity Datové modelování hledá entity jako popisy • konkrétních věcí - zaměstnanec, součástka • událostí - dopravní nehoda, operace • pojmů - pojistka, smlouva Pro každý objekt, událost, pojem zkoumáme • k čemu slouží (účel) • z čeho se skládá „Top-down“ řešení datového modelu 1. výběr (nalezení) entit 2. návrh diagramu entit a vztahů (ERD) 3. přidání atributů 29.9.2008 © Jiří Sochor, Jaroslav Ráček 10 Diagram entit a vztahů - ERD Komponenty ERD: • Entity (objektové typy, objekty, entitní množiny) - identifikovatelné, potřebné, více atributů. • Relace, vztahy - vztah, který je nutné pamatovat, nelze odvodit nebo mechanicky vypočítat • Indikátory vztažených entit • Indikátory nadtypů/podtypů 29.9.2008 © Jiří Sochor, Jaroslav Ráček 11 Grafické prky ERD Entita Entita Entita Entita Právě jeden výskyt Žádný nebo jeden výskyt Jeden nebo více výskytů Žádný, jeden nebo více výskytů 29.9.2008 © Jiří Sochor, Jaroslav Ráček 12 Příklad - Studium Entity: student, předmět, učitel Vztahy: student - studuje - předmět učitel - přednáší - předmět učitel - cvičí - předmět 29.9.2008 © Jiří Sochor, Jaroslav Ráček 13 Arity - násobnosti vztahů 29.9.2008 © Jiří Sochor, Jaroslav Ráček 14 ERD s vícenásobnými vztahy Vztah nabízí má atributy: platební podmínky, termíny. Vztah dodal má atributy: údaje z dodacího listu. 29.9.2008 © Jiří Sochor, Jaroslav Ráček 15 ERD s vícenásobnými vztahy 29.9.2008 © Jiří Sochor, Jaroslav Ráček 16 Povinné, nepovinné a rekurzivní vztahy povinný vztah nepovinný vztah rekurzivní vztah 29.9.2008 © Jiří Sochor, Jaroslav Ráček 17 Asociovaná entita Kupní smlouva existuje pouze jako výsledek vztahu mezi jinými objekty, k nimž je připojena. asociovaná entita 29.9.2008 © Jiří Sochor, Jaroslav Ráček 18 Nadtypové a podtypové entity Vztah „generalizace - specializace“, „dědičnost“ nadtypová entita podtypová entita 29.9.2008 © Jiří Sochor, Jaroslav Ráček 19 ERD s nadtypovým vztahem 29.9.2008 © Jiří Sochor, Jaroslav Ráček 20 ERD s nadtypovým vztahem 29.9.2008 © Jiří Sochor, Jaroslav Ráček 21 Doporučený postup tvorby ERD 1. Vytvoření iniciálního ERD - Pochopení uživatelské aplikace - Interview s uživatelem - Jiné techniky získání dat 2. Přidání entitních množin - Dále použít metodu postupného zjemňování - Po vytvoření prvotního datového modelu nalézt atributy entit na základě - existujícího funkčního (procesního) modelu - seznamu datových elementů od zákazníka - existujícího datového slovníku od zákazníkových „databázistů“ 29.9.2008 © Jiří Sochor, Jaroslav Ráček 22 Doporučený postup tvorby ERD 3. Prověrka entit na základě seznamu datových elementů - Některé datové elementy (DE) lze přidat jen k některým entitám, u jiných entit stejné entitní množiny nemají smysl. - Některé DE lze aplikovat na všechny entity dvou různých entitních množin. - Některé DE uplatněné u entitní množiny popisují vztahy mezi jinými entitními množinami. 4. Odstranění entitních množin - Entity tvořené pouze identifikátorem. - Entitní množiny s jedinou entitou. - Volně zavěšené asociativní entity. - Odvozené vztahy. 29.9.2008 © Jiří Sochor, Jaroslav Ráček 23 Vnořené entity 29.9.2008 © Jiří Sochor, Jaroslav Ráček 24 Zrušení entity Předpokládáme, že zaměstnanec má nejvýše 1 manželského partnera. 29.9.2008 © Jiří Sochor, Jaroslav Ráček 25 Zrušení entity 29.9.2008 © Jiří Sochor, Jaroslav Ráček 26 Zrušení nepotřebného vztahu povinnost obnovit lze odvodit z údajů entit 29.9.2008 © Jiří Sochor, Jaroslav Ráček 27 Entity a klíče • Jednoznačná identifikace - Každá entita je unikátně identifikována klíčem. • Úspornost (nonredundance) - Zrušením libovolné položky klíče je porušeno pravidlo jednoznačné identifikace. • Kandidátní klíče - Více položek může být použito pro jednoznačnou identifikaci ve funkci klíče. primární klíč# výběr 29.9.2008 © Jiří Sochor, Jaroslav Ráček 28 Normalizace dat (E.F.Codd) - 1. normální forma Uspořádání dat takovým způsobem, abychom se vyhnuli možným anomáliím a problémům, které mohou vzniknout při práci s daty. zam# jmeno sex odb# praxe osoba odbornost zam# jmeno sex 1.normální forma zam# +odb# praxe Def.1.NF:V záznamech se nevyskytují opakující se skupiny položek. 29.9.2008 © Jiří Sochor, Jaroslav Ráček 29 1. normální forma 2 definice 1.NF: • Datový záznam je v 1. NF, pokud všechny jeho komponenty jsou atomické. • Datový záznam je v 1. NF pokud se v něm nevyskytují opakující se skupiny položek 29.9.2008 © Jiří Sochor, Jaroslav Ráček 30 1. normální forma 29.9.2008 © Jiří Sochor, Jaroslav Ráček 31 1. normální forma 29.9.2008 © Jiří Sochor, Jaroslav Ráček 32 2. normální forma Požaduje plnou funkční závislost všech neklíčových atributů na celém klíči. Datová položka B záznamu R funkčně závisí na datové položce A z R, pokud v libovolném časovém okamžiku každé hodnotě A odpovídá nejvýše jedna sdružená hodnota B v záznamu R. A identifikuje B. zam# plat funkční závislost Př.: Zaměstnanec bere plat. Klíč zam# jednoznačně určí plat. 29.9.2008 © Jiří Sochor, Jaroslav Ráček 33 Plná funkční závislost Datová položka nebo kolekce datových položek B záznamu R jsou plně funkčně závislé na kolekci datových položek A záznamu R , pokud je B funkčně závislé na celém A, ale nikoliv na vlastní podmnožině A. 29.9.2008 © Jiří Sochor, Jaroslav Ráček 34 2. Normální forma - příklady zam# jméno plat projekt# datum dokončení programátor# balík# jméno progr. jméno balíku hodiny Př.: Entita ZAMESTNANEC Př.: Entita AKTIVITA_PROGRAMATORA Splňuje 2.NF. Nesplňuje 2.NF. 29.9.2008 © Jiří Sochor, Jaroslav Ráček 35 2. Normální forma - příklad konverze součást# dodavatel# název dodav. údaje dodav. cena dodavatel# název dodav. údaje dodav. součást# dodavatel# cena 29.9.2008 © Jiří Sochor, Jaroslav Ráček 36 Problémy „nebytí“ ve 2. normální formě - příklady Dokud nám dodavatel nedodá součást, nemůžeme zapsat jeho adresu a další údaje. Pokud přestane dodavatel dočasně zásobovat, pak zrušení záznamu o součásti zruší i jeho údaje. Jakákoliv změna v údajích o dodavatelích je komplikovaná (vyhledání a oprava více záznamů). 29.9.2008 © Jiří Sochor, Jaroslav Ráček 37 2. Normální forma - jiná definice zam# jméno plat projekt# datum dokončení Př.: Entita ZAMESTNANEC funkční závislosti primárního klíče funkční závislosti alternativního klíče Def.: 2.NF: Záznam R je ve 2.NF, pokud je v 1.NF a každá neklíčová položka v R je plně funkčně závislá na každém kandidátním klíči R. 29.9.2008 © Jiří Sochor, Jaroslav Ráček 38 3. normální forma - tranzitivní závislost A B C A B B C C transitivně závisí na A. Def. 3NF (jednoduše): Záznam je ve 3.NF, pokud je ve 2.NF a každý atribut je funkčně závislý na klíči a pouze na klíči. Def. 3.NF (přesněji): Záznam R je ve 3.NF, pokud je ve 2.NF a každá neklíčová položka R je netranzitivně závislá na každém kandidátním klíči z R. 29.9.2008 © Jiří Sochor, Jaroslav Ráček 39 Problémy „nebytí“ ve 3. normální formě Př.: ZAMESTNANEC zam# jméno plat projekt# datum dokončení není 3.NF Problémy „nebytí“ ve 3.NF - Dokud nepřidělíme pracovníky na projekt, nemůžeme zapsat datum ukončení. - Jestliže všichni opustí projekt, zrušíme veškerou informaci o datu ukončení. - Změnu data ukončení je nutné provést na mnoha místech. 29.9.2008 © Jiří Sochor, Jaroslav Ráček 40 4. normální forma - podmíněná závislost zákazník# jméno adresa stát daň zákazník# jméno adresa stát zákazník# daň ZÁKAZNÍCI ZÁKAZNÍCI DOMÁCÍ podmíněná závislost 4.NF odstraňuje podmíněné funkční závislosti. Daň strháváme těm, kteří sídlí ve stejném státě jako naše firma. 29.9.2008 © Jiří Sochor, Jaroslav Ráček 41 Příklad - Normalizace do 4.NF opakující se skupiny primární klíč 29.9.2008 © Jiří Sochor, Jaroslav Ráček 42 Příklad - Normalizace do 4.NF tranzitivně závislé atributy 29.9.2008 © Jiří Sochor, Jaroslav Ráček 43 Příklad - Normalizace do 4.NF hotovo 29.9.2008 © Jiří Sochor, Jaroslav Ráček 44 Příklad - Normalizace do 4.NF atribut závislý na části klíče část klíče 29.9.2008 © Jiří Sochor, Jaroslav Ráček 45 Příklad - Normalizace do 4.NF Závěr: Upravené entitní množiny byly vhodně pojmenovány, všechny jsou ve 4.NF. (Pracovník) je jméno výchozí množiny před normalizací. 29.9.2008 © Jiří Sochor, Jaroslav Ráček 46 Příklad - Normalizace do 4.NF - Vygenerování ERD 29.9.2008 © Jiří Sochor, Jaroslav Ráček 47 Příklad ERD - Doprava řidičský průkaz kniha jízd 29.9.2008 © Jiří Sochor, Jaroslav Ráček 48 Příklad ERD - Vztahy M x N 29.9.2008 © Jiří Sochor, Jaroslav Ráček 49 Příklad ERD - Osobní záznamy 29.9.2008 © Jiří Sochor, Jaroslav Ráček 50 Příklad ERD - Učebnice 29.9.2008 © Jiří Sochor, Jaroslav Ráček 51 Příklad ERD - Veřejná knihovna 29.9.2008 © Jiří Sochor, Jaroslav Ráček 52 Příklad ERD - Nahrazení vztahu asociovanou entitou 29.9.2008 © Jiří Sochor, Jaroslav Ráček 53 Příklad - Úprava n-ární relace … ale spíše se jedná o asociovanou entitu. Objednávka může být samostatným objektem, …