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í schéma
-
je
relační schéma 7)
r(R) je relace (pojmenování) na relačním schématu R
8)
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
Spojování relací
Příklad
OSOBA :
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á |
OSOBA ADRESA
id | jméno | příjmení | věk | město | ulice |
1 | Pavel | Havel | 18 | Brno | Jarní |
3 | Láďa | Koupelna | 99 | Praha | Zelená |
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
OSOBA :
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á |
OSOBA ADRESA
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á |
OSOBA ADRESA
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á |
OSOBA ADRESA
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ů:
Další operace
operace přiřazení je vhodná pro vytváření komplexních dotazů; dotazy se píší jako sekvenční program
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
-
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.
Nahoru
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.