FAV-ZCU/KIV DB1/03. E-R-A modely.md

82 lines
3.1 KiB
Markdown
Raw Normal View History

2024-01-08 23:05:31 +01:00
# 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