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

Podobné dokumenty
Formální sémantika SQL dotazů

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

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

Úvod do databázových systémů

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

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Predikátová logika. prvního řádu

Úvod do databázových systémů

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

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

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

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

4.2 Syntaxe predikátové logiky

Sémantika predikátové logiky

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áze SQL SELECT. David Hoksza

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

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

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

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

Logika a logické programování

Databázové systémy. Cvičení 6: SQL

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

10. Techniky formální verifikace a validace

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

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

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 α

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

6. blok část C Množinové operátory

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

2.2 Sémantika predikátové logiky

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

Úvod do predikátové logiky. (FLÚ AV ČR) Logika: CZ.1.07/2.2.00/ / 1

Úvod do databázových systémů

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

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

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

Matematická logika. Rostislav Horčík. horcik

Predikátová logika dokončení

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

Informační systémy ve zdravotnictví. 8. cvičení

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

Databázové systémy I

Tableaux metody. Jiří Vyskočil 2011

Kapitola 4: SQL. Základní struktura

Logické programy Deklarativní interpretace

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

Skolemizace. x(x + f(x) = 0). Interpretace f unární funkce, která pro daný

Obsah Předmluva Rekapitulace základních pojmů logiky a výrokové logiky Uvedení do predikátové logiky...17

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Predikátová logika [Predicate logic]

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

Úvod do databázových systémů

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

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Matematická logika. Rostislav Horčík. horcik

Databázové systémy Tomáš Skopal

Informační systémy ve zdravotnictví. 10. cvičení

Fuzzy logika a reálný svět, aneb jsou všechny hromady skutečně malé?

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

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

Deskripční logika. Petr Křemen FEL ČVUT. Petr Křemen (FEL ČVUT) Deskripční logika 37 / 157

KIV/ZIS cvičení 5. Tomáš Potužák

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

Matematická logika. Miroslav Kolařík

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

5. blok Souhrnné a skupinové dotazy

4. blok část A Logické operátory

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

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

- sloupcové integritní omezení

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

Základní pojmy matematické logiky

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

6. blok část B Vnořené dotazy

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

OQL. (Object Query Language) Michal Bartoš Filip Bureš

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

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Operátory ROLLUP a CUBE

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

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

Predikátová logika Individua a termy Predikáty

Matematika B101MA1, B101MA2

Databázové systémy. Dotazovací jazyk SQL - II

Výroková logika syntaxe a sémantika

DATA CUBE. Mgr. Jiří Helmich

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

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

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 - V

Hilbertovský axiomatický systém

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

PRG036 Technologie XML

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

Obsah ZÁKLADNÍ POJMY LOGIKA DESKRIPTIVNÍHO JAZYKA 2 VÝROKOVÁ LOGIKA 49 3 VNITŘNÍ STAVBA VÝROKŮ 78

Úvod do programovacích jazyků (Java)

7 Jemný úvod do Logiky

/1: Teoretická informatika(ti) přednáška 4

Predikátová logika: Axiomatizace, sémantické stromy, identita. (FLÚ AV ČR) Logika: CZ.1.07/2.2.00/ / 13

Transkript:

Formální sémantika SQL dotazování Elina Hazaran Zuzana Vytisková 6.11. 2012 podle M. Negri, G. Pelagatti, L. Sbattela, 1991

Základní pojmy Formální logický model Pravidla pro překlad SQL dotazů do tohoto modelu Dokazování ekvivalence SQL dotazů

Formální model: ROZŠÍŘENÁ TŘÍHODNOTOVÁ PREDIKÁTOVÁ LOGIKA (Extended three-value predicate calculus = E3VPC) true, false, unknown založena na "vícedruhové" nebo "vícesortové" logice (Many-sorted logic) termy různého druhu umožňujě pokrýt všechny dotazy

SQL -> E3VPC Pravidla umožňují převést libovolný dotaz v SQL do E3VPC formy (Zpracována podle ANSI normy, tedy 1986) Jsou relativně jednoduchá (je jich jen 33)

Ekvivalence dotazů pravidla pro převedení z E3VPC do tvaru, se kterým je možno zacházet postupy základní dvouhodnotové logiky situace, kdy nefunguje dobře

E3VPC - rozšíření Symboly, které se nevyskytují v dvouhodnotové logice, ale jsou nutné pro definici SQL sémantiky: -kompaktní formy -agregační funkce -tříhodnotová logika -interpretační operátor -operátor na porovnání NULL hodnot - externí referenční operátor

Struktura E3VPC výrazu cílový seznam interpretační operátor nabývá hodnot: T(true), F(false) {t(v 1,...,v n ) : P(v 1,...,v n α } n-tice proměnných predikátová formule

Cílový seznam - Má tvar v 1 in R 1,..., v n in R n -Lze chápat jako definiční obor, nad kterým bude výhodnocen predikát -SELECT c.id FROM CLIENTS c odpovídá c in CLIENTS

Predikátová formule Je definována rekurzivně pomocí termů a porovnávacích operátorů: 1) Term - konstanta - v l.a l a v l.a l - f(a)s 2) Porovnávací operátory - =,, >, <,... -

Predikátová formule - pravidla 1) Atomické predikáty - t 1 θ t 2 - T, F, U - P α 2) Atomický predikát je predikátovou formulí 3) P, P Q, P Q 4) kvantifikator (kompaktní forma) / {t(v 1,...,v n ): P(v 1,...,v n ) α }Q(v 1,...,v n )... a nic jiného

Interpretace E3VPC výrazu - interpretační operátor 1) Pravdivě interpretovaný (notace T ) P(x) = T Q(x) = T P(x) = F Q(x) = F P(x) = U Q(x) = T 2) Nepravdivě interpretovaný (notace F ) P(x) = T Q(x) = T P(x) = F Q(x) = F P(x) = U Q(x) = F

Interpretace E3VPC výrazů - termy Externí referenční operátor indikuje, že proměnnou nepočítáme v daném oboru (in R), ale patří do nejbližšího vnějšího oboru (in S) {v in R: P(v, v )} {v in S: {v in R: v.a 1 =v.b 1 α }...}

Interpretace E3VPC výrazů - termy Agregační funkce -dostává n-tice na vstup, výstupem je jedna hodnota -pokud je daná množina prazdná vrátí NULL (kromě COUNT a COUNTD vracejí 0) -vynechají NULL hodnoty (kromě COUNT) -COUNTD, SUMD, AVGD nezapočítávají duplicitní hodnoty

Interpretace E3VPC výrazu - kvantifikátory a kompaktní formy {x in R: W(x) α }P(x) =T prázdná množina, nebo pro všechny elementy platí P(x) =F množina není prázdná, je alespoň jeden element pro který P(x) neplatí =U jinak {x in R: W(x) α }P(x) =F prázdná množina, nebo pro všechny elementy neplatí P (x) =T množina není prázdná, je alespoň jeden element pro který P(x) platí =U jinak

SQL syntax a tranformační pravidla

SQL SYNTAX Pravidla - "generující gramatika" očíslovaná (1..50) ve formátu <QUERY> = SELECT[ALL DISTINCT]<SELECTLIST><FRCLAUSE> [<WHCLAUSE>][<GBCLAUSE>][<HCLAUSE>] <WHCLAUSE> = WHERE <WHERE SEARCH CONDITION> <SIMPLEPRED>=<COL OR VAL> <comp op> <COL OR VAL> KEYWORDS - tučně UPPERCASE - neterminály lowercase - terminály

Převáděcí pravidla Některým pravidlům SQL syntaxe odpovídá přepis do formy E3VPC. Přepisuje se neterminál X z levé strany TR <X> na zřetězení přepisů TR<Y 1 >... TR<Y n > doplněné o další symboly E3VPC kde <Y i > je terminál nebo neterminál podle pravé strany pravidla, případně "zděděný" neterminál X. <TABLE REFERENCE>=<table name><correlation name> -> <correlation name> in <table name>

Specifické vlastnosti překladu (1) nepovinné prvky se převedou na prázdný výraz implicitní pravidlo převádí zřetězení prvků na zřetězení jejich překladů terminály se nepřekládají - stávají se z nich jména proměných <COL OR VAL> je v SQL neterminál, převádí se na terminál SQL pravidla typu "booleovská hodnota" <P> se převedou na "booleovská hodnota" TR <P>

Specifické vlastnosti překladu (2) Dvojice TR1 a TR2 se překládá přímo TR1 <FUNC SPEC> se překládá rovnou na jméno funkce + proměnná.atribut TR2 <FUNSPEC> se překládá rovnou jako 0 respektive NULL - vždy se vyskytují pohromadě, první vede na vyhodnocení agregační funkce, druhá dodává hodnotu pro případ prázdné množiny obecně odpovídá jednomu syntaktickému pravidlu jedno převáděcí ->stejná čísla vnější SELECTLIST se nepřevádí (slouží v SQL jen pro vypsání výsledku; nemá vliv)

Kompletní tabulky tabulky vedle sebe (gif) tabulky vedle sebe (png)

Stručné zdůvodnění pravidel - základní struktura (1) Základem každého dotazu/poddotazu je formule ve tvaru { TR <FRCLAUSE> : TR <WHCLAUSE> TR <HCLAUSE> F } která definuje množinu ntic vracenou dotazem SELECT je zpracováván v FALSE-intepretaci, což odpovídá tomu, že prvky s hodnotou UNKNOWN nesplňují podmínku "vyber takové, pro které platí"

Stručné zdůvodnění pravidel - základní stuktura (2) GROUP BY nepatří do základního tvaru - neovlivňuje výslednou množinu Předpokládá se, že každá ntice obsahuje unikátní identifikátor; nejsou řešeny duplicity (pokud není implicitně řečeno) - odpovídá ALL SELECTLIST poddotazů je převáděn kompletně (výběr sloupce, agregace) - má vliv na výsledek vnější funkce

Stručné zdůvodnění pravidel - složené predikáty = takové, které zahrnují poddotaz pravidla 20 a 38 jsou symetrická - stejné zpracování v sekci WHERE <COMPLEXPRED> i HAVING <HACOMPLEXPRED> oddělená pravidla pro jednoduché poddotazy (výstupem je celý list) <SUBQ> a pro poddotazy, kde výstupní seznam obsahuje funkci <AFSUBQ> všechny čtyři kombinace jsou převáděny strukturou TR1... TR2

Stručné zdůvodnění pravidel -klíčové slovo DISTINCT Po agregačních funkcích - je zahrnuto do zpracování funkce Ve výsledku poddotazu - není potřeba samostatně, je vyřešeno přítomností kvantifikátoru v pravidlech pro poddotazy

Stručné zdůvodnění pravidel - prázdné množiny Prázdné množiny jako výsledek poddotazu pro je výsledek TR1 TRUE pro je výsledek TR1 FALSE jednoduché funkce fungují díky TR2 přímo funkce <AFSUBQ> typu obsahují v příslušných pravidlech speciální term TR3 Pravidla pro práci se složenými porovnávacími predikáty obsahují speciální term pro korektní zpracování prázdných množin

Příklad SELECT d.manager FROM DEPT d WHERE d.location = ALL SELECT e.residence FROM EMP e WHERE e.d# = d.d# GROUP BY d.manager HAVING AVG(d.nofemp) >500

Řešení 1-15: <WHERE..> TR1 TR2 <WHERE..>

Řešení - dokončení <HAVING..> <GB..> =>

Ekvivalence SQL dotazů Postup: převod obecného E3VPC výrazu do kanonického tvaru porovnání pomocí dvouhodnotové predikátové logiky... použití třihodnotové predikátové logiky ukazuje, že i když dva dotazy jsou ekvivalentní v dvouhodnotové interpretaci, můžou se lišit v reálném SQL

Kanonický E3VPC výraz s každým atomickým predikátem je asociován interpretační operátor výraz neobsahuje žadné další interpretační operátory výraz neobsahuje kompaktní formy s kanonickým výrazem můžeme dál pracovat pomocí dvouhodnotové logiky (důvod: každý atomický predikát má interpretační operátor, a interpretována třihodnotová logika je dvouhodnotová, jak již bylo ukázáno)

Transformace E3VPC výrazu do kanonické formy 1. P(x) Q(x) α P(x) α Q(x) α 2. P(x) Q(x) α P(x) α Q(x) α 3. P(x) α P(x) α 4. P(x) α β P(x) α 5. x in R: P(x) α x in R: P(x) α 6. x in R: P(x) α x in R: P(x) α Neplatí: P P 1 a P P 0 nedefinují jak posunout interpretační operátor z podvýrazu do každého atomického predikátu, takže je nepotřebujeme

Eliminace kompaktních forem Věta 1. {x in R: P(x) α }Q(x) β x in R: P(x) α Q(x) β Věta 2. {x in R: P(x) α }Q(x) β x in R: P(x) α Q(x) β

Ekvivalence SQL dotazů - tříhodnotová logika Problém: Interpretace unknown: dva dotazy, které se v kanonickém tvaru liší jen o typ interpretace (T nebo F) TR<Q 1 > = {x in R: P(x) F } TR<Q 2 > = {x in R: P(x) T }... jsou ekvivalentní?

Ekvivalence SQL dotazů - množina kritické ekvivalence -SQL dotazy, u kterých se může výše uvedený problém projevit, tvoří množinu kritické ekvivalence (critical equivalence set). -Nastává při převodu E3VPC výrazu na kanonický tvar (kvůli pravidlům 3 a 4) Jaké typy dotazů v SQL tam patří?

Množina kritické ekvivalence - jednoduchý dotaz NE Pravidlo 3: TR<Q 1 > = {x in R: P(x) F } TR<Q 2 > = {x in R: P(x) F } {x in R: P(x) T } Pravidlo 4: TR<Q 1 > = {x in R: P(x) F } TR<Q 2 > = {x in R: P(x) T F } {x in R: P(x) T }...ale v SQL neexistuje dotaz jako Q 2

Množina kritické ekvivalence - univerzální kvantifikace ANO Q 1 : SELECT * FROM R x WHERE NOT EXISTS SELECT * FROM S y WHERE x.a i = y. B i y.b j 'P' Q 2 : SELECT * FROM R x WHERE NOT x.a i IN SELECT y.b i FROM S y WHERE x.b j 'P'

Množina kritické ekvivalence - univerzální kvantifikace E3VPC: 1) {y in S: Q(x,y) P(y) α } β 2) {y in S: P(y) α }Q(x,y) β Kanonický tvar: 1) y in S: Q(x,y) α P(y) α 2) y in S: Q(x,y) β P(y) α Jsou ekvivalentní právě když β = α, což obecně nemusí platit (a neplatí v uvedeném příkladu, kde β = α = F)

Množina kritické ekvivalence - existenční kvantifikace ANO E3VPC: 1) {y in S: Q(x,y) P(y) α } β 2) {y in S: P(y) α }Q(x,y) β Kanonický tvar: 1) y in S: Q(x,y) α P(y) α 2) y in S: Q(x,y) β P(y) α Jsou ekvivalentní právě když α = β (α je vždy F, β může být T pokud predikát je části univerzálně kvantifikovaného predikátu)

Ekvivalence SQL dotazů - závěr (1) SQL dotazy, které neobsahují univerzální kvantifikátor nikdy nepatří do množiny kritické ekvivalence (2) SQL dotazy, které obsahují univerzální kvantifikátor vždy patří do množiny kritické ekvivalence

Děkujeme za pozornost