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 [2026/06/16 21:50] (current) – [Boyce-Coddova normální forma (BCNF)] badinmic | ||
|---|---|---|---|
| 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 430: | Line 465: | ||
| * Přísnější než 3NF – eliminují se i závislosti, | * Přísnější než 3NF – eliminují se i závislosti, | ||
| - | * Příklad porušení | + | * Příklad porušení |
| * Relace `{__StudentID__, | * Relace `{__StudentID__, | ||
| * `CourseID` → `Instructor` | * `CourseID` → `Instructor` | ||
| 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. | ||