Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
statnice:bakalar:b0b36dbs [2025/06/04 22:28] – zapleka3 | statnice:bakalar:b0b36dbs [2025/06/14 21:53] (current) – [Transformace ER schématu do relačního schématu] prokop | ||
---|---|---|---|
Line 88: | Line 88: | ||
* Operace: prohledávání grafu, porovnávání vzorů, grafové algoritmy. | * Operace: prohledávání grafu, porovnávání vzorů, grafové algoritmy. | ||
* Použití např.: RDF, FlockDB, sociální sítě. | * Použití např.: RDF, FlockDB, sociální sítě. | ||
+ | |||
+ | ==== Relační model ==== | ||
+ | |||
+ | === Definice === | ||
+ | * Relační model je **teoretický základ relačních databází**. | ||
+ | * Informace jsou uloženy v **relacích** (tabulkách), | ||
+ | * **relace** = množina n-tic (řádků), | ||
+ | * **atribut** = sloupec tabulky, | ||
+ | * každá relace má svůj **název** a **schéma** (atributy a jejich domény). | ||
+ | |||
+ | * Relace je matematicky definována jako **množina** (žádné duplicitní řádky). | ||
+ | |||
+ | === Klíč (Key) === | ||
+ | * Klíč je **množina atributů**, | ||
+ | * Pokud existuje více klíčů, označujeme jeden jako **primární klíč** (primary key). | ||
+ | * Klíč musí být **minimální** – žádný jeho podmnožinový soubor nesmí být klíčem. | ||
+ | |||
+ | === Nadklíč (Superkey) === | ||
+ | * Nadklíč je **množina atributů, která jednoznačně identifikuje řádky**, ale **nemusí být minimální**. | ||
+ | * Každý **klíč je zároveň nadklíč**, | ||
+ | | ||
+ | * Příklad: | ||
+ | * Uživatel(ID, | ||
+ | * Nadklíč: {ID, jméno}, {ID, e-mail}, {ID, jméno, e-mail} | ||
+ | * Klíč: {ID} | ||
+ | |||
+ | === Cizí klíč (Foreign Key) === | ||
+ | * Cizí klíč je **atribut (nebo více atributů)**, | ||
+ | * Zajišťuje **referenční integritu** mezi dvěma tabulkami. | ||
+ | * Při vkládání nebo mazání hodnot musí být zachována návaznost mezi tabulkami. | ||
+ | |||
+ | * Příklad: | ||
+ | * Tabulka `Objednávka`(ID, | ||
+ | * `zákazník_id` je cizí klíč do `Zákazník`(ID) | ||
+ | |||
==== Transformace ER schématu do relačního schématu ==== | ==== Transformace ER schématu do relačního schématu ==== | ||
Line 493: | Line 528: | ||
* **Zamykací protokol** zajišťuje konfliktní serializovatelnost. | * **Zamykací protokol** zajišťuje konfliktní serializovatelnost. | ||
* Typy zámků: | * Typy zámků: | ||
- | * **XLOCK (exkluzivní zámek)** – pouze pro jednu transakci, umožňuje zápis. | + | * **XLOCK (exkluzivní zámek)** – pouze pro jednu transakci, umožňuje zápis |
* **SLOCK (sdílený zámek)** – umožňuje více transakcím číst. | * **SLOCK (sdílený zámek)** – umožňuje více transakcím číst. | ||
* **UNLOCK** – uvolnění zámku. | * **UNLOCK** – uvolnění zámku. |