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

82 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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