Obsah
AP8, IN8 Databáze I
Zadání
(relační model, relační schéma, klíče relačních schémat, integritní omezení, relační algebra, spojování relací)
Vypracování
Pár pojmů na začátek
- Účel databázových systémů – řešit problémy redundance dat, inkonsistence, integrity, bezpečnosti 1)
- Fyzická úroveň (jak je záznam uložen)
logická úroveň (data a vztahy) 2)
- Schéma = logická struktura databáze
instance = aktuální obsah v čase 3)
- Model dat = sada nástrojů pro popis dat, vztahů mezi daty a sémantiky dat 4)
- DBMS = database management system, tj. systém pro správu databází (např. Oracle, MS SQL Server, MySql atp.)
Relační model dat
- Relační model dat = logický model založený na záznamech.
- Základní struktura: mějme množiny
,
, … ,
, relace r je podmnožina kartézského součinu
, tedy relace r je množina n-tic
. (Laicky: Relační model sdružuje data do tzv. relací (tabulek), které obsahují n-tice (řádky).) 5)
Relační schéma
Příklad schématu: Schéma-zákazníka = (jméno, příjmení, ulice, psč, město, telefon).
Příklad relace: r = {(Jan, Novák, Vodova 20, 628 00, Brno, 123567), (Alena, Nováková, Vodova 20, 628 00, Brno, 987654), (Iva, Dlouhá, Velká 12, 683 21, Pustiměř, 222222)}
Klíče relačních schémat
- Klíč je část relačního schématu 9), podmnožina atributů
- Superklíč je identifikátor záznamu (n-tice) dostatečný pro jednoznačnou identifikaci 10)
- Kandidátní klíč je minimální superklíč 11), tzn. po odebrání jakékoliv množiny atributů by již neidentifikoval záznamy jednoznačně.
- Primární klíč je jeden zvolený kandidátní klíč 12)
Integritní omezení
Integritní omezení je vlastnost DBMS, která zajišťuje, že se databáze po dokončení každé operace nachází v korektním stavu.
Druhy integritních omezení:
- Entitní – každé relační schéma má řádně definovaný primární klíč a každá relace na tomto schématu má tento klíč unikátně definovaný
- Doménové – zajišťuje dodržování datových typů definovaných u sloupců databázové tabulky (v SQL klauzule check) 13). U zkoušky by možná šlo ještě zmínit, že existuje nějaké přirozené omezení domény vyplývající z datového typu sloupce.
- Referenční integritní omezení – zabývají se vztahy dvou tabulek, kde jejich relace je určena vazbou primárního a cizího klíče; mějme
a
,
je cizí klíč odkazující na
v
, pak
14) Databázové systémy ještě navíc poskytují možnost tzv. kaskádovité aktualizace - to znamená, že když v tabulce A upravíme hodnotu jejího primárního klíče, tak se hodnota daného klíče aktualizuje i v tabulce B, která má cizí klíč odkazující se na ten primární v tabulce A.
- Referenční integrita v E-R modelu – zde to může být například omezení, kdy relační schéma pro slabou množinu entit musí zahrnovat primární klíč nadřazené entitní množiny
Hlídá se modifikace databáze – vkládání, mazání, aktualizace. 15)
Relační algebra
- je čistý procedurální dotazovací jazyk (tedy uživatel řekne posloupnost kroků; bez syntaktického cukru)
- 6 základních operátorů, které berou jednu nebo více relací a vrací jednu relaci: 16)
- výběr (selekce)
, Př.:
(// vybere řádky, kde je zároveň A=B a D>5 //)
- projekce
, výsledkem je relace vyjmenovaných sloupců, duplicitní řádky jsou z výsledku odstraněny, relace je totiž množina.
- sjednocení
, r a s musí mít stejnou aritu a kompatibilní domény
- rozdíl množin
r a s musí mít stejnou aritu a kompatibilní domény
- kartézský součin
, atributy r(R) a s(S) jsou disjunktní, jinak se musí přejmenovat
- přejmenování je unární operace
, musí být uvedeno nové jméno relace a také všechny její atributy
Spojování relací
- vnější spojení (outer join) rozšiřuje operaci přirozeného spojení tak, aby se zabránilo ztrátě informací; spočítá operaci spojení a přidá n-tice z jedné relace, které neodpovídají n-ticím druhé. Používá hodnotu null. Jakékoliv porovnání s null je null (nebo se také používá označení unknown); pokud má být unknown vyhodnocen jako true nebo false (např. v části WHERE příkazu SELECT), pak je to false. 18)
V praxi se používá varianta „left“ a „right“ – to určuje zda, se do výsledků zahrnou všechny záznamy z tabulky nalevo od operátoru spojení, resp. napravo od operátoru spojení. Taktéž existuje varianta „full outer“, která do výsledků zahrne všechny záznamy z obou tabulek a tam, kde nemá daný záznam odpovídající záznam z druhé tabulky, tak se použije null.
Příklad
| id | jméno | příjmení | věk |
|---|---|---|---|
| 1 | Pavel | Havel | 18 |
| 2 | Jan | Novák | 19 |
| 3 | Láďa | Koupelna | 99 |
ADRESA :
| id | město | ulice |
|---|---|---|
| 1 | Brno | Jarní |
| 3 | Praha | Zelená |
| 5 | Ostrava | Černá |
| id | jméno | příjmení | věk | město | ulice |
|---|---|---|---|---|---|
| 1 | Pavel | Havel | 18 | Brno | Jarní |
| 2 | Jan | Novák | 19 | null | null |
| 3 | Láďa | Koupelna | 99 | Praha | Zelená |
| id | jméno | příjmení | věk | město | ulice |
|---|---|---|---|---|---|
| 1 | Pavel | Havel | 18 | Brno | Jarní |
| 3 | Láďa | Koupelna | 99 | Praha | Zelená |
| 5 | null | null | null | Ostrava | Černá |
| id | jméno | příjmení | věk | město | ulice |
|---|---|---|---|---|---|
| 1 | Pavel | Havel | 18 | Brno | Jarní |
| 2 | Jan | Novák | 19 | null | null |
| 3 | Láďa | Koupelna | 99 | Praha | Zelená |
| 5 | null | null | null | Ostrava | Černá |
Podněty, co lze zmínit dále
- Relační model vlastně reprezentuje databázi v relačním pohledu (existují i jiné pohledy, např. objektový, hierarchický). V relačním pohledu také existují různé přístupy: relační algebra, n-ticový relační kalkul, doménový relační kalkul. 19)
Rozšířená relační algebra
Liší se od základní relační algebry především v tom, že dovoluje duplicity.
- zobecněná projekce je operací rozšířené relační algebry a umožňuje použití aritmetických funkcí v seznamu projekce 20)
- souhrnné funkce – souhrnný operátor vezme kolekci hodnot a vrátí jednoduchou hodnotu, příklady funkcí: avg, min, max, sum, count.

- E je jakýkoliv výraz relační algebry
- G1, G2, … , Gn je seznam atributů podle kterých se n-tice seskupují
- Fi je souhrnná funkce
- Ai je jméno atributu
- Výsledkem je relace složená z atributů:
- všechny použité Gi atributy
- jeden atribut pro každou použitou souhrnnou funkci 21)
Další operace
- operace přiřazení
je vhodná pro vytváření komplexních dotazů; dotazy se píší jako sekvenční program
Příklad
- operace dělení
odpovídá dotazům, které obsahují frázi „pro všechny“ 23)
Předměty
- FI:PB154 Základy databázových systémů (podzim 2007), prof. Ing. Pavel Zezula, CSc.
Použitá literatura
- Osnova předmětu PB154 a z ní odkazované dokumenty k předmětu PB154 (česky přeložené dokumenty jsou jen pro přihlášené v IS MU)
- Kapitola 3: Relační model hlavní dokument, ze kterého jsem čerpala informace, přístupný jen pro přihlášené v IS MU, autorem je prof. Ing. Pavel Zezula, CSc.
Kam dál?
Vypracuje
Jitka Pospíšilová ICQ: 218703195 mám <99%>, aspoň si to myslím, pokud myslíte, že mi zde něco chybí, doplňujte
Otázku si přečetl pan RNDr. Vlastislav Dohnal a rámcově prošel. Jeho podněty pro doplnění textu, opravy nesrovnalostí a odstranění matoucích či k otázce se nevztahujících textů byly do otázky zaneseny. Tato kontrola je jen rámcová, stále se může stát, že v otázce zůstala zapomenutá chybka či nesrovnalost, vyučující za toto nenese odpovědnost, berte tuto rámcovou kontrolu jako formu pomoci od vyučujících pro studenty.





Diskuze
Pridali jsme prikladky na spojeni relaci.
Zajímalo by mě, jestli můžou být tabulky u natural joinu disjunktní (respektive, jestli nemusí mít alespoň jeden stejný atribut). Nevíte někdo? V případě kladné odpovědi, co bude v nedefinovaných hodnotách (null?), to už by pak bylo to samé jak outer join ne?
Dík …
Myslím si, že pokud budou 2 tabulky disjunktní, tak z definice joinu se bude jednat o běžný kartézký součin, protože nemáme na co uplatnit projekci(tu v definici), a tedy daný kartézký součin nebude omezen na pouze společné prvky.
EDIT: Omlouvám se, projekcí jsem samozřejmě myslel selekci
Pekne spracovaná otázka, díky :)
Musím se připojit k předešlé pochvale. Klobouk dolů :)
myslím, že schéma relace by uplně správně mělo být R=(A1:D1,…,An:Dn), kde Ai je nazev a Di domena i-teho atributu, atribut je potom právě tato dvojice.