4.3
E-R modelování
E-R diagram neboli entitně relační diagram slouží k návrhu relační databáze, vyznačení tabulek, jejich atributů, datových typů atributů a vztahů mezi tabulkami. Grafické symboly používané k vyznačování jednotlivých prvků diagramu se mohou lišit podle použité notace.
+

Obr. 16. ER diagram
Návrh databáze pomocí entitně relačních diagramů může být logický nebo fyzický. Jako logický se označuje návrh, u kterého zatím není dáno, v jakém databázovém systému bude implementován. Zde například datové typy atributů nemohou být vyznačeny konkrétně, protože každý databázový systém neobsahuje stejné datové typy pro atributy. Ve fyzickém návrhu už se model vztahuje ke konkrétní implementaci v daném databázovém systému a například datové typy atributů jsou vyznačeny tak, aby korespondovaly s datovými typy v tomto systému.
Entita (tabulka) se v enitně relačním diagramu vyznačuje jako obdélník. Někdy se používají i zaoblené rohy. V záhlaví tabulky je obvykle jméno entity a její tělo obsahuje seznam atributů s jejich datovými typy – ať už obecnými v logickém modelu nebo konkrétními ve fyzickém modelu. U atributů je vyznačeno, zda jsou součástí primárního klíče, cizího klíče nebo zda jejich hodnota nesmí nabývat hodnoty null.
Relace je mezi tabulkami v entitně relačním diagramu symbolizována lomenou čarou, na jejímž každém konci vyznačujeme příslušnou kardinalitu a parcialitu. Kardinalita se vyznačuje jako kolmá spojnice na straně „jedna“ a jako trojnožka na straně „N“. Parcialita se vyjadřuje prázdným kolečkem na straně, která se nemusí účastnit vztahu a čarou kolmou na straně, která se musí vztahu účastnit.
Parcialita definuje povinnost nebo volitelnost vazeb. Každá instance dané entity se musí nebo nemusí účastnit daného typu vazby. Podívejme se například na vztah mezi učitelem a žákem. Položme si následující dvě otázky: „Musí každý učitel vyučovat daného žáka?“ a „Musí být žák vyučován nějakým učitelem?“. Na první otázku odpovíme jistě negativně – ne každý učitel musí vyučovat konkrétního žáka – ne všichni vyučující vyučují ve všech třídách. Na druhou otázku odpovíme kladně, protože každý žák musí mít nějakého učitele. Daná vazba je tedy na straně učitele nepovinná a na straně žáka povinná.
Další vlastností vazeb je kardinalita. Kardinalita říká, kolikrát se může instance dané entity účastnit vztahu s instancemi druhé entity. U kardinality jsou možné pouze dvě varianty – jednou a vícekrát. Pro stejný příklad vazby mezi žáky a učiteli si položíme otázky „Kolik žáků může vyučovat jeden konkrétní učitel?“. Odpověď je, že jeden učitel může (nebo spíš musí) vyučovat několik žáků. V tomto případě se tedy jedná o vazbu 1:N (one-to-many). Vazby s kardinalitou 1:1 (one-to-one) připouštějí pouze možnost jedné účasti ve vztahu pro všechny instance daných entit. Například jedno sedadlo v divadle může být obsazeno pouze jedním divákem a jeden divák může pro sebe mít zakoupené pouze jedno sedadlo. Vazby typu M:N (many-to-many) umožňují několikanásobnou účast ve vztahu pro instance obou entit. Jeden student může studovat několik předmětů, jeden předmět může být studován několika studenty. Vazby typu 1:N a M:N jsou nejčastěji se vyskytující se vazby v relačních databázích.
Nevýhodou je, že vazby s kardinalitou M:N jsou složité. Nelze je přímo realizovat v relační databázi, dochází k jejich nahrazení (dekompozici) dvěma vazbami typu 1:N a vazební entitou (intersection entity). Tato entita, kromě toho, že umožňuje realizaci takto komplexní vazby, také často obsahuje nějaký atribut, který je jinak skrytý v samotné vazbě.
ER diagramy se dále používají k analýze stávajících databází. Využívají se k nalezení a řešení problémů v logice nebo nasazení konkrétní databáze.
4.3.1
Entita
Entitní typ je skupina definovatelných věcí, jako jsou studenti nebo sportovci, zatímco entita by byla konkrétním žákem nebo sportovcem. Další příklady entitního typu jsou třeba zákazníci, automobily, výrobky, atd.
+

Obr. 17. Entita
Množina entit je velice podobná entitnímu typu s tím rozdílem, že se jedná o entitní typ definovaný v nějakém okamžiku. Příkladem mohou být studenti, kteří se ke studiu zapsali první den zápisu.
Rozlišujeme tři druhy entit. Jsou buď silné, slabé nebo asociativní. Silná entita může být definována výhradně vlastními atributy, zatímco slabá entita nemůže. Slabá entita je entita, která musí být definována vztahem cizího klíče s jinou entitou, protože nemůže být jednoznačně identifikována svými vlastními atributy. Asociativní entita spojuje entity (nebo prvky) v rámci entity.
+

Obr. 18. Asociativní entita
+

Obr. 19. Slabá entita
4.3.2
Vztahy
Vztah vyjadřuje, jak spolu jednotlivé entity souvisí nebo jak jsou navzájem spojeny. Vztahy mezi entitami se vyjadřují pomocí sloves. Příkladem je třeba vztah mezi entitami Student a Kurz – Student se registruje do Kurzu.
+

Obr. 20. Vztah mezi entitami Student a Kurz
V některých případech se může stát, že je entita ve vztahu sama se sebou – jedná se o rekurzivní vztah. Příkladem mohou být zaměstnanci firmy, kteří dohlížejí na jiné zaměstnance.
+

Obr. 21. Rekurzivní vztah
4.3.3
Atributy
Atributy se zobrazují jako elipsy nebo kruhy. Klíčovým atributem je jedinečná charakteristická vlastnost entity. Například číslo zaměstnance může být klíčovým atributem zaměstnance. Další vlastnosti zaměstnance jsou třeba jméno, příjmení, datum narození a další.
Existuje několik typů atributů. Jednoduchý nebo jednohodnotový atribut (jednoduchá čára) je takový atribut, u kterého je hodnota atomická – tedy, nelze ji více dělit, například telefonní číslo. Vícehodnotový atribut (dvojitá čára) může mít více než jednu hodnotu. Například zaměstnanec může mít více dovedností. Odvozený atribut (čárkovaná čára) je založen na jiném atributu. Například datum narození zaměstnance je založeno na rodném čísle zaměstnance.
+

Obr. 22. Atribut
4.3.4
Kardinalita
Kardinalita definuje vztahy mezi dvěma entitami nebo množinami entit. Rozlišujeme tři hlavní typy. Jsou to vztahy jeden k jednomu (1:1), jeden k mnoha (1:N) a mnoho k mnoha (M:N). Dalším významným pojem je parcialita. Zatímco kardinalita specifikuje výskyt vztahu, parcialita popisuje vztah jako povinný nebo nepovinný. Jinými slovy, kardinalita určuje maximální počet vztahů a parcialita určuje minimální počet vztahů.
Příklad vztahu 1:1 je jeden student spojený s jednou poštovní adresou, jednoho k mnoha (nebo mnoho k jednomu, v závislosti na směru vztahů) je, když si jeden student registruje více kurzů, ale všechny tyto kurzy mají jediný řádek zpět k jednomu studentovi a konečně mnoho k mnoha je, pokud jsou studenti jako skupina spojováni s více vyučujícími a vyučující jsou zase spojeni s více studenty.
Existuje několik konvencí pro vyjádření ERD.
+

Obr. 23. Chenova notace
+

Obr. 24. Crow´s foot
+

Obr. 25. Bachmanův zápis
+

Obr. 26. Notace UML
4.3.5
Postup při tvorbě ER diagramu
Při tvorbě ER diagramu posupujeme v následujících krocích:
- Definujeme účel a rozsah toho, co analyzujeme nebo modelujeme.
- Identifikujme subjekty, kterými se budeme zabývat. Pokud tyto subjekty máme nadefinované, zakreslíme je do obdélníků a označíme je podstatnými jmény.
- Určíme vztahy mezi všemi entitami. Nakreslíme mezi nimi čáry a označíme je. Některé entity nemusí být propojené, a to je v pořádku.
- K jednotlivým entitám přidáme klíčové atributy.
- U jednotlivých vztahů vyřešíme kardinalitu a parcialitu.
+

Obr. 27. Příklad ER diagramu – Chenova notace
+

Obr. 28. Příklad ER diagramu – Crow´s foot
+

Obr. 29. Příklad ER diagramu – Bachman
+

Obr. 30. Příklad ER diagramu – UML