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) \times logická úroveň (data a vztahy) 2)
  • Schéma = logická struktura databáze \times 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 A_{1}, A_{2}, … ,A_{n}, relace r je podmnožina kartézského součinu A_{1} \times A_{2} \times ... \times A_{n}, tedy relace r je množina n-tic (a_{1}, a_{2}, ... ,a_{n}). (Laicky: Relační model sdružuje data do tzv. relací (tabulek), které obsahují n-tice (řádky).) 5)

Relační schéma

  • A_{1}, A_{2}, …, A_{n} jsou atributy 6)
  • R = (A_{1}, A_{2}, ..., A_{n}) 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 r_{1}(R_{1}) a r_{2}(R_{2}), \alpha je cizí klíč odkazující na K_{1} v r_{1}, pak \Pi_{\alpha} (r_{2}) \subseteq \Pi_{K_{1}} (r_{1}) 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) \sigma_{P}(r) = \{ t\ |\ t \in r\ and\ P(t)\}, Př.: \displaystyle \sigma_{A = B \wedge  D > 5}(r) ( vybere řádky, kde je zároveň A=B a D>5 )
    • projekce \Pi_{A_{1}, A_{2},...,A_{k}}(r), výsledkem je relace vyjmenovaných sloupců, duplicitní řádky jsou z výsledku odstraněny, relace je totiž množina.
    • sjednocení r \cup s = \{ t\ |\ t\ \in r\ or\  t \in s \}, r a s musí mít stejnou aritu a kompatibilní domény
    • rozdíl množin r - s = \{ t\ |\ t \in  r\ and\  t \not\in s \} r a s musí mít stejnou aritu a kompatibilní domény
    • kartézský součin r \times s = \{ t \ q\ |\ t \in r\ and\  q \in s \}, atributy r(R) a s(S) jsou disjunktní, jinak se musí přejmenovat
    • přejmenování je unární operace \rho_{novar(nA, nB, C)}(r), musí být uvedeno nové jméno relace a také všechny její atributy

Spojování relací

  • přirozené spojení (natural join) r s = \Pi_{r.A, r.B, r.C, r.D, s.E}(\sigma_{r.B=s.B \wedge r.D=s.D}(r \times s)) v případě R=(A, B, C, D) a S=(E, B, D) 17)

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ů:
    • všechny použité Gi atributy
    • jeden atribut pro každou použitou souhrnnou funkci 21)

Další operace

  • operace přiřazení \leftarrow je vhodná pro vytváření komplexních dotazů; dotazy se píší jako sekvenční program

Příklad

temp1 \leftarrow \Pi_{R-S}(r)
temp2 \leftarrow \Pi_{R-S}((temp1 \times s) - \Pi_{R-S,S}(r))
result = temp1 - tem2 22)
  • operace dělení r \div s 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

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.

1)
kapitola 1 strana 1 ve skriptech předmětu PB154 Základy databázových systémů
2) , 3)
kapitola 1 strana 2 ve skriptech předmětu PB154 Základy databázových systémů
4)
kapitola 1 strana 3 ve skriptech předmětu PB154 Základy databázových systémů
5) , 6) , 7) , 8)
kapitola 3 strana 1 ve skriptech předmětu PB154 Základy databázových systémů
9) , 10) , 11) , 12)
kapitola 2 strana 5 a kapitola 3 strana 2 ve skriptech předmětu PB154 Základy databázových systémů
13) , 15)
kapitola 6 strana 1 ve skriptech předmětu PB154 Základy databázových systémů
14)
http://cs.wikipedia.org/wiki/Relační_databáze a kapitola 6 strana 1 ve skriptech předmětu PB154 Základy databázových systémů
16)
kapitola 3 strana 3 ve skriptech předmětu PB154 Základy databázových systémů
17)
kapitola 3 strana 6 ve skriptech předmětu PB154 Základy databázových systémů
18) , 20)
kapitola 3 strana 13 ve skriptech předmětu PB154 Základy databázových systémů
19)
Převzato z materiálů od Eleny Halické
21)
kapitola 3 strana 14 ve skriptech předmětu PB154 Základy databázových systémů
22)
kapitola 3 strana 9 ve skriptech předmětu PB154 Základy databázových systémů
23)
kapitola 3 strana 7 ve skriptech předmětu PB154 Základy databázových systémů

Diskuze

, 2008/06/06 16:55

Pridali jsme prikladky na spojeni relaci.

, 2008/06/18 02:26

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 …

, 2008/06/18 11:43

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.

, 2008/06/18 15:36

EDIT: Omlouvám se, projekcí jsem samozřejmě myslel selekci

, 2008/06/23 02:18

Pekne spracovaná otázka, díky :)

, 2009/06/08 22:10

Musím se připojit k předešlé pochvale. Klobouk dolů :)

, 2009/06/23 00:00

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.

You could leave a comment if you were logged in.
home/prog/ap8.txt · Poslední úprava: 2020/04/12 16:56 (upraveno mimo DokuWiki)
Nahoru
CC Attribution-Noncommercial-Share Alike 4.0 International
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0