====== AP11, IN11 Základy datového modelování ====== ===== Zadání ===== (návrh datových struktur; ER diagramy; entity, atributy, vztahy; grafické vyjádření) ===== Vypracování ===== ==== Návrh datových struktur ==== * Cílem datového modelování je navrhnout kvalitní datovou strukturu pro konkrétní aplikaci a databázový systém, který bude tato aplikace využívat k uložení dat. ((strana 1 v textu Úvod do datového modelování)) * **Datový model** definuje neměnné atributy a strukturu dat a slouží pro návrh datové struktury. ((slajd 2 v prezentaci Modelování dat)) * **Konceptuální datový model** je zobecněním konkrétní implementace datové struktury v relační databázi -- lze jej přenášet do různých implementačních prostředí. ((strana 1 v textu Úvod do datového modelování)) ==== ER diagramy ==== * **Entitně relační model** je konceptuální model, slouží k popisu reálného světa, odvozuje se z něj relační schéma databáze ==== Entity ==== * **Entita** je objekt, který existuje, je odlišitelný od ostatních objektů, je potřebný a uchováváme o něm informace (např. osoba, firma, strom) * Entita je popsána svým názvem a množinou **atributů** * **Množina entit** je skupina entit stejného typu, které sdílejí stejné vlastnosti (např. skupina všech osob, firem, stromů) ((strana 1 v textu Úvod do datového modelování a slajd 3 v prezentaci Modelování dat )) ==== Atributy ==== * **Atribut** je popisná vlastnost (všech členů) entitní množiny nebo vztahu, jejíž hodnotu chceme uchovat a používat v systému; každý atribut má přiřazen i datový typ * **Doména atributu** je množina povolených hodnot pro každý atribut * Typy atributů: * **jednoduché** atributy (např. jméno) a **složené** atributy (např. datum) * atributy s **jednoduchou** hodnotou (např. jméno) a s **násobnou** hodnotou (např. telefonní čísla) * nulové atributy (např. nemá telefon) (null) * odvozené atributy (např. věk) ((kapitola 2 strana 1 ve skriptech předmětu PB154 Základy databázových systémů)) === Klíče === * **Klíč** je podmnožina atributů ((kapitola 2 strana 5 ve skriptech předmětu PB154 Základy databázových systémů)) * **Superklíč** množiny entit je množina jednoho nebo více atributů, jejichž hodnoty jednoznačně určují entitu((kapitola 2 strana 5 ve skriptech předmětu PB154 Základy databázových systémů)) * **Kandidátní klíč** je minimální superklíč; ((kapitola 2 strana 5 ve skriptech předmětu PB154 Základy databázových systémů)) * **Primární klíč** je jeden zvolený kandidátní klíč ((kapitola 2 strana 5 ve skriptech předmětu PB154 Základy databázových systémů)) ==== Vztahy ==== * **Vztah** je spojení mezi několika entitami, které evidujeme a o němž uchováváme informace * **Vztahová množina** je množina vztahů stejného druhu, také může mít atributy (např. množina vztahů //vkladatel// mezi množinami entit //zákazník// a //účet// může mít atribut //(poslední) datum přístupu//) * **Stupeň vztahu** ukazuje počet množin entit, které jsou součástí množiny vztahů (nejčastěji binární) * **Role** je vztah na jedné množině entit (např. když zaměstnanec je nadřízený jiného zaměstnance) * **Četnost vztahů** označuje počet entit, se kterými mohou být ostatní entity propojeny pomocí vztahů (1:1, 1:N, M:N) * **Existenční závislost** -- existence entity //x// závisí na existenci entity //y// (//y// je dominantní, //x// podřízená), jakmile je entita //y// (např. půjčka) smazána, pak musí být smazány všechny s ní spojené entity //x// (např. splátky). Dominantní množina entit se nazývá **silná**, podřízená množina entit se nazývá **slabá** -- ta nemá primární klíč, protože závisí na existenci silné množiny entit, musí být spojena vztahem 1:N, primární klíč slabé množiny je tvořen **primárním** klíčem silné množiny a **parciálním** klíčem slabé množiny ((kapitola 2 strany 3,4,5,6 ve skriptech předmětu PB154 Základy databázových systémů)) === Specializace === * Tvoříme podskupiny v množině entit, které jsou různé od ostatních entit a mají vlastní atributy * **Úplná specializace** (každá entita z vyšší třídy **musí** patřit do jedné z entitních množin na nižší úrovni) \times **částečná specializace** (entita z vyšší třídy **nemusí** patřit do jedné z entitních množin na nižší úrovni) ((kapitola 2 strana 7 ve skriptech předmětu PB154 Základy databázových systémů)) === Generalizace === * Kombinujeme několik množin entit, které sdílejí stejné rysy, do množiny entit vyšší úrovně -- specializace a generalizace jsou vzájemně inverzní, na ER diagramu se znázorňují stejně. * Entita nižší úrovně **dědí** všechny atributy a účasti ve vztazích z množiny entit vyšší úrovně ((kapitola 2 strana 7 ve skriptech předmětu PB154 Základy databázových systémů)) {{:home:prog:e_r_diagramy02.png|Příklad generalizace}} Příklad generalizace -- převzato z prezentace č. 1 do cvičení z předmětu PB154 Základy databázových systémů === Agregace === * **Agregace** umožňuje vytvářet vztahy mezi vztahy, se vztahem zacházíme jako s abstraktní entitou ((kapitola 2 strana 8 ve skriptech předmětu PB154 Základy databázových systémů)) {{:home:prog:e_r_diag_agregace.png|Příklad agregace}} Příklad agregace -- převzato z prezentace č. 2 do cvičení z předmětu PB154 Základy databázových systémů ==== Grafické vyjádření ==== * slabá množina entit -- dvojitý obdélník * silná množina entit -- obdélník * atribut -- elipsa * vícehodnotový atribut -- dvojitá elipsa * odvozený atribut -- čárkovaná elipsa * atribut primárního klíče -- podtržení * atribut parciálního klíče -- přerušované podtržení * množina vztahů -- kosočtverec * generalizace, specializace -- trojúhelníková komponenta IS-A * agregace -- zahrnutí vztahu i s entitními množinami do obdélníku ((kapitola 2 ve skriptech předmětu PB154 Základy databázových systémů)) {{:home:prog:e_r_diagramy01.png|grafické znázornění prvků -- převzato z prezentace č. 1 do cvičení z předmětu PB154 Základy databázových systémů}} Grafické znázornění prvků -- převzato z prezentace č.1 do cvičení z předmětu PB154 Základy databázových systémů ==== Podněty, co lze zmínit dále ==== * určitě je vhodné nakreslit nějaký malý E-R diagram, abyste ukázali, že to zvládnete a že tématu rozumíte ===== Předměty ===== * [[https://is.muni.cz/auth/predmety/predmet.pl?id=427861|FI:PB154]] Základy databázových systémů (podzim 2007), prof. Ing. Pavel Zezula, CSc. * [[https://is.muni.cz/auth/predmety/predmet.pl?id=290000|FI:PB155]] Databázové systémy a jejich aplikace (podzim 2007), RNDr. Pavel Hajn, CSc. * [[https://is.muni.cz/auth/predmety/predmet.pl?id=427854|FI:PB007]] Analýza a návrh systémů (podzim 2007), RNDr. Jaroslav Ráček, Ph.D. * [[https://is.muni.cz/auth/predmety/predmet.pl?id=427685|FI:PV063]] Aplikace databázových systémů (jaro 2008), RNDr. Pavel Hajn, CSc. ===== Použitá literatura ===== * [[http://is.muni.cz/el/1433/podzim2007/PB154/index.qwarp|Osnova předmětu PB154 a z ní odkazované dokumenty k předmětu PB154]] (česky přeložené dokumenty jsou jen pro přihlášené v IS MU), prezentace ke cvičení zpracoval RNDr. Vlastislav Dohnal * [[https://is.muni.cz/auth/el/1433/podzim2007/PB154/um/czech/zezula02.pdf|Kapitola 2: Entitně-vztahový model]] hlavní dokument, ze kterého jsem čerpala informace, přístupný jen pro přihlášené v IS MU, autorem je prof. Ing. Pavel Zezula, CSc. * [[http://www.fi.muni.cz/~hajn/vyuka/DB%20systemy%20a%20aplikace/%davod_datov%e9_modelov%e1n%ed.doc|Úvod do datového modelování]] -- autorem je RNDr. Pavel Hajn, CSc. * prezentace Modelování dat pro předmět PB007, autorem je RNDr. Jaroslav Ráček, Ph.D. a doc. Ing. Jiří Sochor, CSc. (přístupné jen pro studenty předmětu) * RÁČEK, Jaroslav. //Strukturovaná analýza systémů//. 1.vyd. Brno: Vydavatelství MU, 2006. 103 s. ISBN 80-210-4190-0. ===== Kam dál? ===== * [[http://en.wikipedia.org/wiki/E-R_diagram|Entity-relationship model]] ===== Vypracuje ===== Jitka Pospíšilová ICQ: 218703195 mám <99%>, alespoň si to myslím, prosím doplňujte, pokud k tomu máte, co dodat Otázku si přečetl pan RNDr. Vlastislav Dohnal a rámcově prošel. Jeho podněty pro doplnění textu, opravy nesrovnalostí a odstranění matoucích či k otázce se nevztahujících textů byly do otázky zaneseny. Tato kontrola je jen **rámcová**, stále se může stát, že v otázce zůstala zapomenutá chybka či nesrovnalost, vyučující za toto nenese odpovědnost, berte tuto rámcovou kontrolu jako formu pomoci od vyučujících pro studenty. ~~DISCUSSION~~