82 lines
No EOL
3.1 KiB
Markdown
82 lines
No EOL
3.1 KiB
Markdown
# 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 <N:1> 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 |