Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model



Podobné dokumenty
Predikátová logika. prvního řádu

platné nejsou Sokrates je smrtelný. (r) 1/??

1 Výroková logika 1. 2 Predikátová logika 3. 3 Důkazy matematických vět 4. 4 Doporučená literatura 7

Databázové systémy. * relační algebra. Tomáš Skopal. - relační model

Okruh č.3: Sémantický výklad predikátové logiky

teorie logických spojek chápaných jako pravdivostní funkce

Každé formuli výrokového počtu přiřadíme hodnotu 0, půjde-li o formuli nepravdivou, a hodnotu 1, půjde-li. α neplatí. β je nutná podmínka pro α

Unární je také spojka negace. pro je operace binární - příkladem může být funkce se signaturou. Binární je velká většina logických spojek

Výroková a predikátová logika - VI

Rezoluční kalkulus pro logiku prvního řádu

Úvod do TI - logika Predikátová logika 1.řádu (4.přednáška) Marie Duží marie.duzi@vsb.cz

Matematická logika. Miroslav Kolařík

Výroková logika. Sémantika výrokové logiky

J. Zendulka: Databázové systémy 4 Relační model dat 1

Výroková a predikátová logika - VII

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony.

4.2 Syntaxe predikátové logiky

Výroková a predikátová logika - X

0. ÚVOD - matematické symboly, značení,

Formální systém výrokové logiky

Predikátová logika. Teoretická informatika Tomáš Foltýnek

Výroková a predikátová logika - V

Výroková logika. Teoretická informatika Tomáš Foltýnek

Databázové systémy. Přednáška č. 5

Matematická logika. Rostislav Horčík. horcik

Úvod do logiky (presentace 2) Naivní teorie množin, relace a funkce

Logika. 2. Výroková logika. RNDr. Luděk Cienciala, Ph. D.

Výroková a predikátová logika - IX

Základní pojmy matematické logiky

Místo pojmu výroková formule budeme používat zkráceně jen formule. Při jejich zápisu

Relační model dat (Codd 1970)

Logické programy Deklarativní interpretace

Sémantika predikátové logiky

Výroková a predikátová logika - IX

Predikátová logika (logika predikátů)

Klasická výroková logika - tabulková metoda

Formální sémantika SQL dotazování

2.5 Rezoluční metoda v predikátové logice

4. Relační model dat. J. Zendulka: Databázové systémy 4 Relační model dat 1

Predikátová logika [Predicate logic]

Výroková a predikátová logika - VIII

Logika a logické programování

Predikátová logika Individua a termy Predikáty

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

Databázové systémy BIK-DBS

Výroková a predikátová logika - VIII

Databáze I. Přednáška 2

Výroková a predikátová logika - II

Úvod do logiky (PL): analýza vět přirozeného jazyka

Modely Herbrandovské interpretace

Výroková logika - opakování

Predik atov a logika - pˇredn aˇska () Predik atov a logika - pˇredn aˇska / 16

Klauzulární logika. úvod. Šárka Vavrečková. 20. října Ústav informatiky Filozoficko-Přírodovědecká fakulta Slezské univerzity, Opava

Binární logika Osnova kurzu

Inovace tohoto kurzu byla spolufinancována z Evropského sociálního fondu a státního rozpočtu České republiky.

Jazyk SQL 2. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c M.Valenta, 2011 BI-DBS, ZS 2011/12

Dotazování v relačním modelu a SQL

Michal Valenta DBS Databázové modely 2. prosince / 35

SINGULÁRNÍ VÝROKY: Jednoduchý singulární výrok vznikne spojením singulárního termínu s termínem obecným pomocí spony=slova je.

Úvod do logiky (VL): 5. Odvození výrokových spojek z jiných

4. Relační algebra. Databáze použité v příkladech. Operace. Selekce. jméno relace(selekční podmínka)

Matematika I. Přednášky: Mgr. Radek Výrut, Zkouška:

Kapitola 3: Relační model. Základní struktura. Relační schéma. Instance relace

Hilbertovský axiomatický systém

Databáze. Logický model DB. David Hoksza

LOGIKA VÝROKOVÁ LOGIKA

Úvod do logiky (PL): negace a ekvivalence vět mimo logický

Výroková a predikátová logika - II

Úvod do informatiky. Miroslav Kolařík

Kapitola 7: Návrh relačních databází. Nástrahy relačního návrhu. Příklad. Rozklad (dekompozice)

I) Příklady (převeďte následující věty do formulí PL1 a ověřte jejich ekvivalenci pomocí de Morganových zákonů):

DBS relační DB model, relační algebra

Výroková a predikátová logika - VII

Dolování asociačních pravidel

UDL 2004/2005 Cvičení č.6 řešení Strana 1/5

Matematická indukce, sumy a produkty, matematická logika

Sémantika výrokové logiky. Alena Gollová Výroková logika 1/23

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

M - Výroková logika VARIACE

Integrace relačních a grafových databází funkcionálně

Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Negativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1

Další (neklasické) logiky. Jiří Velebil: AD0B01LGR 2015 Predikátová logika 1/20

Matematická analýza 1

Inteligentní systémy (TIL) Marie Duží

1 Pravdivost formulí v interpretaci a daném ohodnocení

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Programovací jazyk Prolog

Úvod do logiky (PL): sémantika predikátové logiky

Logika Libor Barto. Výroková logika

Matematika B101MA1, B101MA2

UČEBNÍ TEXTY OSTRAVSKÉ UNIVERZITY. Přírodovědecká fakulta RELAČNÍ DATABÁZE (DISTANČNÍ VÝUKOVÁ OPORA) Zdeňka Telnarová. Aktualizovaná verze 2006

Umělá inteligence I. Roman Barták, KTIML.

RELACE, OPERACE. Relace

Logika. 6. Axiomatický systém výrokové logiky

Predikátová logika dokončení

Databáze I. Přednáška 6

Pro každé formule α, β, γ, δ platí: Pro každé formule α, β, γ platí: Poznámka: Platí právě tehdy, když je tautologie.

Výroková a predikátová logika - II

Přednáška 2: Formalizace v jazyce logiky.

Transkript:

Databázové systémy Tomáš Skopal - relační model * relační kalkuly

Osnova přednášky relační kalkuly doménový n-ticový

Relační kalkuly využití aparátu predikátové logiky 1. řádu pro dotazování rozšíření o databázové predikáty, jejichž dvojí forma definuje doménový kalkul (DRK) pracuje s daty na úrovni atributů n-ticový kalkul (NRK) pracuje s daty na úrovni n-tic (prvků relace/řádků) výsledkem dotazu v DRK / NRK je opět relace (a její schéma)

Relační kalkuly prvky jazyka termy proměnné a konstanty predikátové symboly standardní binární predikáty {<, >, =,,, } databázové predikáty (rozšiřující logiku 1. řádu) formule atomické R(t 1, t 2,...), kde R predikátový symbol a t i je term složené výrazy, kterými lze kombinovat atomické/složené formule logickými spojkami,,,, kvantifikátory (existenční), (všeobecný)

Doménový kalkul proměnné zastupují atributy, resp. jejich hodnoty databázový predikát R(x, y,...) R je zároveň názvem tabulky, ke které se predikát vztahuje schéma predikátu (očekávané vstupní parametry) je shodné se schématem relace, tj. za každý atribut je třeba dosadit (ohodnocenou) proměnnou nebo konstantu predikát pro konkrétní hodnoty atributů x, y,... (ať jsou to proměnné nebo konstanty) nabývá hodnoty true, pokud v relaci R existuje prvek (řádek tabulky) s těmito hodnotami

Doménový kalkul databázový predikát proměnné a konstanty v predikátu mají přiřazen název atributu, přes který proběhne ohodnocování, např: KINO(NÁZEV_KINA : x, FILM : y) Potom schéma relace stačí definovat (neuspořádanou) množinou {NÁZEV_KINA, FILM}. pokud proměnné, resp. konstanty nemají přiřazen název atributu, předpokládá se, že jejich jednoznačné určení k atributům je popsáno pořadím, přičemž schéma relace je zadáno uspořádanou množinou atributů, např: KINO(x, y), kde <NÁZEV_KINA, FILM> je schéma relace KINO v dalším budeme uvažovat tento úsporný zápis

Doménový kalkul výstupem dotazu v DRK jsou všechna ohodnocení proměnných (a konstant) ve tvaru uspořádané n-tice, pro které platí formule dotazu {(t 1, t 2,...) formule dotazu obsahující proměnné t 1, t 2,... } t i je buď konstanta, anebo volná proměnná, tj. tyto proměnné nejsou uvnitř formule kvantifikovány schéma výsledné relace (odpovědi na dotaz) je definováno přímo názvy volných proměnných např. dotaz {(x, y) KINO(x, y)} vrátí relaci sestávající ze všech prvků relace KINO dotaz {(x) KINO(x, Titanic )} vrátí názvy všech kin, kde se hraje film Titanic

Doménový kalkul kvantifikátory umožňují svázat proměnnou s výskytem v nějaké formuli formule x R(t 1, t 2,..., x,...) je vyhodnocena jako pravdivá, pokud existuje doménové ohodnocení x takové, že n-tice (t 1, t 2,..., x,...) je prvkem R formule x R(t 1, t 2,..., x,...) je vyhodnocena jako pravdivá, pokud pro všechna doménová ohodnocení x jsou n-tice (t 1, t 2,..., x,...) prvky R např. dotaz {(film) nazev_kina KINO(nazev_kina, film) } vrátí názvy všech filmů hraných v alespoň jednom kině

Doménový kalkul důležité je určit, z jaké domény probíhá ohodnocování proměnných při kvantifikaci 1. doména může být nespecifikovaná (tj. ohodnocení není omezeno žádnou doménou) ohodnocení typu universum 2. doména je typ příslušného atributu ohodnocení podle domény 3. doména je množina hodnot daného atributu přítomných v relaci, ke které se ohodnocení vztahuje ohodnocení podle aktuální domény

Doménový kalkul např. dotaz {(film) nazev_kina KINO(nazev_kina, film) } se podle způsobu ohodnocování proměnné nazev_kina (typu/domény string) může lišit pokud ohodnocujeme podle univerza, dotaz nevrátí nic, protože v relaci KINO určitě nebudou prvky nabývající všech možných hodnot v atributu NAZEV_KINA (např. hodnoty kůň, 125, bflmpsvz tam jistě nebudou) pokud ohodnocujeme podle domény, dotaz také pravděpodobně nevrátí nic, protože v relaci KINO nebudou všechny hodnoty z domény string, např. kůň, bflmpsvz,... pokud ohodnocujeme podle aktuální domény, dotaz vrátí názvy všech filmů, které se hrají ve všech kinech (přítomných v relaci KINO)

Doménový kalkul pokud se implicitně uvažuje ohodnocování v kvantifikátorech podle aktuální domény, nazývá se takto omezený DRK DRK s omezenou interpretací protože schémata často obsahují mnoho atributů, zápis kvantifikace lze zjednodušit tak, že výraz R(t 1,.., t i, t i+2,...) tj. kde chybí proměnná t i+1 chápeme jako t i+1 R(..., t i+1,...) např. dotaz {(x) KINO(x)} chápeme jako {(x) y KINO(x, y)}

Příklady DRK FILM(JMENO_FILMU, JMENO_HERCE) HEREC(JMENO_HERCE, ROK_NAROZENI) Ve kterých filmech hráli všichni herci? {(f) FILM(f) h (HEREC(h) FILM(f, h))} Který herec je nejmladší? {(h,r) HEREC(h,r) h2 r2 (HEREC(h2,r2) h h2) r2 > r} nebo {(h,r) HEREC(h,r) h2 (HEREC(h2) r2(herec(h2,r2) h h2 r2 > r))} Které dvojice herců se sešly alespoň v jednom filmu? {(h1, h2) HEREC(h1) HEREC(h2) h1 h2 f, fh1 FILM(f, fh1) ( fh2 FILM(f, fh2) h1 = fh1 h2 = fh2)}

Vyhodnocení dotazu v DRK Který herec je nejmladší? {(h,r) HEREC(h,r) h2( HEREC(h2) r2 (HEREC(h2,r2) h h2 r2 > r)) } $result = for each (h,r) do if (HEREC(h,r) and (for each h2 do if (not HEREC(h2) or not (for each r2 do if (HEREC(h2,r2) h h2 r2 > r) = true then return true end for return false)) = false then return false univerzální kvantifikátor = řetězec konjunkcí existenční kvantifikátor = řetězec disjunkcí end for end for return true) ) = true then Add (h,r) into $result

N-ticový kalkul téměř vše stejné jako u DRK, pouze proměnné/konstanty jsou celé prvky relace (řádky), tj. predikát R(t) je ohodnocen pravdivě, pokud ohodnocení prvku t náleží do R výsledné schéma je tvořeno konkatenací schémat volných proměnných (n-tic) pro možnost přístupu k hodnotám atributů v rámci termu se používá tečkové notace např. dotaz {t KINO(t) t.film = Titanic } vrátí všechna kina, která hrají film Titanic navíc lze výsledek promítnout pouze na určité atributy např. dotaz {t[nazev_kina] KINO(t)}

Příklady NRK FILM(JMENO_FILMU, JMENO_HERCE) HEREC(JMENO_HERCE, ROK_NAROZENI) Dvojice stejně starých herců hrajících ve stejném filmu. {h1, h2 HEREC(h1) HEREC(h2) h1.rok_narozeni = h2.rok_narozeni f1, f2 FILM(f1) FILM(f2) f1.jmeno_filmu = f2.jmeno_filmu f1.jmeno_herce = h1.jmeno_herce f2.jmeno_herce = h2.jmeno_herce} Ve kterých filmech hráli všichni herci? {film[jmeno_filmu] herec(herec(herec) f(film(f) f.jmeno_herce = herec.jmeno_herce f.jmeno_filmu = film.jmeno_filmu))}

Bezpečné formule DRK u neomezené interpretace proměnných (resp. u doménově závislých formulí) mohou nastat problémy vedoucí k nekonečným odpovědím negace: {x R(x)} např. {j Zaměstnanec(Jméno: j)} disjunkce: {x,y R(.., x,...) S(.., y,...)} např. {i, j Zaměstnanec(Jméno: i) Student(Jméno: j)} naopak k prázdné odpovědi vedou (díky neomezené doméně) univerzální kvantifikace {x y R(x,..., y)}, a obecně dotazy {x y (x,..., y)}, kde neobsahuje disjunkce (resp. implikace) problém s nekonečnými kvantifikacemi jak je vyhodnocovat v konečném čase? řešením je omezit množinu formulí DRK

Bezpečné formule DRK abychom předešli nekonečné kvantifikaci, je dobré zavést omezené kvantifikátory, které omezují interpretaci/ohodnocení vázaných proměnných místo x ( (x)) budeme používat x (R(x) (x)) místo x ( (x)) budeme používat x (R(x) (x)) vyhodnocení lze potom implementovat jako for each x in R // konečná enumerace místo for each x // nekonečná enumerace volné proměnné v (x) lze rovněž omezit konjunkcí R(x) (x)

Bezpečné formule DRK pro bezpečné formule DRK platí: 1. dotaz neobsahuje (není problém, x (x) lze nahradit x ( (x))) 2. pro každou disjunkci 1 2 platí, že 1, 2 sdílí stejné volné proměnné (předpokladáme všechny implikace 1 2 převedené na disjunkce 1 2, totéž pro ekvivalence) 3. všechny volné proměnné v každé maximální konjunkci 1 2... n jsou omezené, tj. pro každou volnou proměnnou x platí alespoň jedna z podmínek: 1. existuje nějaká i kde se proměnná vyskytuje, která není negací ani binárním porovnáním (tj. i je nenegovaná složená formule anebo nenegovaný databázový predikát ) 2. existuje i x = a, kde a je konstanta 3. existuje i x = v, kde v je omezená 4. negaci lze aplikovat pouze v konjunkcích bodu 3

Příklad bezpečné výrazy {x,y x = y} {x,y x = y R(x,y)} {x,y x = y R(x,y)} není bezpečná (x ani y není omezená) není bezpečná (disjunkce sice sdílí obě volné proměnné, ale první maximální konjunkce (x=y) opět obsahuje porovnávání neomezených proměnných) je bezpečná {x,y,z R(x,y) (P(x,y) Q(y,z))} není bezpečná (z neomezeno v konjunkci + navíc disjunkce nesdílí tytéž proměnné) {x,y,z R(x,y) P(x,y) Q(y,z)} ekvivalentní úprava předchozí f. už bezpečná

Relační kalkuly vlastnosti ještě více deklarativní než relační algebra (tam jistou strukturu vyhodnocení dotazu naznačuje vnoření operací) specifikuje se pouze to, co má výsledek splňovat DRK i NRK jsou relačně úplné lze je navíc rozšířit tak, že zahrnují větší třídu dotazů kromě jiného formy zápisu dotazu lze relační algebru a kalkuly vnímat jako různě jemný přístup k datům relační algebra pracuje s relacemi (celými tabulkami) NRK pracuje s prvky relace (celými řádky) DRK pracuje s prvky atributů (prvky řádků)

Příklady srovnání DRK, NRK, rel.alg. FILM(JMENO_FILMU, JMENO_HERCE) HEREC(JMENO_HERCE, ROK_NAROZENI) Ve kterých filmech hráli všichni herci? RA: FILM % HEREC[JMENO_HERCE] DRK: {(f) FILM(f) h (HEREC(h) FILM(f, h))} NRK: {film[jmeno_filmu] herec(herec(herec) f(film(f) f.jmeno_herce = herec.jmeno_herce f.jmeno_filmu = film.jmeno_filmu))}

Příklady srovnání DRK, NRK, rel.alg. ZAMESTNANEC(jmeno, prijmeni, stav, pocet_deti, kvalifikace, delka_praxe, zdravotni_stav, trestni_rejstrik, plat) klíčem jsou všechny atributy kromě platu Dvojice zaměstnanců pobírajících podobný plat (rozdíl max. o 1000Kč)? DRK: {(z1, z2) p1, s1, pd1, k1, dp1, zs1, tr1, pl1, p2, s2, pd2, k2, dp2, zs2 tr2, pl2 ZAMESTNANEC(z1, p1, s1, pd1, k1, dp1, zs1, tr1, pl1) ZAMESTNANEC(z2, p2, s2, pd2, k2, dp2, zs2 tr2, pl2) pl1-pl2 1000 (z1 z2 s1 s2 pd1 pd2 k1 k2 dp1 dp2 zs1 zs2 tr1 tr2) } NRK: {z1[jmeno], z2[jmeno] ZAMESTNANEC(z1) ZAMESTNANEC(z2) z1 z2 z1.plat - z2.plat 1000 }

Rozšíření relačních kalkulů relační úplnost často nestačí umožňuje pouze data existující v tabulkách chtěli bychom data i odvozovat, resp. v dotazech používat tato odvozená data např. dotazy typu Kteří zaměstnanci mají plat o 10% vyšší než je průměrný plat? řešení zavedení agregačních funkcí do kalkulů více o agregačních funkcích v dalších přednáškách (SQL)