Fuzzy SQL Jaroslav Tykal, Jiří Dokulil. Proč Fuzzy Přesné vs. „nepřesné“ hodnoty Kdo má nejvyšší plat Kdo má vysoký plat Výhody přesnosti Jednoznačná.

Slides:



Advertisements
Podobné prezentace
Aplikační a programové vybavení
Advertisements

J. Pokorný 1 DOTAZOVACÍ JAZYKY slajdy přednášce DBI006 J. Pokorný MFF UK
KIV/ZIS Cvičení 6 SQL - SELECT.
Úvod do databázových systémů
Přednáška č. 3 Normalizace dat, Datová a funkční analýza
Aplikační a programové vybavení
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
Databáze.
DB1 – 9. cvičení Optimalizace dotazu Konkurenční přístup a deadlock Indexace Transakce.
Databázové systémy SQL Výběr dat.
YDASYS1 Ing. Monika Šimková.
Fakulta elektrotechniky a informatiky
Výpočetní technika Akademický rok 2008/2009 Letní semestr Mgr. Petr Novák Katedra informatiky a geoinformatiky FŽP UJEP
Výpočetní technika Akademický rok 2006/2007 Letní semestr Mgr. Petr Novák Katedra informatiky a geoinformatiky FŽP UJEP
AGREGACE Distinct, Group By, Having, SUM, …. DISTINCT  Slučování stejných řádků ve výsledku dotazu. AGREGACE 2 JménoPříjmeníID FrantišekVomáčka1 JosefPokorný2.
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
SQL Structured Query Language
Informatika pro ekonomy II přednáška 11
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy I Přednáška č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Temporální databáze a TSQL
Temporální Databáze Jaroslav Dražan. Čím se budeme zabývat Proč je čas v DB důležitý Práce s časem pomocí klasického SQL Reprezentace časové domény Spojování.
PRÉCIS OD NESTRUKTUROVANÝCH KLÍČOVÝCH SLOV JAKO DOTAZŮ K STRUKTUROVANÝM DATABÁZÍM JAKO ODPOVĚDÍM Martin Lacina.
Medians and Order Statistics Nechť A je množina obsahující n různých prvků: Definice: Statistika i-tého řádu je i-tý nejmenší prvek, tj., minimum = statistika.
Databáze Jiří Kalousek.
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Fakulta elektrotechniky a informatiky
Databázové systémy I Cvičení č. 9 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Relační databáze.
Konceptuální návrh databáze
Matice.
Radomir Tarabič, Egor Ivkin
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Informatika pro ekonomy II přednáška 10
Databázové systémy Přednáška č. 6.
SQL – základní pojmy Ing. Roman Danel, Ph.D.
Relační propojování tabulek. Úvod Tato prezentace má sloužit běžným uživatelům, jak začátníkům, tak i zkušeným uživatelům. Když budete postupovat podle.
Konceptuální návrh databáze
Databázové modelování
Informatika II PAA DOTAZOVACÍ JAZYKY
Zpracování neurčitosti Fuzzy přístupy RNDr. Jiří Dvořák, CSc.
Aplikační a programové vybavení
Databázové systémy Informatika pro ekonomy, př. 18.
Databáze velké množství dat pevně dané struktury
Množiny.
XQuery Dotazovací jazyk XML Daniel Privalenkov. O čem bude prezentace Nutnost dotazovacího jazyku v XML Rychlý přehled XQuery Několik příkladů.
Databázové systémy SQL Výběr dat.
Úvod do logiky (presentace 2) Naivní teorie množin, relace a funkce
TISKOVÉ SESTAVY Michaela Žítková, 4. Y. Úkol: Vytvoření seznamu studentů pro hromadný výlet Úvod Program WinBase Postup při vytváření Závěr.
Použití dotazu jako zdroj dat pro pohled Vypracovala: Procházková Petra.
Aplikační a programové vybavení
DOK. FUZZY MNOŽINY ETC. Klasické množiny Klasická množina – Výběr prvků z nějakého univerza Podle nějakého pravidla – Každý prvek obsahuje nejvýše jednou.
SQL Další dotazy a pohledy Databázové systémy. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
CUBE - Operátor relační agregace
Databáze MS ACCESS 2010.
Úvod do databází zkrácená verze.
● Databaze je soubor dat,slouží pro popis reálného světa(např.evidence čkolní knihovny..) ● Relační databaze je databáze založená na relačním modelu.
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
Databázové systémy I Přednáška 5 Databázové systémy 1 – KIT/IDAS1
Fuzzy-množinová QCA Karel Kouba.
KIV/ZD cvičení 5 Tomáš Potužák.
Výpočetní technika Akademický rok 2008/2009 Letní semestr
Databázové systémy a SQL
Informatika pro ekonomy přednáška 8
Spojitá a kategoriální data Základní popisné statistiky
Optimalizace SQL dotazů
Přednáška 7 SQL – JOIN.
Transkript prezentace:

Fuzzy SQL Jaroslav Tykal, Jiří Dokulil

Proč Fuzzy Přesné vs. „nepřesné“ hodnoty Kdo má nejvyšší plat Kdo má vysoký plat Výhody přesnosti Jednoznačná odpověď na zadanou otázku Nevýhody přesnosti Odpověď právě na to, na co jsme se ptali

Příklad Máme Databáze studentů a jejich studijní průměry Hledáme Dobré studenty (studenti s průměrem >= 3.5) Dotaz SELECT * FROM STUDENTS WHERE GPA >= 3.5;

Příklad – modifikace Máme Databáze studentů a jejich studijní průměry Záznamy o absenci studentů Hledáme Dobré studenty („dobrý student“ je student, který má GPA >= 3.5 a počet zameškaných dnů < 10) Dotaz SELECT * FROM STUDENTS WHERE GPA >= 3.5 AND ABSENCES < 10;

Výsledek dotazu

Příklad Dále požadujeme Setřídit tyto studenty od nejlepšího k nejhoršímu. Zvolíme třízení podle průměru sestupně a podle absencí vzestupně. Dotaz SELECT * FROM STUDENTS WHERE (GPA >= 3.5) AND (ABSENCES < 10) ORDER BY GPA DESC, ABSENCES ASC;

Výsledek dotazu

Nevýhody řešení Ne zcela vyhovující řazení studentů. Student Barry Allen má o málo horší průměr než Billy Kidd. Billy Kidd má však o mnoho horší docházku než Barry Allen. Který z nich je však lepší student? Ne zcela vyhovující seznam studentů Seznam neobsahuje studenty, kteří mají studijní průměr 3.49, ale žádnou absenci. Seznam neobsahuje studenta, který má studijní průměr 4.00 a má 10 absencí.

Cíl Definovat způsob který využije atributy GPA a ABSENCES s jejich pomocí vytvořit hodnotu, která bude vyjadřovat „dobrého studenta“ hodnota „dobrý student“ lépe vyjadřuje naší představu o dobrém studentovi

Fuzzy množiny Základní pojmy Množina – výraz (např. „dobrý prospěch“), který určuje nějakou vlastnost. Stupeň náležení – do množiny může daný prvek patřit do dané množiny. Nabývá hodnot. Funkce příslušnosti – pro daný prvek vrací hodnotu stupeň náležení. Příklad Studenti s průměrem 4.0 budou patřit do skupiny výborný prospěch se stupněm 1. Studenti s průměrem 3.01 budou patřit do skupiny výborný prospěch se stupněm blízkým k nule.

Upravený dotaz Definujeme množiny Dobrý prospěch Minimální hodnota pro náležení do množiny: 3.0 Maximální hodnota pro náležení do množiny: 4.0 Tvar křivky: klasické S Dobrá absence Minimální hodnota: 0 Maximální hodnota: 13 Alpha Cut: 0.1 Tvar křivky: směr klesajícího S

Funkce příslušnosti Pro „dobrý prospěch“

Funkce příslušnosti Pro „dobrou absenci“

Dotaz pomocí Fuzzy množin Dotaz SELECT * FROM STUDENTS WHERE (GPA is „Dobrý prospěch“) and (ABSENCES is „Dobrá absence“) Výsledek studenti, kteří patří do množiny „dobrý student“ ve výsledku je sloupec, jehož hodnoty označují stupeň náležení do „dobrý student“

Dotaz pomocí Fuzzy množin

Poznámky Řazení podle náležení do skupiny „dobrý student“ více odpovídá naší představě o výsledku dotazu. Studenti, kteří jsou si bližší ve smyslu být „dobrý student“, jsou vedle sebe. Ve výsledku jsou i studenti, kteří mají horší průměr i velkou absenci. Tito studenti však mají nízkou hodnotu náležení do skupiny a proto nemá smysl je považovat za „dobré studenty“.

Aplikace v e-business Problém prohledávání elektronických katalogů zboží Tradiční relační databáze podporují vyhledávání na základě přesných podmínek Jsou vráceny právě výrobky přesně odpovídající zadané podmínce Zákazník se většinou zeptá „špatně“ Příliš nepřesná podmínka vracející obrovský počet záznamů Příliš detailní specifikace (ovespecification), která nic nevrátí Nejasná představa zákazníka Neví, jak přesně popsat, co chce Má o tom jen nejasnou představu „Mělo by to stát něco pod 1500“ Má to být celkem malé

„Lepší“ přístupy Nearest-Neighbour Metriky pro jednotlivé atributy, sloučeny váženým způsobem do výsledné podobnosti k-NN algoritmus vrátí k nejpodobnějších Fuzzy Místo vzdálenosti používá přijatelnost (acceptance) Přijatelnost má obvykle tvar nějaké fuzzy distribuce Kombinace lokálních přijatelností probíhá pomocí fuzzy operátorů, tedy má bohatší možnosti než NN. Výsledná hodnota přijatelnosti určí, jestli má být výrobek zobrazen zákazníkovi Umožňuje přiřadit výrobkům fuzzy atributy

Jeden konkrétní systém Cíle Využití existujících relačních databází Data už v nich bývají uložena Jsou již dobře zažité, odladěné a vyspělé Umožní mimo jiné efektivní práci nad velmi rozsáhlými daty Při použití rozšíření jazyka SQL bude možné dotazy v něm zapsané převést na běžné SQL, které tak bude efektivně vyhodnoceno Jazyk fSQL

Architektura systému

Reprezentace dat Atributy výrobků jsou uloženy v relační databázi, takže jsou „normální“, tedy ne fuzzy množiny Nad nimi jsou definovány fuzzy predikáty Fuzzy predikát nad spojitou doménou Fuzzy predikát nad diskrétní doménou Spojitá distribuce nad uspořádanou doménou Diskrétní distribuce nad neuspořádanou množinou Nad těmito predikáty můžou být definovány fuzzy operátory Spojité fuzzy operátory Spojitá fuzzy distribuce nad funkcí operandů (např. jejich rozdílem) Diskrétní fuzzy operátory Podobnost definovaná pomocí matice podobnosti

Dotazy Z fuzzy predikátů a operátorů je pomocí logických spojek vytvořena podmínka WHERE. Je používána fuzzy implementace logických spojek Výsledný dotaz vypadá takto: SELECT A FROM R WHERE fc

Spojky Negace Realizováno jako doplněk do jedné μ not A (x)=1-μ A (x) Konjunkce Minimum z obou ohodnocení μ A۸B (x)=min(μ A (x), μ B (x)) Disjunkce Maximum z obou ohodnocení μ A٧B (x)=max(μ A (x), μ B (x))

Výsledek dotazu SELECT A FROM R WHERE fc Výsledkem dotazu je fuzzy relace Rf, ke které je přiřazena funkce příslušnosti (membership function) určující, jak jednotlivé řádky výsledku odpovídají podmínce fc. μ Rf (a)=sup (xєR)۸(x.A=a) μ fc (x) Význam: Projekce na sloupce A může způsobit, že jeden řádek výsledku vznikne z více řádků R. Takovému řádku je přidělena největší hodnota členství ze všech odpovídajících řádků R

Vyhodnocení dotazu Dotazy chceme vyhodnocovat pomocí relační databáze, je tedy nutné převést fuzzy relaci na běžnou relaci Provedeme λ-řez, tedy vezmeme ty n- tice z Rf, pro které je μ Rf (a)≥ λ SELECT (λ)A FROM R WHERE fc

λ-řez Aplikace λ-řezu na různé fuzzy distribuce (a) definice predikátu ‘vysoký’ nad cenou produktu (b) definice predikátu ‘mnohem menší’ nad rozdílem dvou atributů

λ-řez v číslech Vezměme fuzzy podmínku C a D(C) její fuzzy stupeň Pak lze provádět úpravy výrazu D(cena=vysoká ۸ délka « 100)≥0,8 min(D(cena=vysoká),D(délka « 100)) ≥0,8 D(cena=vysoká)≥0,8 ۸ D(délka « 100) ≥0,8 (110≤cena≤180) ۸ (délka – 100) ≤ -18 Tuto podmínku lze již snadno přeložit do SQL

Konkrétní příklad Obchod s vínem REGION (jméno_regionu, země) PRODUCENT (jméno_prod, adresa_prod, _prod, web_prod, jméno_regionu) TYP_VÍNA (jméno_typu, typ, barva) VÍNO (jméno_vína, jméno_prod, jméno_typu, jméno_regionu, kategorie, cru) LÁHEV (jméno_vína, jméno_prod, rok, dostupnost, cena) Cizí klíče jsou PRODUCENT: foreign key (jméno_regionu) references REGION(jméno_regionu) VÍNO: foreign key (jméno_prod) references PRODUCENT(jméno_prod) VÍNO: foreign key (jméno_typu) references TYP_VÍNA(jméno_typu) VÍNO: foreign key (jméno_regionu) references REGION(jméno_regionu) LÁHEV: foreign key (jméno_vína,jméno_prod) references VÍNO(jméno_vína, jméno_prod)

Konkrétní příklad – pokračování Tyto tabulky jsou strukturované tak, jak to odpovídá relačním databázím Zvolená implementace fuzzy dotazů si však lépe poradí, když je to vše pohromadě CREATE VIEW PRODUKT (jméno_vína, rok, jméno_prod, cena, jméno_typu, barva, kategorie, jméno_regionu, věk) AS SELECT L.jméno_vína, L.rok, L.jméno_prod, L.cena, TV.jméno_typu, TV.typ, TV.barva, V.kategorie, V.jméno_regionu, ($CURRENT_YEAR-L.rok) FROM LÁHEV L, VÍNO V, TYP_VÍNA TV WHERE V.jméno_typu=TV.jméno_typu AND L.jméno_vína=V.jméno_vína

Konkrétní příklad - fuzzy Dále definujeme fuzzy operátor podobnosti nad REGION.jméno_regionu a TYP_VÍNA.jméno_typu, které elegantně reprezentují to, že některé druhy vín a oblasti jsou si podobné Definujeme také některé fuzzy predikáty Položka tabulkyFuzzy hodnoty PRODUCENT.jméno_prodnorm_důležitost, vyská_důležitost TYP_VÍNA.jméno_typunorm_důležitost, vyská_důležitost REGION.jméno_regionunorm_důležitost, vyská_důležitost LÁHEV.věkmladé, střední, staré LÁHEV.cenavelmi levné, levné, střední, drahé, velmi drahé Nakonec ještě definujeme z dřívějška známý operátor mnohem menší než «p nad LÁHEV.cena

Konkrétní příklad – zadání dotazu Dejme tomu, že zákazník hledá mladé červené víno od významného výrobce za středí cenu, která je mnohem menší než €40 a má podobné charakteristiky jako víno z Bordeaux. Zákazník v nějakém formuláři určí tyto požadavky. Dále je potřeba určit hodnotu λ.

Konkrétní příklad – vytvoření fSQL dotazu Vezmeme-li, že byla zvolena hodnota λ=0.8 dostaneme tento dotaz: SELECT (0.8) * FROM PRODUKT, REGION WHERE (PRODUKT.jméno_regionu=REGION.jméno_regionu) AND (PRODUKT.jméno_regionu |sim| ‘Bordeaux’) AND (PRODUKT.jméno_prod={vyská_důležitost}) AND (PRODUKT.cena=[střední]) AND (PRODUKT.cena «p 40) AND (PRODUKT.věk=[mladé]) AND (PRODUKT.barva=‘červené’)

Konkrétní příklad – převod na SQL Máme určenou hodnotu λ=0.8, takže si můžeme znázornit distribuce pro cenu a věk

Konkrétní příklad – převod na SQL - pokračování Dostáváme SQL dotaz SELECT * FROM PRODUKT, REGION WHERE (PRODUKT.jméno_regionu=REGION.jméno_regionu) AND (PRODUKT.jméno_regionu IN (‘Bordeaux’, ‘Jihozápad’)) AND (PRODUKT.jméno_prod IN (‘prod1’, ‘prod2’,… ‘prodN’) AND (PRODUKT.cena BETWEEN 19 AND 31.5) AND (PRODUKT.CENA – 40 <= -18) AND (PRODUKT.věk BETWEEN 0 and 2) AND (PRODUKT.barva=‘červené’) prod1, prod2, … prodN jsou právě jména producentů, kteří mají míru příslušnosti do množiny vyská_důležitost větší než 0.8 Bordeaux a Jihozápad jsou jediné regiony, jejichž míra podobnosti s Bordeaux je větší než 0.8

Jiné implementace fuzzy SQL Samozřejmě existují i jiné možnosti, jak přidat fuzzy logiku do SQL Základ bývá stejný, ale pokročilejší funkce různé Podívejme se na některé zajímavější rozšíření

Úvodem pár drobností Protože každému řádku výsledku je přiřazena míra splnění podmínky, lze snadno místo λ- řezu vracet n nejlepších kandidátů Nad fuzzy podmínkami lze užívat další modifikátory (alteration) very podmínka (x)=(μ podmínka (x)) 2 not podmínka (x)=1-μ podmínka (x) Agregační funkce – protože fuzzy relace je nakonec převedena na běžnou relaci, není problém na ní pak pustit normální agregační funkce

Množinové operace nad fuzzy relacemi union μ AυB (x)=max(μ A (x), μ B (x)) intesect μ A B (x)=min(μ A (x), μ B (x)) except μ A-B (x)= μ A B (x)=min(μ A (x),(1-μ B (x))) υ υ

group by a having V jedné z implementací bylo umožněno i použití group by a fuzzy podmínky having, ovšem pak podmínka za where musela být klasická. SELECT 10 číslo_oddělení FROM zaměstnanci WHERE zařazení=‘účetní’ GROUP BY číslo_oddělení HAVING around(avg(plat+bonus),1000) oddělení, ve kterých účetní berou plat kolem 1000

Řešní „kolizí“ při projekci Už dříve jsme narazili na problém, že jeden řádek výsledné fuzzy relace může vzniknout díky projekci na vybrané atributy z více řádků, které mají různou míru splnění fuzzy podmínky. Situaci lze řešit různě neřešit a vrátit více řádků (SELECT …) vrátit největší míru splnění (SELECT unique …) vrátit nejmenší míru splnění (SELECT unimin …) vrátit průměr měr (SELECT uniavg …)

Neúplná informace Mějme doménu atributu D, pak definujeme Unknown={1/d : dєD} Undefined={0/d : dєD} NULL={1/Unknown, 1/Undefined} Poznámka ke značení: a/b znamená, že b náleží do množiny se stupněm a

Fuzzy operátory porovnání Mimo klasických operátorů porovnání jako =,>,≥,… lze definovat i fuzzy verze Navíc je možné uvažovat dvě možnosti porovnání na možnost porovnání na nutnost Porovnání na možnost je volnější (porovnání na nutnost vrací méně n-tic) Příklad pro rovnost; U je doména, nad kterou je postavena fuzzy doména D, což je doména atributů A a B možná rovnost je definována jako μ A FEQ B (x)=sup min(μ d (x[A]), μ d (x[B])) nutná rovnost jako μ A NFEQ B (x)=inf max(1 – μ d (x[A]), μ d (x[B])) dєUdєU dєUdєU

Efektivní zpracování vnořených Fuzzy SQL dotazů

Fuzzy spojení Značení = zkoumá podobnost predikátů a vrací hodnotu z  zkoumá identitu a vrací hodnoty 0 nebo 1 Spojení R R.X=S.X S R, S relace X atribut, který může být hodnota nebo výraz pro fuzzy množinu Pro libovolné r z R a s z S může být stupeň R.X = S.X, tj. d(r.X = s.X), mezi 0 a 1. Dvojice je generována pokud d(…) > 0.

Fuzzy spojení Příklad r.X = „kolem 30 let“, s.X „mladý“ Osoby reprezentované r a s tedy mohou mít stejný věk pokud se provádí spojení pouze s touto podmínkou, pak stupeň náležení bude min(  R (r),  S (s), d(r.X = s.X))

Klasické metody pro spojení Spojení hašováním využívá rozdělení menší tabulky na skupiny (pomocí hašovací funkce) bere záznamy z větší tabulky a pomocí hašovací funkce se snaží najít záznam z menší tabulky efektivní metoda u klasického SQL, příliš se však nehodí pro Fuzzy SQL Spojení sléváním spojení tabulek podle sloupce, podle kterého jsou obě tabulky řazeny modifikovaný algoritmus použijeme i pro spojení Fuzzy SQL

Částečné uspořádání fuzzy množina v reprezentuje interval [b(v), e(v)] b(v) – začátek intervalu, e(v) – konec intervalu jedna hodnota je definována b(v)=e(v)=v pro n-tice r z R, s z S a X použijeme r.X a s.X k určení jejich fuzzy hodnoty. r.X  s.X reprezentuje obvyklý množinový průnik

Částečné uspořádání Definice pro dvě hodnoty v1 a v2 definujeme v1 < v2 jestliže (b(v1) < b(v2)) || ((b(v1)=b(v2)) && (e(v1)<e(v2))) v1  v2 jestliže v1 < v2 && v1  v2 pro n-tice r1 a r2 definujeme r1 < r2 jestliže (r1.X < r2.X) r1  r2 jestliže r1.X  r2.X

Spojení sléváním - Fuzzy SQL pomocí definovaného uspořádání můžeme získat setřízené záznamy definice pomocných funkcí pro n-tici r z R e sml(r) nejmenší hodnota v taková, která je v S.X a r.X  v   a lrg(r) je největší hodnota v, která je v S.X a r.X  v   rozsah n-tice Rng(r) = {s:s  S a sml(r)  s.X  lrg(r)}, Rng(r) =  jestliže r.X  v   pro všechna v v S.X pokud nebude s v Rng(r), pak je d(r.X = s.X) = 0

Spojení sléváním - Fuzzy SQL Průběh načte se jedna stránka s n-ticemi r do paměti pro každé r se berou všechna s z S, na které lze provést spojení s R (tj. s je v Rng(r)) s jsou také seřazeny a načítány postupně Časová složitost záznamy jsou načítány a slévány postupně časová složitost je lineární vzhledem k většímu počtu záznamů (stránek pro uložení záznamů)

Implementace dotazů Vybrané typy SQL dotazů Typ [A]gregate Typ [J]oin Typ [N]ot join Typ [JA] – Join, Agregate Rozdělení na typy převzato z W.Kim, On Optimizing an SQL-Like Nested Query

Typ A - Agregate Jak vypadá vnitřní dotaz neobsahuje podmínku na spojení tabulek a obsahuje agregační funkci na sloupečky z vnějšího dotazu vnitřní dotaz může být vyhodnocen samostatně, do vnějšího se dosadí vypočítaná hodnota SELECT SNO FROM SHIPMENT WHERE PNO = (SELECT MAX(PNO) FROM PART WHERE PRICE > 25)

Typ N – Not Join Jak vypadá vnitřní dotaz neobsahuje podmínku na spojení tabulek a neobsahuje agregační funkci na sloupečky z vnějšího dotazu výsledkem vnitřního dotazu je množina konstant vnitřní dotaz může být vyhodnocen samostatně SELECT SNO FROM SHIPMENT WHERE PNO IS IN ( SELECT PNO FROM PART WHERE PRICE > 25 )

Typ J - Join Jak vypadá vnitřní dotaz obsahuje podmínku na spojení tabulek a neobsahuje agregační funkci na sloupečky z vnějšího dotazu vnitřní dotaz nemůže být vyhodnocen samostatně SELECT SNO FROM SHIPMENT WHERE PNO IS IN ( SELECT PNO FROM PROJECT WHERE SHIPMENT SNO = PROJECT.SNO AND LOCATION = „New York“)

Typ JA – Join, Agregate Jak vypadá vnitřní dotaz může obsahovat podmínku na spojení tabulek a obsahuje agregační funkci na sloupečky z vnějšího dotazu

Typ N – implementace Fuzzy Dotaz SELECT R.X FROM R WHERE p1 AND R.Y is in (SELECT S.Z FROM S where p2) Zpracování vnitřní dotaz může být zpracován nezávisle stupeň náležení každé nalezené hodnoty vnitřního dotazu je roven min(  S (s), d(p2)) pokud jsou ve výsledku duplicity, pak jsou zrušeny a u hodnoty je ponechána vždy nejvyšší hodnota náležení

Typ N – implementace Fuzzy Dotaz SELECT R.X FROM R WHERE p1 AND R.Y is in (SELECT S.Z FROM S where p2) Jiné zpracování převede se na ekvivalentní dotaz: SELECT R.X FROM R, S WHERE p1 AND R.Y = S.Z AND p2 R se setřídí podle R.Y a S podle S.Z a provede se modifikované spojení sléváním stupeň náležení je pak min(  S (s),  R (r), d(p1), d(p2), d(r.Y=s.Z))

Typ J – implementace Fuzzy Dotaz SELECT R.X FROM R WHERE p1 AND R.Y is in (SELECT S.Z FROM S where p2 AND S.V=R.U) Zpracování převede se na ekvivalentní dotaz: SELECT R.X FROM R, S WHERE p1 AND p2 AND R.Y = S.Z AND S.V = R.U setřídí se R a S a provede se modifikované spojení sléváním stupeň náležení je pak min(  S (s),  R (r), d(p1), d(p2), d(r.Y=s.Z), d(s.V=r.U))

Typ JX – implementace Fuzzy Dotaz SELECT R.X FROM R WHERE R.Y is not in (SELECT S.Z FROM S where S.V=R.U) Zpracování převede se na ekvivalentní dotaz: SELECT R.X, MIN(D) FROM R, S WHERE  R (r) AND  (  S (s) AND R.Y = S.Z AND S.V = R.U) WITH D  0 GROUP BY R.K R.K je klíč R, D je spočtená hodnota náležení ve výsledku mohou být duplicity při odstranění duplicit pomocí distinct se bere max MIN(D)

Typ JA – implementace Fuzzy Dotaz SELECT R.X FROM R WHERE p1 AND R.Y op1 (SELECT AGG(S.Z) FROM S WHERE p2 AND S.V op2 R.U) Značení AGG – agregační funkce op1 a op2 operátory (, >=, <=, =)

Typ JA – implementace Přepíšeme pomocí dvou temporálních relací T1 = SELECT R.U from R WHERE p1 T2 = SELECT T1.U, AGG(S.Z) FROM T1, S WHERE p2 AND S.V op2 T1.U GROUBY T1.U Výsledek SELECT R.X FROM R, T2 WHERE p1 AND R.U  T2.U AND R.Y op1 T2.A Pokud je agregační funkce COUNT, pak je výsledek: SELECT R.X FROM R, T2 WHERE p1 AND R.U +  T2.U

Zdroje P. Bosc, M. Galibourg, G. Hamon: Fuzzy querying with SQL: Extensions and implementation aspects Luigi Portinale, Stefania Montani: A fuzzy case retrieval approach based on SQL for implementing electronic catalogs José Galindo, Juan M. Medina, Olga Pons, Juan C. Cubero: A server for fuzzy SQL Queries Qi Yang, Chengwen Liu, Jing Wu, Clement Yu, Son Dao, Hiroshi Nakajima: Efficient processing of nested fuzzy SQL queries