# E-R-A modely **Co znamená E-R-A** - **E** – Entity (entita) - **R** – Relationship (relace, vazba) - **A** – Attribute (atribut) **Entita** - reprezentuje objekt z reálného světa - popsána relevantními atributy - může být v nějakém vztahu k jiné entitě - zakresluje se jako obdélník **Atributy** - entitu popisujeme pomocí hodnot atributů - atributy mají **datový typ**, **formát**, **povinnost výskytu** a **výchozí hodnotu** - **klíč** - jednoznačně určuje entitu - měl by být podtržen nebo označen předponou PK (primary key) - v případě nutnosti je uměle tvořený (id), nenese informaci ale je unikátní **Vazby (Relace)** - vazba vyjadřuje vztah mezi entitami - kardinalita určuje počet entit, které se na vztahu podílejí (1:1, 1:N, M:N) - povinnost výskytu určuje, zda se entita musí nebo nemusí na vztahu podílet **Realizace entit a vazeb v tabulkách** - entitu realizujeme tabulkou, kde každý řádek představuje entitu - vazba **1:1** musí být oprávněná - Proč nemůžeme spojit obě entitní množiny dohromady? - vazba **1:N** se realizuje pomocí cizího klíče FK (Foreign Key) - vazba **M:N** se může realizovat pomocí pomocné entitní množiny (tabulky) - vazba může mít atribut, řešeno pomocnou tabulkou - mezi dvěma entitami může existovat více vazeb - zaměstnanec je vedoucím oddělení a zároveň zaměstnán na oddělení - vazba může mít **aritu** (n-ární) - vazby s aritou 3 a více řešit rozkladem jako u M:N - unární vazba - vazby mezi stejnou entitní množinou **Datový model formulářů** - formuláře obsahují **hlavičku** a **položky** - např. faktura, skladový lístek - mezi hlavičkou a položkami je vazba 1:N - klíč položky může být unikátní - v rámci systému (nedoporučuje se) - v rámci formuláře (dvojice id formuláře a id položky) **Fan Trap** - situace, kde kvůli neklíčovým vazbám dochází k chybě v modelu - mějme: pracovníci katedra <1:N> oddělení - není možné zjistit, na jakém oddělení pracuje pracovník - řešením může být přidání dalších vazby nebo změna cizího klíče (u pracovníka) - při návrhu modelu je důležité předejít "fan trap" a zajistit konzistenci dat **Cykly v E-R-A modelech** - příklad: komentář <1:N> uživatel <1:N> příspěvek <1:N> komentář - komentář - uživatel: _napsal uživatel_ - komentář - příspěvek - uživatel: _napsal příspěvek_ - snaha o eliminaci cyklů a udržení konzistence **Chasm trap** - v řetězu vazeb 1:N vyskytuje se alespoň jedna vazba s nepovinným výskytem - příklad: katedra <1:N> pracovníci <1:N(0)> majetek - nezjistíme, jaký majetek patří které katedře - řešení: nová vazba (1:N) mezi nedostupné entitní množiny (katedra <1:N> majetek) **Rozšířený E-R-A model** - EER - Enhanced Entity-Relationship Modeling - zavádí prvky OOP do datového modelování - nadtřídy, podtřídy, dědění atributů a vztahů - dovoluje použití komplexních datových typů - využívá agregace, kompozice, generalizace a specializace