Formální sémantika SQL dotazů

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

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

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

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

2.2 Sémantika predikátové logiky

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

Kapitola 4: SQL. Základní struktura

Sémantika predikátové logiky

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

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

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

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

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

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

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

Databáze SQL SELECT. David Hoksza

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

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

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

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

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

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

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

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

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

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

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

Modely Herbrandovské interpretace

Logika a logické programování

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

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

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

Matematická logika. Rostislav Horčík. horcik

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

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

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

Výroková logika - opakování

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

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

Logické programy Deklarativní interpretace

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

4.2 Syntaxe predikátové logiky

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

Predikátová logika [Predicate logic]

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

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

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

Databázové systémy I

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

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

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

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

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

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

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

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

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

Matematická logika. Miroslav Kolařík

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

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

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

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

Hilbertovský axiomatický systém

postaveny výhradně na syntaktické bázi: jazyk logiky neinterpretujeme, provádíme s ním pouze syntaktické manipulace důkazy

Výroková logika syntaxe a sémantika

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

Predikátová logika dokončení

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 α

Jazyk S Q L základy, příkazy pro práci s daty

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

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

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

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

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

Operátory ROLLUP a CUBE

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

Databáze 2011/2012 SQL SELECT II. RNDr.David Hoksza, Ph.D.

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

RELAČNÍ DATABÁZOVÉ SYSTÉMY

6. Logika a logické systémy. Základy logiky. Lucie Koloušková, Václav Matoušek / KIV. Umělá inteligence a rozpoznávání, LS

Databázové systémy Tomáš Skopal

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

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

Převyprávění Gödelova důkazu nutné existence Boha

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

Matematická logika. Rostislav Horčík. horcik

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

5. blok Souhrnné a skupinové dotazy

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

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

Relační model dat (Codd 1970)

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

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

DATA CUBE. Mgr. Jiří Helmich

Predikátová logika Individua a termy Predikáty

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

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

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

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

Transkript:

Formální sémantika SQL dotazů Radovan Jankovič Ondřej Staněk 12.11. 2013 podle M. Negri, G. Pelagatti, L. Sbattella: Formal Semantics of SQL Queries, 1991

Formálna sémantika SQL dotazov Rozšírený trojhodnotový predikátový kalkul (E3VPC) Preklad SQL do E3VPC Ekvivalencia SQL dotazov

Štruktúra výrazu E3VPC t(...) = target list zloženie výsledku, kde sú premenné viazané k reláciám (tabuľkám). Výber konkrétnych atribútov (stĺpcov) vo výsledku je vynechaný.

Štruktúra výrazu E3VPC je predikátová formula, určujúca podmienky pre voľné premenné - interpretačný operátor aplikovaný na formulu špecifikuje vyhodnotenie NULL hodnôt. Rekurzívna definícia: termy predikáty formuly.

Termy Konštanty sú termy. Pre každú premennú a termy. a atribút sú Pre výraz S, atribút A a agregačnú funkciu f je term. Agregačná funkcia je jedna z COUNT, AVG, SUM, MIN, MAX, COUNTD, AVGD a SUMD.

Aritmetika a atomické predikáty Používajú sa štandartné aritmetické a porovnávacie operátory a operátor porovnania NULL hodnôt. Ak sú x a y termy a * operátor porovnania, potom x*y je atomický predikát. T (true), F (false) a U (unknown) sú atomické predikáty. Ak P je atomický predikát, potom aj je atomický predikát.

Predikátové formuly Atomický predikát je predikátovou formulou. Ak P a Q sú predikátové formuly, potom aj sú formuly. Nech je výraz E3VPC a formula. Potom sú predikátové formuly. predikátová

Interpretácia NULL nie je korektným výrazom E3VPC. (Patrí NULL do výsledku?) Je potrebný interpretačný operátor prevádzajúci trojhodnotovú logiku na dvojhodnotovú.

Interpretácia NULL Predikát Q(x) je pozitívne interpretovaným ekvivalentom P(x), ak platí Podobne Q(x) je negatívnou interpretáciou P(x), ak

Kompaktné formy znamená: existuje prvok x z danej množiny, pre ktorý P(x). P(x) nemá interpretačný operátor, preto ak je množina neprázdna, hodnota T sa nevyskytuje a aspoň jedna hodnota je U (unknown), je celá formula rovná U. Podobne.

Syntax SQL Definíciu ANSI SQL z r. 1985 možno napísať ako (takmer) gramatiku s 50 prepisovacími pravidlami, kde výsledný dotaz vzniká postupným nahradzovaním neterminálov (v ľubovoľnom poradí).

Syntax SQL - príklady... <QUERY> SELECT [ALL DISTINCT] <SELECT LIST> <FRCLAUSE> [<WHCLAUSE>] [GBCLAUSE] [HCLAUSE] <WHERE SEARCH COND> Boolean expression of <WPRED> <SIMPLE PRED> <COL OR VAL> <comp op> <COL OR VAL> <COMPLEX IN PRED> <FUNC SPEC> IN <SUBQ> <SUBQ> SELECT [ALL DISTINCT] <SELECT LIST> <FRCLAUSE> [<WHCLAUSE>] [GBCLAUSE] [HCLAUSE]

Preklad SQL do E3VPL Na preklad do E3VPL stačí 33 pravidiel, ktoré sú spárované s niektorými zo syntaktických pravidiel SQL. Preklad základného neterminálu: Používa sa záporná interpretácia, čo zodpovedá sémantike SQL.

Kontextový preklad V niektorých prípadoch je možných viac ciest prekladu, použité pravidlo závisí od kontextu výskytu neterminálu. Príklad:

Preklad komplexného dotazu Databáza oddelení a ich zamestnancov obsahuje dve relácie: DEPT(d#, nofemp, location, manager) a EMP(e#, d#, residence) Chceme získať mená manažérov oddelení, ktorých všetci zamestnanci bývajú v lokalite svojho oddelenia a priemerný počet zamestnancov oddelení spravovaných týmto manažérom je vyšší než 500.

Dotaz v SQL 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

Preklad do E3VPC Po použití prvého pravidla získame Rozložíme podmienku WHERE na Preklad poddotazu sa rozpadol na dve časti, aby vznikla korektná výroková formula:

Preklad do E3VPC Podmienku HAVING preložíme najprv na a následne na (Pre úplnosť pripojená aj klauzula GROUP BY.)

Preklad do E3VPC Po preložení GBCLAUSE získame výslednú formulu (Pomocou notácie sa vnútorná formula odkazuje na premennú vo vonkajšej a vymedzuje tak podskupinu oddelení určenú manažérom => GROUP BY.)

Formální sémantika SQL dotazů Ondřej Staněk (ostan89@gmail.com) Dotazovací jazyky I (NDBI001)

Ekvivalence SQL dotazů Motivace: Lze obecně rozhodnout zda jsou dva syntakticky rozdílné SQL dotazy sémanticky ekvivalentní? Formální model E3VPC zachycuje sémantiku SQL Transformujeme SQL dotazy do E3VPC, pak řešíme problém ekvivalence dvou E3VPC výrazů Definition SQL dotazy Q 1, Q 2 jsou sémanticky ekvivalentní právě tehdy když TR<Q 1 > TR<Q 2 > jak ale poznat ekvivalenci dvou E3VPC výrazů? Úvaha ve dvouhodnotové predikátové logice dokážeme rozhodnout ekvivalenci dvou výrazů chceme metody klasické predikátové logiky aplikovat na trojhodnotový E3VPC

Ekvivalence SQL dotazů Motivace: Lze obecně rozhodnout zda jsou dva syntakticky rozdílné SQL dotazy sémanticky ekvivalentní? Formální model E3VPC zachycuje sémantiku SQL Transformujeme SQL dotazy do E3VPC, pak řešíme problém ekvivalence dvou E3VPC výrazů Definition SQL dotazy Q 1, Q 2 jsou sémanticky ekvivalentní právě tehdy když TR<Q 1 > TR<Q 2 > jak ale poznat ekvivalenci dvou E3VPC výrazů? Úvaha ve dvouhodnotové predikátové logice dokážeme rozhodnout ekvivalenci dvou výrazů chceme metody klasické predikátové logiky aplikovat na trojhodnotový E3VPC

Kanonická forma E3VPC Definition Výraz E3VPC je v kanonické formě, pokud: 1 každý atomický predikát je opatřen interpretačním operátorem 2 nikde jinde ve výrazu se interpretační operátory nevyskytují 3 výraz neobsahuje kompaktní formy Example x in R : Q(x) F P(x) T

Kanonická forma E3VPC Definition Výraz E3VPC je v kanonické formě, pokud: 1 každý atomický predikát je opatřen interpretačním operátorem 2 nikde jinde ve výrazu se interpretační operátory nevyskytují 3 výraz neobsahuje kompaktní formy Example x in R : Q(x) F P(x) T

Pravidla pro úpravu do kanonické formy E3VPC 1 P(x) Q(x) α P(x) α Q(x) α 2 P(x) Q(x) α P(x) α Q(x) α 3 P(x) α P(x) α P(x) α β P(x) α 4 5 x in R : P(x) α x in R : P(x) α 6 x in R : P(x) α x in R : P(x) α Připomenutí α značí interpretační operátor α {T,F }

Pravidla pro úpravu do kanonické formy E3VPC Dále k úpravám používáme běžné operace predikátového kalkulu to můžeme, neboť je-li tříhodnotová formule ošetřena interpretačním operátorem, stává se z ní dvouhodnotová formule. S těmi již můžeme pracovat běžným způsobem. Pozor v tříhodnotové logice neplatí pravidlo tautologie: pravidlo kontradikce: P(x) P(x) 1 P(x) P(x) 0

Pravidla pro úpravu do kanonické formy E3VPC dále se nám k úpravám hodí tyto věty: Theorem { x in R : P(x) α} Q(x) β x in R : P(x) α Q(x) β Proof. { x in R : P(x) α} Q(x) β { x in R : P(x) α Q(x) } β (běžné pravidlo predikátového kalkulu) x in R : P(x) α Q(x) β (pravidlo č. 5) x in R : P(x) α β Q(x) β (pravidlo č. 2) x in R : P(x) α Q(x) β (pravidlo č. 2)

Pravidla pro úpravu do kanonické formy E3VPC dále se nám k úpravám hodí tyto věty: Theorem { x in R : P(x) α} Q(x) β x in R : P(x) α Q(x) β Proof. { x in R : P(x) α} Q(x) β x in R : P(x) α Q(x) β (běžné pravidlo predikátového kalkulu) x in R : P(x) α Q(x) β (pravidlo č. 6) x in R : P(x) α β Q(x) β (pravidlo č. 1) x in R : P(x) α β Q(x) β (pravidlo č. 3) x in R : P(x) α Q(x) β (pravidlo č. 4)

Critical Equivalence Set Množina kritické ekvivalence Definition Množina kanonických E3VPC výrazů je kriticky ekvivalentní, pokud všechny výrazy v ní obsažené mají identickou strukturu, až na typ interpretace jednotlivých atomických predikátů Example Mějmě dva SQL dotazy Q 1,Q 2, jejichž transformace do E3VPC vypadá takto: TR Q 1 = {x } in R : P(x) F TR Q 2 = {x } in R : P(x) T Tyto dva dotazy vrací vždy stejné výsledky za předpokladu, že v databázi nejsou null hodnoty. Pokud však pro nějaké x R je predikát P(x) = U, bude obsažen ve výsledku dotazu Q 2, nikoliv však v Q 1.

Critical Equivalence Set Množina kritické ekvivalence Definition Množina kanonických E3VPC výrazů je kriticky ekvivalentní, pokud všechny výrazy v ní obsažené mají identickou strukturu, až na typ interpretace jednotlivých atomických predikátů Example Mějmě dva SQL dotazy Q 1,Q 2, jejichž transformace do E3VPC vypadá takto: TR Q 1 = {x } in R : P(x) F TR Q 2 = {x } in R : P(x) T Tyto dva dotazy vrací vždy stejné výsledky za předpokladu, že v databázi nejsou null hodnoty. Pokud však pro nějaké x R je predikát P(x) = U, bude obsažen ve výsledku dotazu Q 2, nikoliv však v Q 1.

Critical Equivalence Set Množina kritické ekvivalence Fact Důležité pozorování: Ačkoliv pravidla pro překlad do E3VPC používají pouze false interpretované operátory ( F ), interpretační operátory true ( T ) se mohou objevit při použití pravidel úpravy do kanonické formy: P(x) F P(x) T (instance pravidla 3) P(x) T F P(x) T (instance pravidla 4)

Příklad (téměř) ekvivalentních dotazů - formálně Mějme schéma dvou relací R(A 1,...,A i,...a n ), S(B 1,...,B i,...,b j,...b m ). Uvažujeme těchto pět SQL dotazů: 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 4 : SELECT * FROM R x WHERE P = ALL SELECT y.b j FROM S y WHERE x.a i = y.b i Q 2 : SELECT * FROM R x WHERE NOT P SOME SELECT y.b j FROM S y WHERE x.a i = y.b i Q 5 : SELECT * FROM R x WHERE x.a i NOT IN SELECT y.b i FROM S y WHERE y.b j P Q 3 : SELECT * FROM R x WHERE NOT x.a i IN SELECT y.b i FROM S y WHERE x.b j P

Příklad (téměř) ekvivalentních dotazů - méně formálně Mějme tabulku společností SPOL(ič#, jméno,..), a tabulku faktur FAKT (ič#,čf #,stav,částka,...). Uvažujeme těchto pět SQL dotazů: Q 1 : SELECT * FROM SPOL s WHERE NOT EXISTS SELECT * FROM FAKT f WHERE s.ič=f.ič f.stav Z Q 4 : SELECT * FROM SPOL s WHERE Z = ALL SELECT f.stav FROM FAKT f WHERE s.ič = f.ič Q 2 : SELECT * FROM SPOL s WHERE NOT Z SOME SELECT f.stav FROM FAKT f WHERE s.ič = f.ič Q 3 : SELECT * FROM SPOL s WHERE NOT s.ič IN SELECT f.ič FROM FAKT f WHERE f.stav Z Q 5 : SELECT * FROM SPOL s WHERE s.ič NOT IN SELECT f.ič FROM FAKT f WHERE f.stav Z Poznámka atribut f.stav nabývá hodnot P (potrvrzeno), Z (zamítnuto) a null (zatím nerozhodnuto)

Příklad (téměř) ekvivalentních dotazů - méně formálně Mějme tabulku společností SPOL(ič#, jméno,..), a tabulku faktur FAKT (ič#,čf #,stav,částka,...). Uvažujeme těchto pět SQL dotazů: Q 1 : SELECT * FROM SPOL s WHERE NOT EXISTS SELECT * FROM FAKT f WHERE s.ič=f.ič f.stav Z Q 4 : SELECT * FROM SPOL s WHERE Z = ALL SELECT f.stav FROM FAKT f WHERE s.ič = f.ič Q 2 : SELECT * FROM SPOL s WHERE NOT Z SOME SELECT f.stav FROM FAKT f WHERE s.ič = f.ič Q 3 : SELECT * FROM SPOL s WHERE NOT s.ič IN SELECT f.ič FROM FAKT f WHERE f.stav Z Q 5 : SELECT * FROM SPOL s WHERE s.ič NOT IN SELECT f.ič FROM FAKT f WHERE f.stav Z Poznámka atribut f.stav nabývá hodnot P (potrvrzeno), Z (zamítnuto) a null (zatím nerozhodnuto)

Překlad SQL dotazů Q 1,...Q 5 do E3VPC Pro zjednodušení zápisu substituujeme predikáty: P(f ) za f.stav Z P(f ) značí faktura f nebyla zamítnuta, ekvivalentně faktura f byla potvrzena Q(s,f ) za s.ič = f.ič Q(s, f ) značí společnost s vystavila fakturu f

Sémantika dotazu Q 1 Dotaz Q 1 (SQL) SELECT * FROM SPOL s WHERE NOT EXISTS SELECT * FROM FAKT f WHERE s.ič = f.ič f.stav Z Překlad TR<Q 1 > (E3VPC) { s in SPOL : {f in FAKT : Q(s,f ) P(f ) F } } F Dotaz Q 1 (běžný jazyk) doslovně: Vyber společnosti pro které je množina jejích potvrzených faktur prázdná. ekvivalentně: Společnosti, které nemají žádnou potvrzenou fakturu? Vrátí dotaz i společnost, o jejíž faktuře ještě nebylo rozhodnuto? (tj. P(f ) = U)?

Sémantika dotazu Q 1 Dotaz Q 1 (SQL) SELECT * FROM SPOL s WHERE NOT EXISTS SELECT * FROM FAKT f WHERE s.ič = f.ič f.stav Z Překlad TR<Q 1 > (E3VPC) { s in SPOL : {f in FAKT : Q(s,f ) P(f ) F } } F Dotaz Q 1 (běžný jazyk) doslovně: Vyber společnosti pro které je množina jejích potvrzených faktur prázdná. ekvivalentně: Společnosti, které nemají žádnou potvrzenou fakturu? Vrátí dotaz i společnost, o jejíž faktuře ještě nebylo rozhodnuto? (tj. P(f ) = U)?

Sémantika dotazu Q 1 Dotaz Q 1 (SQL) SELECT * FROM SPOL s WHERE NOT EXISTS SELECT * FROM FAKT f WHERE s.ič = f.ič f.stav Z Překlad TR<Q 1 > (E3VPC) { s in SPOL : {f in FAKT : Q(s,f ) P(f ) F } } F Dotaz Q 1 (běžný jazyk) doslovně: Vyber společnosti pro které je množina jejích potvrzených faktur prázdná. ekvivalentně: Společnosti, které nemají žádnou potvrzenou fakturu? Vrátí dotaz i společnost, o jejíž faktuře ještě nebylo rozhodnuto? (tj. P(f ) = U)?

Sémantika dotazu Q 4 Dotaz Q 4 (SQL) SELECT * FROM SPOL s WHERE Z = ALL SELECT f.stav FROM FAKT f WHERE s.ič = f.ič Překlad TR<Q 4 > (E3VPC) { s in SPOL : {f in FAKT : Q(s,f ) F } } P(f ) F Dotaz Q 4 (běžný jazyk) Vyber takové společnosti, jejichž všechny faktury jsou zamítnuté? Vrátí dotaz i firmu, o jejíž faktuře ještě nebylo rozhodnuto? (tj. P(f ) = U)?

Sémantika dotazu Q 4 Dotaz Q 4 (SQL) SELECT * FROM SPOL s WHERE Z = ALL SELECT f.stav FROM FAKT f WHERE s.ič = f.ič Překlad TR<Q 4 > (E3VPC) { s in SPOL : {f in FAKT : Q(s,f ) F } } P(f ) F Dotaz Q 4 (běžný jazyk) Vyber takové společnosti, jejichž všechny faktury jsou zamítnuté? Vrátí dotaz i firmu, o jejíž faktuře ještě nebylo rozhodnuto? (tj. P(f ) = U)?

Sémantika dotazu Q 4 Dotaz Q 4 (SQL) SELECT * FROM SPOL s WHERE Z = ALL SELECT f.stav FROM FAKT f WHERE s.ič = f.ič Překlad TR<Q 4 > (E3VPC) { s in SPOL : {f in FAKT : Q(s,f ) F } } P(f ) F Dotaz Q 4 (běžný jazyk) Vyber takové společnosti, jejichž všechny faktury jsou zamítnuté? Vrátí dotaz i firmu, o jejíž faktuře ještě nebylo rozhodnuto? (tj. P(f ) = U)?

Překlad SQL dotazů Q 1,...Q 5 do E3VPC 1 2 3 4 5 { s in SPOL : {f in FAKT : Q(s,f ) P(f ) F } } F { s in SPOL : {f in FAKT : Q(s,f ) F } }P(f ) F { s in SPOL : {f in FAKT : P(f ) F } }Q(s,f ) F { s in SPOL : {f in FAKT : Q(s,f ) F } } P(f ) F { s in SPOL : {f in FAKT : P(f ) F } } Q(s,f ) F? Jsou nějaké z těchto dotazů úplně ekvivalentní, tedy vrací vždy stejné výsledky i na databázích s nulovými hodnotami?

Překlad SQL dotazů Q 1,...Q 5 do E3VPC 1 2 3 4 5 { s in SPOL : {f in FAKT : Q(s,f ) P(f ) F } } F { s in SPOL : {f in FAKT : Q(s,f ) F } }P(f ) F { s in SPOL : {f in FAKT : P(f ) F } }Q(s,f ) F { s in SPOL : {f in FAKT : Q(s,f ) F } } P(f ) F { s in SPOL : {f in FAKT : P(f ) F } } Q(s,f ) F? Jsou nějaké z těchto dotazů úplně ekvivalentní, tedy vrací vždy stejné výsledky i na databázích s nulovými hodnotami?

Kanonické formy překladů TR < Q 1 >,...TR < Q 5 > 1 f in FAKT : Q(s,f ) T P(f ) T 2 f in FAKT : Q(s,f ) T P(f ) F 3 f in FAKT : Q(s,f ) F P(f ) T 4 = 2. 5 = 3. Fact Dotaz Q 2 i Q 4 vrátil společnosti, jejichž každá faktura byla zamítnuta Dotaz Q 1 vrátil společnosti, jejichž každá faktura byla buďto zamítnuta a nebo o jejím zamítnutí ještě nebylo rozhodnuto (zatím má její atribut f.stav hodnotu null)? Jaká je sémantika dotazu Q 3, resp. Q 5?

Kanonické formy překladů TR < Q 1 >,...TR < Q 5 > 1 f in FAKT : Q(s,f ) T P(f ) T 2 f in FAKT : Q(s,f ) T P(f ) F 3 f in FAKT : Q(s,f ) F P(f ) T 4 = 2. 5 = 3. Fact Dotaz Q 2 i Q 4 vrátil společnosti, jejichž každá faktura byla zamítnuta Dotaz Q 1 vrátil společnosti, jejichž každá faktura byla buďto zamítnuta a nebo o jejím zamítnutí ještě nebylo rozhodnuto (zatím má její atribut f.stav hodnotu null)? Jaká je sémantika dotazu Q 3, resp. Q 5?

Sémantika dotazu Q 5 Dotaz Q 5 (SQL) SELECT * FROM SPOL s WHERE s.ič NOT IN SELECT f.ič FROM FAKT f WHERE f.stav Z Překlad TR<Q 5 > (E3VPC) { s in SPOL : {f in FAKT : P(f ) F } } Q(s,f ) F Dotaz Q 5 (běžný jazyk) Vyber takové společnosti, které nemají žádnou potvrzenou fakturu vrátí společnosti, jejichž všechny faktury byly zamítnuty a nebo o jejich zamítnutí ještě nebylo rozhodnuto co se stane, když se v databázi vyskytne potvrzená faktura s atributem f.ič = null? Pro tuto fakturu bude predikát Q(s,f ) = U a tedy nevíme, které společnosti faktura v databázi patří. Jak to ovlivní výsledky dotazů Q 1,Q 4,Q 5?

Sémantika dotazu Q 5 Dotaz Q 5 (SQL) SELECT * FROM SPOL s WHERE s.ič NOT IN SELECT f.ič FROM FAKT f WHERE f.stav Z Překlad TR<Q 5 > (E3VPC) { s in SPOL : {f in FAKT : P(f ) F } } Q(s,f ) F Dotaz Q 5 (běžný jazyk) Vyber takové společnosti, které nemají žádnou potvrzenou fakturu vrátí společnosti, jejichž všechny faktury byly zamítnuty a nebo o jejich zamítnutí ještě nebylo rozhodnuto co se stane, když se v databázi vyskytne potvrzená faktura s atributem f.ič = null? Pro tuto fakturu bude predikát Q(s,f ) = U a tedy nevíme, které společnosti faktura v databázi patří. Jak to ovlivní výsledky dotazů Q 1,Q 4,Q 5?

Sémantika dotazu Q 5 Dotaz Q 5 (SQL) SELECT * FROM SPOL s WHERE s.ič NOT IN SELECT f.ič FROM FAKT f WHERE f.stav Z Překlad TR<Q 5 > (E3VPC) { s in SPOL : {f in FAKT : P(f ) F } } Q(s,f ) F Dotaz Q 5 (běžný jazyk) Vyber takové společnosti, které nemají žádnou potvrzenou fakturu vrátí společnosti, jejichž všechny faktury byly zamítnuty a nebo o jejich zamítnutí ještě nebylo rozhodnuto co se stane, když se v databázi vyskytne potvrzená faktura s atributem f.ič = null? Pro tuto fakturu bude predikát Q(s,f ) = U a tedy nevíme, které společnosti faktura v databázi patří. Jak to ovlivní výsledky dotazů Q 1,Q 4,Q 5?

Univerzálně kvantifikované SQL dotazy v E3VPC 1 2 3 4 5 {y in S : Q(x,y) P(y) α } β {y in S : Q(x,y) α }P(y) β {y in S : P(y) α }Q(x,y) β {y in S : Q(x,y) α } P(y) β {y in S : P(y) α } Q(x,y) β α = F vždy, nebot vyhledávací podmínka (search condition) v SQL je vždy interpretována false β závisí na struktuře vnějšího dotazu.

Univerzálně kvantifikované SQL dotazy v E3VPC 1 2 3 4 5 {y in S : Q(x,y) P(y) α } β {y in S : Q(x,y) α }P(y) β {y in S : P(y) α }Q(x,y) β {y in S : Q(x,y) α } P(y) β {y in S : P(y) α } Q(x,y) β α = F vždy, nebot vyhledávací podmínka (search condition) v SQL je vždy interpretována false β závisí na struktuře vnějšího dotazu.

Ekvivalentní kanonické formy TR < Q 1 >,...TR < Q 5 > pro univerzálně kvantifikované dotazy 1 y in S : Q(x,y) α P(f ) α 2 y in S : Q(x,y) α P(f ) β 3 y in S : Q(x,y) β P(f ) α 4 = 2. 5 = 3. Tyto výrazy jsou identické pouze pokud β = α. Toto ale obecně neplatí, což je příčinou vzinku množin kritické ekvivalence.

Ekvivalentní kanonické formy TR < Q 1 >,...TR < Q 5 > pro univerzálně kvantifikované dotazy 1 y in S : Q(x,y) α P(f ) α 2 y in S : Q(x,y) α P(f ) β 3 y in S : Q(x,y) β P(f ) α 4 = 2. 5 = 3. Tyto výrazy jsou identické pouze pokud β = α. Toto ale obecně neplatí, což je příčinou vzinku množin kritické ekvivalence.

Existenčně kvantifikované SQL dotazy v E3VPC 1 2 3 4 5 {y in S : Q(x,y) P(y) α } β {y in S : Q(x,y) α }P(y) β {y in S : P(y) α }Q(x,y) β {y in S : Q(x,y) α } P(y) β {y in S : P(y) α } Q(x,y) β stejně jako u univerzálně kvantifikovaných dotazů platí α = F vždy, nebot vyhledávací podmínka (search condition) v SQL je vždy interpretována false β závisí na struktuře vnějšího dotazu

Ekvivalentní kanonické formy pro existenčně kvantifikované dotazy 1 y in S : Q(x,y) α P(y) α 2 y in S : Q(x,y) α P(y) β 3 y in S : Q(x,y) β P(y) α 4 = 2. 5 = 3. Tyto výrazy jsou identické pouze pokud β = α. Víme, že α = F vždy. Aby existenční kvantifikátor způsobil existenci množiny kritické ekvivalence, musí být β = T. To nastává pouze pokud je součástí vnějšího univerzálně kvantifikovaného predikátu.

Ekvivalentní kanonické formy pro existenčně kvantifikované dotazy 1 y in S : Q(x,y) α P(y) α 2 y in S : Q(x,y) α P(y) β 3 y in S : Q(x,y) β P(y) α 4 = 2. 5 = 3. Tyto výrazy jsou identické pouze pokud β = α. Víme, že α = F vždy. Aby existenční kvantifikátor způsobil existenci množiny kritické ekvivalence, musí být β = T. To nastává pouze pokud je součástí vnějšího univerzálně kvantifikovaného predikátu.

Shrnutí Ekvivalence ekvivalenci dvou SQL dotazů lze rozhodnout překladem do rozšířené tříhodnotové predikátové logiky (E3VPC) a následnou úpravou na kanonický tvar E3VPC je výrazově silnější než SQL Množiny kritické ekvivalence dotazy v kriticky ekvivalentní množině vrací stejné výsledky na databázi bez null hodnot. Jsou-li však v databázi null hodnoty, chovají se rozdílně. dotazy bez univerzálního (všeobecného) kvantifikátoru nikdy netvoří množiny kritické ekvivalence dotazy s univerzálním kvantifikátorem vždy tvoří množiny kritické ekvivalence