Petr Jenček David Šinágl Július Štuller

Slides:



Advertisements
Podobné prezentace
MS ACCESS - DOTAZY DATABÁZOVÉ SYSTÉMY.
Advertisements

ŘÍDÍCÍ STRUKTURY - PODMÍNKY
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.
DB1 – 9. cvičení Optimalizace dotazu Konkurenční přístup a deadlock Indexace Transakce.
Fakulta elektrotechniky a informatiky
Informační systémy Nástroje pro sběr dat, návrh a realizace databáze.
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
Informatika pro ekonomy II přednáška 11
Databázové systémy 1 Cvičení č. 3 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
PROGRAMOVACÍ JAZYKY (c) Tralvex Yeap. All Rights Reserved.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
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í.
1IT Relační datový model
Co takhle DOTAZY? OBSAH: Y 1) Co jsou to dotazy ve WinBase Y 2) Vytvoření jednoduchého dotazu Y 3) Použití dotazu.
Databáze Jiří Kalousek.
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
Databázové systémy 2 Cvičení č. 7 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
DATOVÉ MODELY (c) Tralvex Yeap. All Rights Reserved.
Architektura databází Ing. Dagmar Vítková. Centrální architektura V této architektuře jsou data i SŘBD v centrálním počítači. Tato architektura je typická.
Relační databáze.
1IT D OTAZOVACÍ JAZYKY V RELAČNÍCH DATABÁZÍCH Ing. Jiří Šilhán.
Vypracoval: Ondřej Dvorský Třída: VIII.A
Radomir Tarabič, Egor Ivkin
Informatika pro ekonomy II přednáška 10
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy Přednáška č. 6.
SQL – základní pojmy Ing. Roman Danel, Ph.D.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy II Cvičení č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
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á.
Databázové modelování
Databázové systémy Relační model.
Informatika II PAA DOTAZOVACÍ JAZYKY
Aplikační a programové vybavení
Access Vysvětlení pojmu databáze - 01
Databázové systémy 2 Zkouška – 8:00. Příklad I – Procedura – 5 bodů Vytvořte proceduru P_ZK2(p_table_name VARCHAR2, p_min_nuls NUMBER, p_drop.
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.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B13 Autor Ing. Jiří Kalousek Období vytvoření březen.
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
Databázové systémy 2 Zkouška – 8:00. Příklad I - Funkce Vytvořte funkci ZK_DIFF_MIN_MAX (P_ZAM_ID NUMBER) RETURN VARCHAR2. Funkce může vracet.
Administrace Oracle Paralelní zpracování.
Teorie zpracování dat RELAČNÍ DATOVÝ MODEL.
Databázové systémy Datové modely.
Mlhavost Fuzzy logika, fuzzy množiny, fuzzy čísla
Fuzzy SQL Emanuel Buzek,
DATABÁZE.
Filtrování záznamů Filtr podle výběru Filtr podle formuláře Rozšířený filtr Symboly, výrazy Dotazy.
Ú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.
Základy RA RA = matematický základ pro relační modul DBS jazyk SQL Relační DBS = Relační algebra + Relační model Doména = množina hodnot stejného typu/významu.
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
Výpočetní technika Akademický rok 2008/2009 Letní semestr
Databázové systémy a SQL
Informatika pro ekonomy přednáška 8
Databázové systémy a SQL
Optimalizace SQL dotazů
Relační model databáze
Přednáška 9 Triggery.
Databázové systémy a SQL
Transkript prezentace:

Petr Jenček David Šinágl Július Štuller Fuzzy SQL Petr Jenček David Šinágl Július Štuller

Obsah Motivační příklady, řešení pomocí standardního SQL Formalizace GEFRED, jazyk fuzzy SQL Operátory Funkce Architektura FRDB Vyřešení motivačních příkladů pomocí fuzzy SQL

Příklad 1 Dobří studenti Zadání: Z tabulky studentů, která obsahuje aritmetický průměr známek za uplynulý šk. rok, docházku za uplynulý šk. rok a další informace o studentech, vybrat “dobré” studenty Analýza problému Co je “dobrý” student? Na čem závisí fakt, že je student “dobrý”?

Příklad 1 Řešení 1 “Dobrý” student má průměr aspoň 3.5 bodů SELECT * FROM STUDENTS WHERE GPA >= 3.5 I “flákač”, který do školy skoro nechodí, může být “dobrý” student

Příklad 1 Řešení 2 “Dobrý” student má průměr aspoň 3.5 bodů a absenci méně než 10 dní SELECT * FROM STUDENTS WHERE (GPA >= 3.5) AND (ABSENCES < 10) Výsledky nejsou setříděny podle toho, jak je student “dobrý” Name GPA Absences Becky Springston 4.0 3.0 Jeff Williams 3.5 9.75 Leroy Jefferson 3.75 4.5 Mike Salisbury 1.0 Kevin Costner Shelly Whitman Barry Allen 3.9 2.0 Billy Kidd John Conner 7.0

Příklad 1 Řešení 3 Setřídíme podle průměru a absencí (v tomto pořadí) SELECT * FROM STUDENTS WHERE (GPA >= 3.5) AND (ABSENCES < 10) ORDER BY GPA DESC, ABSENCES ASC ... Sem přijde dataset Proč by student, který má průměr jen o málo horší než 3,5, ale má velmi málo absencí neměl být dobrý? Name GPA Absences Mike Salisbury 4.0 1.0 Becky Springston 3.0 John Conner 7.0 Billy Kidd 9.75 Barry Allen 3.9 2.0 Kevin Costner 3.75 Shelly Whitman Leroy Jefferson 4.5 Jeff Williams 3.5

Příklad 2 Podobné barvy Zadání: Zákazník si vybírá barvu obkladového materiálu. Chce barvu “podobnou” jiné barvě, kterou zná (např. barva již zakoupené kuchyňské linky). Analýza problému: Jak definovat “podobnou” barvu?

Příklad 2 Řešení “Podobná” barva je taková barva, jejíž složky RGB se liší maximálně o 10 od složek RGB barvy definované zákazníkem SELECT * FROM ITEMS WHERE ABS(RED – red1) < 10 AND ABS(GREEN – green1) < 10 AND ABS(BLUE – blue1) < 10 Problém: Pokud se barva liší od barvy zadané uživatelem pouze v 1 složce, ale více než o 10, zákazník ji neuvidí.

Příklad 3 Párování nabídky a poptávky Zadání: Pro realitní kancelář vytvořit skript, který bude párovat nabídku s “odpovídající” poptávkou. Nabídka i poptávka je charakterizována lokalitou, cenou a dalšími atributy. Analýza problému: Které dvojice nabídka/poptávka si ještě odpovídají a které už ne?

Příklad 3 Řešení Pro každý atribut zvolit jistou toleranci. Pokud je rozdíl obou atributů v rámci této tolerance, nabídka a poptávka “si odpovídají”. SELECT o.*, d.* FROM OFFERS o, DEMANDS d WHERE ABS(o.PRICE, d.PRICE) <= price_tol AND DIST(o.LOCATION, d.LOCATION) <= location_tol … Problém: Vyhledávání párování s jinou celkovou tolerancí je obtížné Uživatel typicky řekne, že “tento atribut je hodně důležitý, ale na onom atributu mi zas tolik nezáleží” Obtížně se zohledňují individuální preference klienta

Co mají tyto problémy společné? Hledají se prvky, které náleží do jisté množiny Tato množina NEMÁ přesně definovanou operaci příslušení V předchozích příkladech definována vágními termíny uvedenými v uvozovkách Dobrý Podobná Odpovídající Hodilo by se cosi jako “s pravděpodobností p prvek x náleží do množiny M”

Pravděpodobnostní rozdělení Typicky trapézoidní, lineární, normalizované Uloženy ve Fuzzy Metaknowledge Base (FMB) f(x) = 1 – prvek určitě patří do množiny f(x) = 0 – prvek určitě nepatří do množiny f(x) Î (0, 1) – prvek patří do množiny s pravděpodobností f(x)

Fuzzy logika a(p) AND b(q) min(p, q) a(p) OR b(q) max(p, q) NOT a(p) V případě diskrétního ohodnocení {0, 1} tyto operátory odpovídají k nim příslušným operátorům

David Šinágl (2.část)

GEFRED Generalized model of Fuzzy Relational Databases Rozšíření klasického RDM

Nepřesná data 1. Jednoduchá skalární hodnota (Size=Big, reprezentovaná pravděpodobnostním rozdělením 1/Big Číselná hodnota (Age=28, reprezentovaná PR 1/28) Množina vzájemně různých skalárních hodnot (Behavior={good,bad}, reprezentovaná {1/good,1/bad} Množina vzájemně různých číselných hodnot (Age={20,21}, reprezentovaná {1/20,1/21} Pravděpodobnostní rozdělení ve skalární doméně (Behavior={0.7/normal,0.6/bad})

Nepřesná data Pravděpodobnostní rozdělení ve číselné doméně (Age={0.4/23,1.0/24,0.8/25}) Reálné číslo z [0,1] vyjadřující míru splňení (Quality=0.9) Unknown Undefined NULL

Unknown, Undefin ed,NULL

Zobecněná fuzzy doména Generalized Fuzzy Domain Definice: Buď U doména, P(U) množina všech pravděpodobnostních rozdělení pro U. Pak definujme Zobecněnou fuzzy doménu D:

Zobecněná fuzzy relace (Generalized Fuzzy Relation) Zobecněná fuzzy relace R je definována: R=(H,B) H: Množina trojic (atribut,doména,[kompatibilita]) H={(A1:D1[,C1]),..., (An:Dn[,Cn])} B: Množina n-tic, každá n-tice je složena z trojic (atribut,hodnota[,stupeň]) B={(A1:di1 [,ci1]), ... , (An:din [,cin])} i=1..m m..počet n-tic

Primární klíč R je GFR, Definujme primární klíč K: který splňuje

Manipulace s daty Zobecněná fuzzy relační algebra sjednocení, průnik, rozdíl, kartézský součin, projekce, spojení, selekce operátory

Sjednocení l=1..m, m.. Kardinalita sjednocení

Průnik l=1..m, m.. Kardinalita sjednocení

Operátory Porovnávací operátory jsou také předefinovány: Například possibly equal: p,p’ U a jejich funkce příslušnosti jsou f(p) a f(p’) U je univerzum. posEQ(p,p’):=sup min (f(p)(d),f(p’)(d)) d U

Fuzzy SQL Lingvistické proměnné Fuzzy porovnávací operátory Míra splnění Funkce CDEG Znak % Fuzzy konstanty Podmínka IS

Lingvistické proměnné Pro fuzzy atributy před proměnnou je znak $ 2 typy lingvistické proměnné Pro uspořadatelné množiny: Př: Můžeme nadefinovat $Short, $Normal, $Tall, $VeryTall na adtributu Height

Lingvistické proměnné Pro neuspořadatelné množiny Je definována míra podobnosti mezi každou dvojicí atributů

Fuzzy porovnávací operátory Possibility Necessity FEQ NFEQ Fuzzy Equal than FGT FGEQ NFGT NFGEQ Fuzzy Greater Than Fuzzy Greater or Equal then FLT FLEQ NFLT NFLEQ Fuzzy Less Than Fuzzy Less or Equal than MGT MLT NMGT NMLT Much Greater Than Much Less Than

Fuzzy porovnávací operátory

Fuzzy porovnávací operátory

Míra splnění Fulfillment tresholds Pro každou podmínku je možné určit hodnotu při které požadujeme podmínku za splněnou. <podmínka> THOLD g

Funkce CDEG CDEG(<atribut>) Pro daný atribut zobrazí stupeň splňení podmínky v dotazu Select * fro neco where .. And or

Znak % Podobný význam jako * v SQL Ve výsledku bude navíc použita funkce CDEG na každý fuzzy atribut

Fuzzy konstanty UNKNOWN UNDEFINED NULL $[a,b,c,d] $label [n,m] #n

Podmínka IS <Fuzzy_Atribut> IS [NOT] (UNKNOWN | UNDEFINED | NULL )

Július Štuller (3.část)

Lingvistické proměnné Zavedl Zadech (1965) Příklad: Rychlost..lingvistická proměnná Pomalá, střední, rychlá..lingvistická hodnota Používá se 3-5 lingvistických hodnot, více jak 7 není člověk schopen rozlišit.

Fuzzy množiny Klasické množiny (známe) x Î A, x Ï A Fuzzy množin (zobecnění klasické teorie množin). x Î A s mírou náležení 0.40 -pro reprezentaci lingvistických hodnot se používají fuzzy množiny. -obyčejně reprezentované jednoduchými funkcemi trojúhelníkové, lichoběžníkové (kvůli snadné práci s nimi).

Fuzzy logika – praktické použití Pračka, zaostřování ve fotoaparátu (používají fuzzy regulátory – př. koštěte) Brzdný systém ABS v automobilech, automatická převodovka Fuzzy databázový systém pro prohledávání databáze biologických materiálů

Architektura - implementace 3 možné typy přístupu: Klasické (tzv. crisp) data & fuzzy dotazy (dotaz obsahuje fuzzy operátory) Fuzzy data & klasické dotazy (v databázi jsou uloženy fuzzy údaje) Fuzzy data & fuzzy dotazy Pozn.: subjektivní pohled vynecháme

Klasické data & fuzzy dotazy SELECT Jmeno, Vek FROM Osoby WHERE Vek = $mladý Pozn.: vrstva nad daty, která interpretuje mladý, snaha příbližit se vyjadřování v běžném jazyce Data Výsledek dotazu Michal 10 Jan 25 Pavel 27 Tomáš 36 Michal 10 Jan 25 Pavel 27

Fuzzy data & klasické dotazy(1) SELECT * FROM Osoby WHERE Vek = ‘mladý’ Data Výsledek dotazu Fuzzy atribut Michal mladý 0.80 Jan 0.55 Pavel 0.53 Tomáš starý 0.30 Michal mladý 0.80 Jan 0.55 Pavel 0.53

Fuzzy data & klasické dotazy(2) SELECT * FROM Osoby WHERE Vek = ‘mladý’ Data Výsledek dotazu Fuzzy atribut Michal mladý 0.80 Jan 0.55 Pavel 0.53 Tomáš 0.40 Michal mladý 0.80 Jan 0.55 Pavel 0.53 Tomáš 0.40

Fuzzy data & fuzzy dotazy SELECT * FROM Osoby WHERE Vek = hodně $mladý Pozn.: hodně je operátor, který definuje mez Data Výsledek dotazu Fuzzy atribut Michal mladý 0.80 Jan 0.55 Pavel 0.53 Tomáš 0.40 Michal mladý 0.80 Jan 0.55 Pozn.: Normální atributy x fuzzy atributy

Příklad 10 25 27 36 Data Věk Vlasy (FA) Věk2 (FA) Michal černé 0.40 mladý 0.80 Jan 25 blond 0.55 Pavel 27 0.50 0.53 Tomáš 36 růžové 0.10 starý 0.30 FA..fuzzy atribut

FRDB Architektura FRDB a FSQL Server implementovány pomocí existujícího DBMS. Důsledky: Pomalejší systém Snadná implementace Ponechány veškeré výhody stávajícího DBMS Jako příklad jsme vybrali ORACLE.

FRDB Architektura Data: FSQL Server FSQL Klient standardní databáze FMB (Fuzzy Meta-knowledge Base) FSQL Server FSQL Klient

FRDB Architektura FSQL Klient Standardní FMB Databáze Databáze 1. FSQL dotaz 3. SQL dotaz 4. SQL dotaz 5. Výsledek Databáze Standardní Databáze FMB FSQL Server 2. Informace z FMB

Data: standardní databáze relační data + speciální formát pro uložení fuzzy atributu. Typy fuzzy atributů: Typ 1: běžné hodnoty + některé lingvistické proměnné definované nad nimi (pomocí lichoběžníkových značek) => větší flexibilita, lze použít všechny konstanty z tabulky při formulaci dotazu (UNKNOWN, UNDEFINED, NULL, $[a,b,c,d], $label, [n,m], #n)

Data: standardní databáze Typ 2: běžné hodnoty + možnostní rozdělení (possibility distribution) nad setříděnou doménou. => lze uložit a použít v dotazu všechny konstanty z tabulky. Typ 3: Nad příslušnými lingvistickými proměnnými lze definovat podobnost. např. barvy: světle fialová je podobná s koeficientem 0.88 fialové => Lze použít pouze operátor FEQ, nelze používat následující konstanty ($[a,b,c,d], [n,m], #n)

Fuzzy Meta-knowledge Base Jsou zde uloženy meta-data o jednotlivých fuzzy atributech (podle typu atributu).

FSQL Server Naprogramován celý v PL/SQL (procedurální rozšíření SQL) Překladové funkce (FSQL2SQL) Analýza dotazu, vypíše všechny chyby jsou-li jaké, jinak přeloží FSQL do standardního SQL. Výsledný SQL dotaz obsahuje reference na zobrazovací funkce a fuzzy porovnávací funkce. Zobrazovací funkce Slouží k zobrazení fuzzy atributů v přehledné formě uživateli. Fuzzy porovnávací funkce Porovnávání hodnot a stupeň kompatibility (CDEG funkce).

FSQL Klient Nezávislý program, který slouží jako rozhraní mezi uživatelem a FSQL Serverem. Uživatel pouze zadá dotaz a program se postará o to, aby dostal konečný výsledek.

FSQL – řešení příkladů (1) SELECT * FROM STUDENTS WHERE (GPA >= 3.5) AND (ABSENCES < 10) ORDER BY GPA DESC, ABSENCES ASC SELECT * FROM STUDENTS WHERE (GPA FEG $’Dobrý prospěch’ AND ABSENCES FEG $’Dobrá absence’) THOLD 0.60

FSQL – řešení příkladů (1) QCIX - Query Compatibility Index, míra toho, jak moc záznam patří do výsledné množiny.

FSQL – řešení příkladů (2) SELECT * FROM ITEMS WHERE ABS(RED – red1) < 10 AND ABS(GREEN – green1) < 10 AND ABS(BLUE – blue1) < 10 SELECT *, CDEG(*) FROM ITEMS WHERE barva FEG barva1 THOLD 0.9 CDEG..QCIX míra toho, jak moc záznam nebo položka patří do výsledné množiny.

FSQL – řešení příkladů (3) SELECT o.*, d.* FROM OFFERS o, DEMANDS d WHERE ABS(o.PRICE, d.PRICE) <= price_tol AND DIST(o.LOCATION, d.LOCATION) <= location_tol … SELECT *, CDEG(Location) FROM OFFERS o, DEMANDS d WHERE o.PRICE FGEG d.PRICE THOLD 0.85 AND o.LOCATION FEG d.LOCATION THOLD 0.70

FSQL – instalační skript CREATE TABLE FUZZY_COL_LIST( OBJ# NUMBER NOT NULL, --ID tabulky (z USER_OBJECTS) COL# NUMBER NOT NULL, --ID sloupce (z USER_TAB_COLUMNS) F_TYPE NUMBER(1) NOT NULL, LEN NUMBER(2) NOT NULL, -- mezi 1 a 10 … CREATE TABLE FUZZY_OBJECT_LIST( OBJ# NUMBER NOT NULL, COL# NUMBER NOT NULL, FUZZY_ID NUMBER(3) NOT NULL, --ID objektu v FUZZY_LABEL_DEF FUZZY_NAME VARCHAR2(30) NOT NULL, FUZZY_TYPE NUMBER(1) NOT NULL, CREATE TABLE FUZZY_LABEL_DEF( FUZZY_ID NUMBER(3) NOT NULL, ALFA NUMBER NOT NULL, BETA NUMBER NOT NULL, GAMMA NUMBER NOT NULL, DELTA NUMBER NOT NULL,

FSQL – instalační skript CREATE TABLE FUZZY_NEARNESS_DEF( OBJ# NUMBER NOT NULL, COL# NUMBER NOT NULL, FUZZY_ID1 NUMBER(3) NOT NULL, -- FUZZY_OBJECT_LIST.FUZZY_ID%TYPE FUZZY_ID2 NUMBER(3) NOT NULL, -- FUZZY_OBJECT_LIST.FUZZY_ID%TYPE DEGREE NUMBER (3,2) NOT NULL, … CREATE TABLE FUZZY_COMPATIBLE_COL( OBJ#1 NUMBER NOT NULL, COL#1 NUMBER NOT NULL, OBJ#2 NUMBER NOT NULL, COL#2 NUMBER NOT NULL,

FSQL – interní funkce FUNCTION FSQL2SQL (consulta IN LONG) RETURN INTEGER IS Nerrors INTEGER; TIME_inicial DATE; BEGIN ... Nerrors:=fsql_pkg.fsql_lexico(consulta); --lex. elementy Nerrors :=fsql_pkg.fsql_sintactico; --odpovídá dané gramatice IF Nerrors<>0 THEN Actualiza_FSQL_OPT (Nerrors,TIME_inicial); RETURN Nerrors; ELSE Nerrors :=FSQL_SEMANTIC.semantico; --má-li to smysl END IF; END FSQL2SQL; Pozn.: consulta..dotaz (id z FSQL_ALL_QUERIES)

Závěr Snaha přiblížit tvorbu SQL dotazu lidské řeči, našemu normálnímu myšlení. Fuzzy SQL je silný nástroj pro vyhledávání dat podle nepřesně zadaných kritérií. V příkladě implementován pomocí klasického SQL (PL/SQL). Fuzzy logika je dnes již běžně používána, je možné, že Fuzzy SQL začne časem být také běžně používaný jazyk.

Zdroje A Server for Fuzzy SQL Queries – Jose Galindo Fuzzy koncepty v databázových systémech – Radim Nedbal 2002 http://www.lcc.uma.es/~ppgg/FSQL.html http://fuzzy.sonalysts.com http://marcelm.szm.sk/