Interpreter wyrażeń rozmytych stosowanych w składni języka SQL

Podobne dokumenty
WARTOŚCI ROZMYTE W ZAGNIEŻDŻONYCH PYTANIACH SQL

Lingwistyczne podsumowania baz danych.inteligentne generowanie s

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

Sylabus do programu kształcenia obowiązującego od roku akademickiego 2014/15

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

PRZEWODNIK PO PRZEDMIOCIE

K1A_W11, K1A_W18. Egzamin. wykonanie ćwiczenia lab., sprawdzian po zakończeniu ćwiczeń, egzamin, K1A_W11, K1A_W18 KARTA PRZEDMIOTU

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

KARTA PRZEDMIOTU 1,5 1,5

forma studiów: studia stacjonarne Liczba godzin/tydzień: 1, 0, 2, 0, 0

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

Zapytania do bazy danych

Karta (sylabus) modułu/przedmiotu Mechanika i Budowa Maszyn Studia I stopnia

PRZEWODNIK PO PRZEDMIOCIE

QUERY język zapytań do tworzenia raportów w AS/400

Grupa kursów: Wykład Ćwiczenia Laboratorium Projekt Seminarium 15 30

Egzamin / zaliczenie na ocenę* 0,5 0,5

KARTA MODUŁU KSZTAŁCENIA

Programowanie sieciowe Network programming PRZEWODNIK PO PRZEDMIOCIE

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

PRZEWODNIK PO PRZEDMIOCIE

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

14. Przedmiot: N/PM2012/11/14/I1 INFORMATYKA moduł 1 Semestr. Liczba tygodni Liczba godzin w tygodniu Liczba godzin w semestrze ECTS

Oracle11g: Wprowadzenie do SQL

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Krakowska Akademia im. Andrzeja Frycza Modrzewskiego. Karta przedmiotu. obowiązuje studentów, którzy rozpoczęli studia w roku akademickim 2015/2016

PRZEWODNIK PO PRZEDMIOCIE

Wykład I. Wprowadzenie do baz danych

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Plan. Raport. Tworzenie raportu z kreatora (1/3)

PRZEWODNIK PO PRZEDMIOCIE

Specjalnościowy Obowiązkowy Polski Semestr 5

KARTA PRZEDMIOTU. WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI Ogólne umiejętności posługiwania się komputerem

Ramowy plan kursu. Lp. Moduły Wyk. Lab. Przekazywane treści

1. Podręcznik instalacji aplikacji EXR Creator Wstęp Instalacja Instalacja aplikacji EXR Creator z płyty CD

Interwałowe zbiory rozmyte

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

Inteligencja obliczeniowa

Sage Migrator 2019.e Migracja do Sage 50c wersja 2019.a i 2019.b

PRZEWODNIK PO PRZEDMIOCIE

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 2 Ćwiczenia w narzędziu CASE diagram klas. Materiały dla nauczyciela

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

PODSTAWY BAZ DANYCH. 19. Perspektywy baz danych. 2009/2010 Notatki do wykładu "Podstawy baz danych"

Konspekt do lekcji informatyki dla klasy II gimnazjum. TEMAT(1): Baza danych w programie Microsoft Access.

Bazy danych i strony WWW

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 1 Wprowadzenie do narzędzia CASE. Materiały dla nauczyciela

5.5. Wybieranie informacji z bazy

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

KARTA PRZEDMIOTU. Programowanie aplikacji internetowych

Specjalnościowy Obowiązkowy Polski Semestr trzeci

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Bieżący sylabus w semestrze zimowym roku 2016/17

PRZEWODNIK PO PRZEDMIOCIE

Egzamin / zaliczenie na ocenę*

KARTA KURSU. Przetwarzanie dokumentów XML i zaawansowane techniki WWW

Informatyka I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny) stacjonarne (stacjonarne / niestacjonarne)

Projekt przejściowy 2015/2016 BARTOSZ JABŁOŃSKI, TOMASZ JANICZEK

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014

PRZEWODNIK PO PRZEDMIOCIE

E-1EZ s1. Technologie informacyjne. Elektrotechnika I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

PROJEKT WSPÓŁFINANSOWANY ZE ŚRODKÓW UNII EUROPEJSKIEJ W RAMACH EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO OPIS PRZEDMIOTU. studia pierwszego stopnia

Kasy Fiskalne Lublin Analityk

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Tom 6 Opis oprogramowania

Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia. Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia

PRZEWODNIK PO PRZEDMIOCIE

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni

PRZEWODNIK PO PRZEDMIOCIE

ID1SII4. Informatyka I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny) stacjonarne (stacjonarne / niestacjonarne)

dziennik Instrukcja obsługi

PRZEWODNIK PO PRZEDMIOCIE

Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH. Modeling and analysis of computer systems Forma studiów: Stacjonarne

MS Excel 2007 Kurs zaawansowany Obsługa baz danych. prowadzi: Dr inż. Tomasz Bartuś. Kraków:

PRZEWODNIK PO PRZEDMIOCIE

Alicja Marszałek Różne rodzaje baz danych

Pracownia internetowa w każdej szkole (edycja jesień 2005)

Szkolenie autoryzowane. MS Tworzenie zapytań do Microsoft SQL Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Krakowska Akademia im. Andrzeja Frycza Modrzewskiego. Karta przedmiotu. obowiązuje studentów, którzy rozpoczęli studia w roku akademickim 2012/2013

Sage Migrator 2018.c Migracja do wersji Sage Kadry i Płace 2018.b

ALGORYTM PROJEKTOWANIA ROZMYTYCH SYSTEMÓW EKSPERCKICH TYPU MAMDANI ZADEH OCENIAJĄCYCH EFEKTYWNOŚĆ WYKONANIA ZADANIA BOJOWEGO

KARTA KURSU. Wstęp do programowania

Technologie informacyjne Information technologies

LITERATURA. C. J. Date; Wprowadzenie do systemów baz danych WNT Warszawa 2000 ( seria Klasyka Informatyki )

APLIKACJE KLIENT-SERWER Client-Server Applications Forma studiów: Stacjonarne Poziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W, 2L

Transkrypt:

Rozdział 16 Interpreter wyrażeń rozmytych stosowanych w składni języka SQL Streszczenie. W rozdziale przedstawiono strukturę rozszerzonego języka SQL, nazwanego FuzzySQL, zrealizowanego w Instytucie Informatyki Politechniki Śląskiej oraz budowę, działanie interpretera wyrażeń rozmytych FuzzyQ, będącego jednocześnie dydaktycznym systemem pozwalającym na naukę pytań konstruowanych w języku FuzzySQL. Główną uwagę w pracy zwrócono na wykorzystanie teorii zbiorów rozmytych w wyszukiwaniu informacji w bazach danych, a szczególnie na zastosowanie elementów teorii zbiorów rozmytych w zapytaniach języka SQL. W końcowej części rozdziału przedstawiono zestaw kilku złożonych zadań rozmytego wyszukiwania danych i zaprezentowano zapis rozmytych pytań w języku FuzzySQL oraz ich realizację w systemie FuzzyQ wraz z otrzymanymi wynikami. 1 Wstęp Systemy informatyczne gromadzące i przechowujące duże ilości danych są obecnie nieodłącznym elementem otaczającej nas rzeczywistości. Krytycznym problemem w tego typu systemach staje się efektywne wyszukanie pożądanych informacji. Analiza nowych kierunków rozwoju baz danych pokazuje, że coraz częściej zamiast tradycyjnego wyszukiwania, w wyniku którego w odpowiedzi otrzymuje się obiekty, które ściśle spełniają podane warunki, stosuje się metody aproksymacyjnego wyszukiwania informacji. Analizując stopień spełnienia kryteriów podanych w zapytaniu oraz rodzaj zastosowanej funkcji charakterystycznej, wyodrębnia się kilka rodzajów zapytań aproksymacyjnych: wektorowe, oparte na prawdopodobieństwie, rozmyte, w języku naturalnym i inne. Ze względu na coraz większą popularność metod aproksymacyjnego wyszukiwania informacji celowym wydaje się wprowadzenie do programu zajęć dydaktycznych systemów umożliwiających takie wyszukiwanie. W niniejszym rozdziale przedstawiono system dydaktyczny FuzzyQ [1], który umożliwia konstruowanie zapytań w rozszerzonym języku FuzzySQL [2] oraz ich poprawną interpretację. Głównym zadaniem prezentowanego systemu jest nauka rozszerzonego języka SQL poprzez graficzne przedstawienie miejsc występowania elementów rozmytych w składni poleceń języka SQL. Dodatkowo system wspomaga użytkownika w zbudowaniu szkie- Bartosz Dziedzic, Bożena Małysiak, Dariusz Mrozek Politechnika Śląska, Instytut Informatyki, ul. Akademicka 16, 44-100 Gliwice, Polska email:{bozena.malysiak, dariusz.mrozek)@polsl.pl

B. Dziedzic, B. Małysiak, D. Mrozek letu zapytania z elementami rozmytymi, umożliwia przesłanie go do serwera bazy danych oraz odpowiednio prezentuje zbiór wynikowy [1]. W trakcie realizacji założono, że użytkownik korzystający z systemu zna składnię poleceń języka SQL [3], [4], [5] oraz posiada minimalną wiedzę na temat logiki rozmytej [7], [8], [9], [10] i tworzenia zapytań rozmytych, znając zaimplementowane dodatkowe funkcje i operatory rozmyte [2]. System umożliwia połączenie z dowolną bazą danych, dla której zdefiniowano funkcje i operatory rozmyte. System ten jest obecnie wykorzystywany do nauki rozmytego wyszukiwania informacji w bazach danych na zajęciach laboratoryjnych z przedmiotu Bazy Danych na kierunku Informatyka Politechniki Śląskiej. W trakcie laboratorium udostępniane są bazy danych wraz z funkcjami i operatorami zrealizowane w ramach pracy [2]. 2 Systemy umożliwiające naukę konstruowania zapytań rozmytych Analizując pod kątem dydaktycznym rynek darmowych i komercyjnych programów, nie udało się znaleźć żadnej aplikacji, która wskazywałaby na miejsca występowania elementów rozmytych i ułatwiałaby opanowanie rozszerzonego języka SQL. Jest wysoce prawdopodobne, że takie aplikacje istnieją, jednak działają w obrębie ośrodków naukowych i nie są przez nie rozpowszechniane. Po bezowocnych poszukiwaniach zmieniono obiekt poszukiwań na aplikacje uczące języka SQL. Tym razem wynik był znacznie lepszy, choć daleki od oczekiwań. Spodziewano się, że aplikacji wspomagających budowanie zapytań formułowanych w języku SQL będzie bardzo dużo, biorąc pod uwagę popularność, funkcjonalność oraz niepodważalną bezkonkurencyjność tego języka w zastosowaniu z relacyjnymi bazami danych. Na wyróżnienie zasługuje projekt polskiego wydawnictwa Wydawnictwa Szkolne i Pedagogiczne, który zrealizował aplikację umożliwiającą odbycie kursów on-line. Jest to projekt komercyjny i dostępna jest jedynie wersja demonstracyjna produktu. Kurs ten stał się podstawą do utworzenia Polskiego Uniwersytetu Wirtualnego, co świadczy o wysokiej jakości dydaktycznej. Być może w przyszłości treść kursu poszerzona zostanie o temat występowania elementów rozmytych w pytaniach SQL. Pomimo, że nie ma wiele programów dydaktycznych uczących języka SQL, w sieci Internet można znaleźć bardzo dużo materiałów teoretycznych popartych przykładami. Druga część analizy dotyczyła systemów, w których zastosowano zapytania rozmyte. Jedną z kilku firm tworzących oprogramowanie systemowe w oparciu o logikę rozmytą jest firma Sonalysts Inc. Dział Fuzzy System Solutions zajmuje się rozwijaniem i wdrażaniem oprogramowania przetwarzającego dane, pozwalającego na zadawanie zapytań rozmytych. Fuzzy Query jest tworzoną od połowy 1997 r. aplikacją. Aplikacja ta pozwala użytkownikowi zadawać do bazy danych pytania wykorzystujące logikę rozmytą [11]. Użytkownik ma możliwość: zdefiniowania wybranej funkcji przynależności poprzez wybór krzywej, określenie dziedziny tej funkcji itd.. Może również zdefiniować kryteria, zbudować zapytanie czy też wykonać je. W odpowiedzi otrzymuje się zbiór wierszy wynikowych posortowanych względem stopnia spełnienia kryteriów pytania. System Fuzzy Query znajduje zastosowanie w wielu dziedzinach życia, w których przetwarza się wiele danych i poddaje się je analizie. W Sonalysts Inc. opracowano również system Fuzzy Query dla MS Excel. Wszystkie te aplikacje mają charakter komercyjny. Warto również zwrócić uwagę na rozwiązanie udostępniane przez dr Jose Galino Gomeza pracownika uniwersytetu w Maladze. Jest ono ogólnie dostępne na stronie http://www.lcc.uma.es/~ppgg/fsql.html. Składa się z dwóch części: pierwsza to FSQL Server, udostępniający dodatkowe funkcje i operatory rozmyte dla bazy danych firmy 202

Interpreter wyrażeń rozmytych stosowanych w składni języka SQL ORACLE, natomiast druga to aplikacja klienta pozwalająca na zastosowanie rozmytych zapytań. W Polsce zastosowaniem teorii zbiorów rozmytych w bazach danych oraz semantyką niedokładnych pytań, wyrażaną w oparciu o teorię zbiorów rozmytych (niedokładność reprezentowana za pomocą zmiennych lingwistycznych), zajmuje się Instytut Badań Systemowych PAN w Warszawie (J. Kacprzyk, S. Zadrożny, A. Ziółkowski) [12], [13]. Pracownicy Instytutu opracowali narzędzie, oparte na logice rozmytej, efektywnego wyszukiwania nieprecyzyjnej informacji wyrażonej w postaci słownej (mniejszy, większy) dla MS Access (ang. FQUERY for Access) [14]. FQUERY [15] umożliwia wykorzystanie elementów teorii zbiorów rozmytych takich jak: wartości lingwistyczne (np. wysoki), relacje lingwistyczne (np. znacznie więcej niż), modyfikatory lingwistyczne (np. bardzo) i lingwistyczne kwantyfikatory (np. większość) w pytaniach rozmytych zadawanych do bazy danych zawierającej dokładne informacje. FQUERY posiada interfejs graficzny, za pomocą którego można definiować rozmyte elementy (kwantyfikatory czy relacje rozmyte). Następnie, wykorzystując możliwości SZBD MS Access, użytkownik może konstruować pytanie do bazy danych zawierające zdefiniowane wcześniej Elementy rozmyte. System FQUERY może również zostać uruchomiony w sieci Internet, wykorzystując standardowe przeglądarki (NETSCAPE czy MS Internet Explorer), umożliwia zadawanie pytań przez Inetrnet. Nowsze wersje systemu FQUERY mają zaimplementowane pewne elementy SQLf opracowane przez P. Bosc a i O. Pivert a [16]. Obecnie w tym ośrodku trwają prace nad wykorzystaniem teorii zbiorów rozmytych w bazach danych wykorzystywanych przez aplikacje medyczne, pozwalające na rozpoznawanie chorób, na wyodrębnianie pacjentów o objawach najbardziej odpowiadających zdefiniowanym już wcześniej objawom choroby [17], [18]. We Francji od wielu lat P. Bosc i O. Pivert zajmują się rozszerzeniem języka SQL o elementy rozmyte, pozwalające na zadawanie nieprecyzyjnych zapytań do bazy danych. Są oni jednymi z twórców rozszerzonego języka SQL o nazwie SQLf [16], [19], [20], [21], wraz z H. Prade określili podział informacji rozmytej na: niepewną, nieprecyzyjną, nieokreśloną i niezgodną. Jak widać mechanizmy tworzenia zapytań rozmytych są tematem wielu badań naukowych na całym świecie, dlatego kształcenie studentów w tej dziedzinie oraz realizacja systemów wspomagających nauczanie w tym zakresie wydaje się być celowe. 3 Struktura zapytań w języku FuzzySQL FuzzySQL jest rozszerzeniem języka SQL, opracowanym w 2003 r. w Instytucie Informatyki, Politechniki Śląskiej w Gliwicach, pozwalającym na aproksymacyjne wyszukiwanie obiektów w bazach danych. Aproksymacyjny charakter wyszukiwania osiąga się poprzez wprowadzenie elementów teorii zbiorów rozmytych do klasycznej składni języka SQL, tym samym do umożliwienia konstruowania zapytań zawierających wyrażenia rozmyte [2], [22], [23], [24], [25], [26]. 3.1 Wyrażenia rozmyte we frazie WHERE instrukcji SELECT W niniejszym podrozdziale zostanie przedstawiona struktura zapytań zawierających wyrażenia rozmyte. W pytaniach rozmytych stosuje się elementy teorii zbiorów rozmytych, a funkcją charakterystyczną określającą, w jakim stopniu wiersz w bazie danych spełnia 203

B. Dziedzic, B. Małysiak, D. Mrozek kryteria wyszukiwania podane w pytaniu jest funkcja przynależności, która może przyjmować wartości z przedziału [0, 1]. Rozważmy proste zapytanie w języku SQL, o postaci [2]: SELECT A1,..., Ak FROM T WHERE W; gdzie W oznacza warunek filtrujący postaci: X jest A (gdzie X kolumna tablicy T bazy danych, A zadana wartość). Proces wyszukiwania wierszy spełniających warunek zadania można potraktować jak proces wnioskowania: dla każdego wiersza tablicy T, na podstawie porównania wartości kolumny X z zadaną wartością A, wnioskuje się o zaliczeniu wiersza do zbioru wynikowego lub nie. Ze względu na rodzaj wartości X i A warunki można podzielić na: klasyczne, gdzie X i A przyjmują wartości ostre (dokładne), X przyjmuje wartości ostre a A wartości rozmyte reprezentowane przez funkcje przynależności, X przyjmuje wartości rozmyte a A wartości ostre, X i A przyjmują wartości rozmyte (reprezentowane przez funkcje przynależności). Analiza każdego przypadku przebiega nieco inaczej, ale wynik ma zawsze taką samą ogólną postać: dla każdego wiersza (określającego wartość X) należy wyznaczyć stopień zgodności wartości X z wartością A (lub ogólniej stopień zgodności, z jakim wartość X spełnia zadany warunek). Wymienione przypadki dotyczą prostego warunku porównującego jedną wartość z drugą. Fraza WHERE w klasycznej instrukcji SQL może jednak zawierać wiele prostych warunków porównania połączonych ze sobą operatorami koniunkcji AND, dysjunkcji OR, warunki mogą być również poprzedzone operatorem negacji NOT. We frazie WHERE, zawierającej warunki rozmyte wartości koniunkcji lub dysjunkcji rozmytej mogą być obliczane na różne sposoby, najprostszym jest zastosowanie norm Zadeha (t-norma dla operacji koniunkcji polega na wyznaczeniu wartości minimalnej porównywanych stopni zgodności, s- norma dla operacji dysjunkcji polega na wyznaczeniu wartości maksymalnej). Natomiast, gdy warunek poprzedzony jest operatorem negacji NOT, wartość stopnia przynależności wyznaczana jest na przykład poprzez odjęcie od 1 początkowej wartości stopnia przynależności; można zastosować również inne metody. Analizując powyższe przypadki i zależności utworzono gramatykę definiującą w sposób formalny zapis warunku rozmytego. Ma ona następującą postać: <war_rozmyty_złożony> ::= <war_rozmyty_prosty> <war_rozmyty_złożony><funktor><war_rozmyty_prosty> <war_rozmyty_prosty> ::= <argument><operator_relacyjny><argument> <argument><operator_rozmyty><argument> <argument> ::= <wartość_dokładna> <wartość_rozmyta> <operator_relacyjny> ::= > < <= >= <> <operator_rozmyty> ::= jest mniej_wiecej <funktor> ::= AND OR AND NOT OR NOT... Należy zauważyć, że wprowadzenie do pytań SQL warunków rozmytych prowadzi w procesie interpretacji pytań do wyznaczenia stopnia zgodności wszystkich wyszukiwanych wierszy z kryterium pytania. Powstaje wtedy problem końcowego wyboru wierszy, które mają się znaleźć w odpowiedzi. Można tu wymienić kilka metod: wybranie wierszy o maksymalnym stopniu zgodności z warunkami pytania, wybranie wierszy o stopniu zgodności przekraczającym średni stopień, wybranie wierszy o stopniu zgodności przekraczającym pewną zadaną wartość progową. 204

Interpreter wyrażeń rozmytych stosowanych w składni języka SQL W procesie implementacji uwzględniono najbardziej ogólną metodę spośród przedstawionych powyżej, tzn. wybranie wierszy o stopniu zgodności przekraczającym pewną zadaną wartość progową. Szczegółowy opis powyższych zagadnień przedstawiony został w pracach [23], [24]. Formalny zapis rozszerzonej postaci rozmytego warunku filtrującego jest następujący:... //wykorzystano definicję złożonego warunku rozmytego przedstawioną wczesniej <war_rozszerzony> ::= (<war_rozmyty_złożony>)<war_progowy> <war_progowy> ::= <operator_rel><wartość_progowa> <operator_rel> ::= = < > <= >= <> <wartość_progowa> ::= liczba dziesiętna z przedziału <0, 1>... 3.2 Rozmyta agregacja i grupowanie danych Język SQL umożliwia również wyznaczanie wartości zagregowanych (np. suma, wartość średnia i inne). Wyliczenie wartości funkcji agregujących sum, average, min, max operujących na danych rozmytych wymaga znajomości arytmetyki liczb rozmytych, czyli operacji takich jak: dodawanie, wyznaczanie wartości najmniejszej czy największej liczb rozmytych. W języku FuzzySQL założono, że liczby rozmyte są typu L-R [9]. Zaimplementowane funkcje agregujące działające na rozmytych danych mają takie same nazwy jak klasyczne funkcje agregujące, różnią się natomiast typem argumentu i na tej podstawie uruchamiana jest odpowiednia funkcja agregująca wykonująca operacje na rozmytych lub klasycznych danych. Wartości rozmyte mogą występować również w zapisie warunków filtrujących we frazie HAVING, gdzie warunki filtrujące nakładane są na funkcje agregujące. W pytaniach rozmytych można wyróżnić kilka rodzajów agregacji danych [2], [27]: agregacja wartości ostrych, a nakładany warunek jest rozmyty, agregacja wartości rozmytych, a nakładany warunek jest ostry, agregacja wartości rozmytych i nakładany warunek jest rozmyty, rozmyte kwantyfikatory operujące na grupie wierszy. Proces wyznaczania stopnia zgodności z kryteriami warunku przebiega tak samo jak w przypadku warunku we frazie WHERE. Szczegółowy opis tych zagadnień został przedstawiony w pracach [2], [22], [23], [24]. Grupowanie realizowane jest w języku SQL za pomocą frazy: GROUP BY <lista kolumn> i prowadzi ono do wyróżnienia grup wierszy o identycznych wartościach we wskazanej liście kolumn. W przypadku, gdy rozważamy grupowanie danych w systemie, w którym możliwe jest przechowywanie danych rozmytych, rysuje się co najmniej kilka różnych podejść w zależności od potrzeb użytkownika i rodzaju przechowywanych danych [2], [28]. Już sam proces grupowania można podzielić na: grupowanie rozmyte dokładnych danych, grupowanie rozmytych danych, grupowanie rozmyte rozmytych danych. W klasycznym grupowaniu dokładnych danych nawet najmniejsza różnica wartości w kolumnie (kolumnach), według których następuje grupowanie, prowadzi do wyodrębnienia oddzielnych grup. Jeśli w rozmytej bazie danych wprowadzamy mechanizmy wyszukiwania danych podobnych, to naturalnym się staje oczekiwanie możliwości łączenia w grupy danych o podobnych wartościach. 205

B. Dziedzic, B. Małysiak, D. Mrozek Rozważając sytuację, gdy chce się przeprowadzić grupowanie rozmyte dokładnych danych i chce znaleźć podobne dane, by umieścić je w jednej grupie, w języku FuzzySQL zaimplementowano następujące algorytmy grupowania rozmytego: grupowanie względem wartości lingwistycznych (określonych dla dziedziny atrybutu), grupowanie według arbitralnego podziału dziedziny atrybutu, grupowanie rozmyte z zastosowaniem metody hierarchicznej, grupowanie rozmyte według autorskiego, zaimplementowanego algorytmu. Szczegółowy opis tych algorytmów znajduje się w pracach [2], [28], [29]. Analizując możliwości grupowania rozmytych danych (a ściślej grupowania według kolumn zawierających rozmyte dane) rozpatrzono najpierw podejście podobne do klasycznego grupowania ostrych (dokładnych) danych. Jako podstawę grupowania przyjęto opis rozmytych danych, zakładając, że wartości rozmyte są przedstawione w reprezentacji L-R. Najbardziej rygorystycznym rozwiązaniem jest uwzględnienie w grupowaniu wszystkich parametrów opisujących wartości rozmyte i włączanie takich wartości do jednej grupy tylko wtedy, gdy wszystkie ich parametry są takie same. Bardziej elastycznym podejściem jest grupowanie według wartości modalnych (tzn. wartości, dla których funkcja przynależności przyjmuje wartość 1). Należy tu rozróżnić dwa przypadki: grupowane są liczby rozmyte typu L-R: wszystkie liczby tej postaci o jednakowej wartości modalnej będą stanowiły grupę, grupowane są przedziały rozmyte typu L-R: wszystkie wartości rozmyte o jednakowym przedziale wartości modalnych będą stanowiły grupę. W systemie FuzzySQL zaimplementowano pierwszą z wyżej wymienionych metod. Innym podejściem do grupowania rozmytych danych może być wstępne ustalenie zbioru grup, a następnie kwalifikowanie rozpatrywanych danych do określonych grup. Jeśli przyjmiemy rozmyty opis takich grup, to otrzymamy analogię do metod rozmytego grupowania dokładnych danych. Powyższe problemy szczegółowo został opisany w pracach [2], [28]. 3.3 Wyrażenia rozmyte w zagnieżdżonych pytaniach SQL W poprzednich punktach tego rozdziału przeprowadzono analizę procesu interpretacji niezagnieżdżonych zapytań SQL-owych zawierających wartości rozmyte. W niniejszym punkcie przeprowadzono taką analizę dla pytań zagnieżdżonych [2], [30]. Wartości rozmyte w zapytaniach zagnieżdżonych mogą pojawić się w kilku miejscach: we wszystkich frazach podzapytania wewnętrznego, we wszystkich frazach podzapytania zewnętrznego, lub w warunku wiążącym podzapytanie zewnętrzne z wewnętrznym. W pytaniach zagnieżdżonych proces wyszukiwania wierszy spełniających rozmyte warunki filtrujące zarówno we frazie WHERE jak i we frazie HAVING jest realizowany podobnie jak w pytaniach niezagnieżdżonych. Są jednak pewne różnice: pytania zagnieżdżone przyjmują często bardzo skomplikowaną formę, pojawia się także problem z ulokowaniem warunku na stopień zgodności w przypadku rozmytego warunku wiążącego dwa podzapytania. Z tych powodów celowe jest szczegółowe rozpatrzenie możliwości umiejscowienia wartości rozmytych w pytaniach zagnieżdżonych. Ze względu na występowanie wartości rozmytych w warunkach wiążących pytań zagnieżdżonych, wyodrębniono następujący podział: 206

Interpreter wyrażeń rozmytych stosowanych w składni języka SQL porównanie wartości dokładnej podzapytania zewnętrznego z wartością rozmytą (lub zbiorem takich wartości) zwracaną w wyniku wykonania pytania wewnętrznego, porównanie wartości rozmytej podzapytania zewnętrznego z wartością dokładną (lub zbiorem takich wartości) zwracaną w wyniku wykonania pytania wewnętrznego, porównanie wartości rozmytej podzapytania zewnętrznego z wartością rozmytą (lub zbiorem takich wartości) zwracaną w wyniku wykonania pytania wewnętrznego, umiejscowienie wartości rozmytych w warunku korelacji wiążącym skorelowane pytania zagnieżdżone. Istotnym problemem jest sposób zapisu wartości progowej w warunku dotyczącym stopnia zgodności dla rozmytego warunku wiążącego dwa podzapytania [2], [30]. Formalny zapis warunku wiążącego dwa podzapytania, jest zdefiniowany następująco:... <forma_operatorowa_w_w> ::= <wyrażenie_rozmyte_rozsz><op>(<pytanie_wewn>) <wyrażenie_pyt_zewn><op_r>(<pytanie_wewn>)<warunek_progowy> <wyrażenie_pyt_zewn><op>(<pytanie_wewn_rozsz_r>) <pytanie_wewn_rozsz_r> ::= SELECT <wyrażenie><op_rozsz><wartość_progowa><kolejne_frazy_pytania_wewn> <wyrażenie_rozmyta_rozsz> ::= <wartość_rozmyta><op_rozsz><wartość_progowa> <op_rozsz> ::= *= *> *>= *< *<= *<> <op> ::= <op_rel> <op_rel><op_zb> IN NOT IN <op_r> ::= jest mniej wiecej <warunek_progowy> ::= <op_rel><wartość_progowa> <op_rel> ::= = < > <= >= <> <wartość_progowa> ::= <liczba dziesiętna z przedziału [0, 1]> <operator_zb> ::= ANY ALL... gdzie: <wyrażenie_pyt_zewn> oznacza wyrażenie występujące jako lewa strona warunku filtrującego w pytaniu zewnętrznym. Zazwyczaj będzie to nazwa kolumny, <pytanie_wewn> oznacza zapis pytania wewnętrznego. Szczegółowe rozwiązania zaimplementowane w języku FuzzySQL przedstawione zostały w pracach [2], [30]. 4 Architektura systemu FuzzyQ System FuzzyQ umożliwia budowę zapytań w języku FuzzySQL, przesłanie ich do serwera bazy danych i interpretację wyników. Ogólną architekturę systemu przedstawiono na rys. 1. W budowie systemu FuzzyQ [1] można wyodrębnić dwa moduły. Pierwszy moduł stanowi Analizator Zapytań, który realizuje następujące funkcje: komunikację z bazą danych, przesyłanie zapytań w języku SQL/FuzzySQL do bazy danych, odbiór odpowiedzi wynikowej na zadane zapytanie, prezentację danych odpowiedzi wynikowej, zapis wyników do pliku, współpracę z kreatorem zapytań. Moduł Analizatora Zapytań został zaimplementowany w środowisku Visual Studio.NET w języku C#. 207

B. Dziedzic, B. Małysiak, D. Mrozek Drugi moduł stanowi Kreator zapytań FuzzySQL, którego podstawowym celem jest pomoc użytkownikowi w budowie zapytania rozmytego oraz takie oddziaływanie na jego pamięć, by w krótkim czasie potrafił samodzielnie wskazać miejsca występowania elementów rozmytych w prostych i złożonych pytaniach SQL oraz potrafił sam takie zapytanie skonstruować. Moduł ten realizuje typową funkcję dydaktyczną. Został on zaimplementowany w środowisku Macromedia Flash MX, pozwalającym na programowanie w języku Flash. Rys. 1. Architektura systemu FuzzyQ Kreator zapytań współpracuje z Analizatorem zapytań, by użytkownik mógł na bieżąco sprawdzać działanie poszczególnych zapytań. Zapytanie zbudowane za pomocą kreatora jest jedynie szkieletem prezentuje postać ogólną zapytania. Zbudowane zapytanie w języku FuzzySQL [2] zostaje w momencie zakończenia budowy przekazane do modułu Analizatora zapytań. Przed wysłaniem zapytania do bazy danych niezbędna jest ingerencja użytkownika, który dostosuje ogólną postać zapytania do postaci zapytania, które chce zrealizować lub zbuduje je samodzielnie po zapoznaniu się ze schematem tworzenia zapytań w kreatorze. Po wykonaniu zapytania użytkownikowi prezentowana jest odpowiedź wynikowa lub komunikat o błędzie. 5 System FuzzyQ Jak wspomniano w poprzednich podrozdziałach System FuzzyQ jest narzędziem dydaktycznym, służącym do nauki analizowania i konstruowania zapytań w języku FuzzySQL. W skład systemu wchodzą trzy obiekty: okno główne aplikacji FuzzyQ, okno parametrów połączenia, kreator zapytań. Po uruchomieniu systemu na pierwszym planie pojawia się okno główne programu. Korzystając z paska narzędzi lub menu okna, można uzyskać dostęp do pozostałych obiektów. Wszystkie trzy okna wraz z zaznaczeniem ikon, które je uruchamiają, przedstawiono na rys. 2. 208

Interpreter wyrażeń rozmytych stosowanych w składni języka SQL Rys. 2. Widok wszystkich formularzy z zaznaczeniem miejsc wywołania z okna głównego 5.1 Kreator zapytań Kreator zapytań jest dydaktyczną częścią całego systemu. Za jego pomocą użytkownik uczy się, jak budować zapytania w języku SQL z zastosowaniem warunków rozmytych. Głównym zadaniem kreatora jest wskazanie możliwych miejsc występowania wartości rozmytych w instrukcji SELECT języka SQL. Kreator zapytań jest uruchamiany z poziomu okna głównego. Moduł kreatora został napisany w języku programowania Flash z wykorzystaniem języka Action Script 2.0. Jest to interaktywny film, czyli taki, w którym główną role odgrywa użytkownik. To bezpośrednio od decyzji użytkownika zależy, w jaki sposób będzie się rozwijać budowa zapytania. Budowany szkielet zapytania jest widoczny na każdym etapie projektowania (rys. 3), w polu Przykład system startuje od frazy SELECT. Następnie użytkownik podejmuje decyzję, czy element rozmyty ma wystąpić po danym słowie kluczowym, czy nie. Podjęcie decyzji jest równoznaczne z naciśnięciem odpowiedniego przycisku. Wybór składa się najczęściej z dwóch przycisków FUZZY oraz NORMAL. Wybranie jednego z nich powoduje przejście do kolejnej frazy instrukcji SELECT. Jednocześnie druga z możliwości, która nie została wybrana, zostaje usunięta. Jeżeli po frazie nie może wystąpić element rozmyty, użytkownik będzie widział tylko jeden przycisk. Taki przypadek występuje po frazie FROM. Pojawia się również dodatkowa opcja wyboru. Jest nią zielony przycisk END. Wybranie go powoduje zakończenie budowy zapytania. Przycisk END występuje wszędzie tam, gdzie zakończenie zapytania jest możliwe. Naciśnięcie przycisku END powoduje wysłanie do aplikacji głównej zapytania utworzonego w polu Przykład. Po wybraniu frazy ORDER BY nie może wystąpić już żadna inna fraza, więc jedyną dostępną dla użytkownika opcją jest END. Po frazach WHERE oraz HAVING może wystąpić podzapytanie jako jedna ze stron równania/nierówności. Użytkownik decyduje czy chce utworzyć zapytanie złożone wybierając jedną z opcji: YES lub NO. Na rys.3 przedstawiono szkielet zapytania, w którym wyrażenia rozmyte występują we frazach SELECT, WHERE i HAVING. 209

B. Dziedzic, B. Małysiak, D. Mrozek Rys. 3. Szkielet zapytania, w którym wyrażenia rozmyte występują we frazach SELECT, WHERE i HAVING 5.2 Przykładowe zapytania W bieżącym podrozdziale przedstawiono przykładowe pytania w języku FuzzySQL, zeralizowane w systemie FuzzyQ, zawierające wyrażenia rozmyte kierowane do bazy danych o nazwie ZAWODNICY zawierającej dane o sekcji łucznictwa sportowego (rys. 4). Rys. 4. Schemat bazy danych ZAWODNICY 210

Interpreter wyrażeń rozmytych stosowanych w składni języka SQL Zgodnie ze schematem przedstawionym na rys. 4 tabela: osoby przechowuje informacje dotyczące zawodników i trenerów, treningi zawiera informacje o treningach, warunki zawiera informacje o warunkach pogodowych, jakie były na treningu: temperaturze, wietrze, widoczności. Dane te zawierają wartości rozmyte. obecności zawiera informacje o obecnościach trenerów i zawodników na treningach, a także ich dyspozycyjności fizycznej i psychicznej (kolumny: sennosc, zmeczenie, stres, zlosc), kolumny te zawierają wartości rozmyte, serie przechowuje wyniki serii strzałów zawodników obecnych na treningach. Założono, że na jednym treningu zawodnik może wykonać 10 serii. strzały zawiera informacje o strzałach oddanych w ramach serii. Założono, że zawodnicy w ramach jednej serii oddają 5 strzałów, punktowanych od 0 do 10. Kolumny typu rozmytego mogą być potraktowane również jako zmienne lingwistyczne [7], [9], [10], dla których można zdefiniować wartości lingwistyczne [9]. Przykładowe zmienne lingwistyczne dla bazy danych ZAWODNICY oraz zdefiniowane dla nich wartości lingwistyczne przedstawione zostały w pracy [2]. Dodatkowo zaimplementowano także funkcje konwersji wartości typu ftrapezium do typu alfanumerycznego. Nazwy przykładowych zmiennych lingwistycznych oraz odpowiednich funkcji konwerssji przedstawiono w tabeli 1. Tabela 1. Przykładowe zmienne lingwistyczne i odpowiadające im funkcje konwersji zmienna wiatr temperatura widocznosc sennosc zmeczenie stres zlosc wzrost_kobiety wzrost_ mezczyzny wzrost_czlowieka waga_kobiety waga_mezczyzny waga_czlowieka funkcja konwersji wiatr_to_str(ftrapezium) temperatura_to_str(ftrapezium) widocznosc_to_str(ftrapezium) sennosc_to_str(ftrapezium) zmeczenie_to_str(ftrapezium) stress_to_str(ftrapezium) zlosc_to_str(ftrapezium) wzrost_kobiety_to_str(ftrapezium) wzrost_mezczyzny_to_str(ftrapezium) wzrost_czlowieka_to_str(ftrapezium) waga_kobiety_to_str(ftrapezium) waga_mezczyzny_to_str(ftrapezium) waga_czlowieka_to_str(ftrapezium) Przykład 1. Do bazy danych ZAWODNICY kierowane jest pytanie o następującej treści: Wyszukaj daty treningów wraz z liczbą zawodników, którzy przystępując do treningu byli wyspani lub wypoczęci, zaś w czasie treningów nie denerwowali się (nie odczuwali stresu). W odpowiedzi powinny znaleźć się wszystkie wiersze spełniające kryteria pytania ze stopniem zgodności większym niż 0.5. Na rys. 5 zaprezentowano postać zapytania w języku FuzzySQL oraz odpowiedź wynikową na zrealizowane zapytanie. 211

B. Dziedzic, B. Małysiak, D. Mrozek Rys. 5. Postać zapytania dla przykładu 1 Przykład 2. Do bazy danych ZAWODNICY kierowane jest kolejne pytanie o następującej treści: Wyszukaj warunki pogodowe panujące w czasie tych treningów, w trakcie których prawie wszyscy zawodnicy byli wyspani (stopień zgodności z warunkiem rozmytym wyspany powinien być nie mniejszy niż 0.8, a własność prawie wszystkie winna być spełniona ze stopniem zgodności nie mniejszym niż 0.7). W przedstawionym pytaniu elementy rozmyte występują we frazie WHERE i we frazie HAVING. W pytaniu tym występuje także rozmyty kwantyfikator (prawie wszyscy) oraz funkcje lingwistyczne (maly_stres(), wyspany()), jak również funkcja konwertująca we frazie GROUP BY. Postać zapytania w języku FuzzySQL oraz wygenerowaną za pomocą FuzzyQ odpowiedź wynikową na zrealizowane zapytanie przedstawiono na rys. 6. Przykład 3. Treść następnego pytania kierowanego do bazy danych ZAWODNICY jest następująca: Określ wpływ zmęczenia zawodników na celność ich strzałów. (Wyznacz średnią liczbę punktów uzyskaną dla poszczególnych stanów zmęczenia). W przedstawionym przykładzie elementy rozmyte występują nie wprost, bowiem ukryte są w funkcjach konwertujących. Mechanizm funkcji konwertujących pozwala na zadawanie zapytań w sposób naturalny stosując lingwistyczne a nie numeryczne nazewnictwo, także otrzymywane odpowiedzi są konwertowane do formy lingwistycznej. Na rys. 7 przedstawiono implementację przedstawianego pytania w języku FuzzySQL wraz z rezultatem wykonania pytania. 212

Interpreter wyrażeń rozmytych stosowanych w składni języka SQL Rys. 6. Postać zapytania dla przykładu 2 Rys. 7. Postać zapytania dla przykładu 3 Przykład 4. Kolejny przykład kierowany do bazy danych ZAWODNICY, wymaga skonstruowania zapytania zagnieżdżonego, a jego treść jest następująca: 213

B. Dziedzic, B. Małysiak, D. Mrozek Wyszukaj wyniki i cechy psychomotoryczne (senność, zmęczenie, stres) uczestników treningów, w czasie których wiatr był taki, jak wiatr na najmniej udanym treningu. Na rys. 8 przedstawiono zapis zapytania zagnieżdżonego w języku FuzzySQL. Należy zauważyć, że pytanie zewnętrzne z pytaniem wewnętrznym zostały połączone klasycznym operatorem równości, gdyż w tym rozwiązaniu zastosowano funkcję konwersji wartości rozmytej wiatr. Gdyby nie można było zastosować takiej funkcji, należałoby te podzapytania połączyć rozmytym operatorem mniej więcej równe, który w języku FuzzySQL ma postać ~=. Dla zwiększenia czytelności odpowiedzi wynikowej, kolumny rozmyte występujące we frazie SELECT poddano również konwersji do postaci lingwistycznej. Rys. 8. Postać zapytania dla przykładu 4 5.3 Wymagania sprzętowe i programowe System FuzzyQ działa na platformie systemowej Windows można go zainstalować zarówno w systemie Windows 98, jak i w systemach z rodziny NT (Windows 2000, Windows XP) [1]. Ze względu na to, że aplikacja została utworzona w technologii.net, do jej poprawnego działania wymagane jest zainstalowanie w systemie operacyjnym.net Framework w wersji 1.1. Instalator systemu FuzzyQ wykrywa jego nieobecność i proponuje przed zainstalowaniem systemu instalację środowiska.net. W systemie Windows wymagany jest również zainstalowany moduł Microsoft Data Access Component (MDAC) w wersji co najmniej 2.6. MDAC jest instalowany razem z wieloma popularnymi programami firmy Microsoft np. z pakietem Office. Można zainstalować go ręcznie pobierając odpowiednią wersję ze strony firmy Microsoft. System Windows XP posiada wersję 2.7 komponentu i instalacja MDAC jest zbędna do uruchomienia systemu FuzzyQ na tej platformie. Moduł kreatora zapytań został napisany w technologii Flash, a więc do poprawnego działania aplikacji niezbędny jest Macromedia FlashPlayer w wersji 7.0. Jest on darmowy i można go pobrać z witryny WWW firmy Macromedia. Aby w pełni wykorzystać możliwości systemu FuzzyQ, należy posiadać dostęp do bazy danych z zaimplementowany- 214

Interpreter wyrażeń rozmytych stosowanych w składni języka SQL mi funkcjami i operatorami rozmytymi. Aby było możliwe połączenie aplikacji FuzzyQ z bazą danych, w systemie musi być zainstalowany sterownik ODBC dla bazy danych. W przypadku, gdy baza danych istnieje na odległym serwerze, wymagany jest również dostęp do sieci. Do zainstalowania programu wymagane jest około 3MB przestrzeni dyskowej na sam program FuzzyQ oraz 37-40MB (w zależności od wersji językowej) na zainstalowanie.net Framework 1.1. Zalecane wymagania sprzętowe to komputer klasy Pentium ~800Mhz i 128MB RAM. 6 Podsumowanie W rozdziale przedstawiono rozszerzony język SQL, nazwany FuzzySQL, zrealizowany na w Instytucie Informatyki Politechniki Śląskiej oraz system dydaktyczny FuzzyQ pozwalający na naukę pytań konstruowanych w języku FuzzySQL. Główną uwagę w pracy zwrócono na wykorzystanie teorii zbiorów rozmytych w wyszukiwaniu informacji w bazach danych, a szczególnie na zastosowanie elementów teorii zbiorów rozmytych w zapytaniach języka SQL. W podrozdziale 2 przedstawiono istniejące rozwiązania w zakresie nauczania i konstruowania rozmytych zapytań. Podrozdział 3 otwiera analiza istoty wnioskowania rozmytego w procesie interpretacji warunków filtrujących w zapytaniach formułowanych w języku SQL. Następnie przedstawiono propozycje sposobu wprowadzenia do zapisu pytań SQL warunku na stopień zgodności wiersza z kryteriami zapytania. Kolejne rozważane zagadnienia to analiza możliwości i propozycje zastosowania nowych metod rozmytego grupowania danych, kwantyfikatory rozmyte oraz interpretacja rozmytych zapytań zagnieżdżonych. W podrozdziale 4 zaprezentowano architekturę dydaktycznego systemu FuzzyQ. Podrozdział 5 poświęcono przedstawieniu budowy i działania sytemu FuzzyQ, ze szczegółowym uwzględnieniem działania Kreatora Zapytań oraz części analizującej zapytania w języku FuzzySQL. W końcowej części tego podrozdziału przedstawiono zestaw kilku złożonych zadań rozmytego wyszukiwania danych i zaprezentowano zapis rozmytych pytań w języku FuzzySQL oraz ich realizację w systemie FuzzyQ wraz z ilustracją otrzymanych wyników. Przedstawiony w pracy język FuzzySQL pozwala na tworzenie rozmytych baz danych (przechowujących dane typów rozmytych), wyszukiwanie rozmytej informacji, jak również formułowanie rozmytych zapytań odnoszących się do klasycznych (nierozmytych) typów danych, a zrealizowany system FuzzyQ umożliwia naukę oraz interpretację zapytań skonstruowanych w języku FuzzySQL. Zaprezentowane systemy są dość uniwersalnymi narzędziami, które można nadal rozwijać wzbogacając je o nowe elementy. Literatura 1. Dziedzic B..: Występowanie elementow rozmytych w prostych i złożonych pytaniach SQL, Praca dyplomowa magisterska pod kierunkiem B. Małysiak, Politechnika Śląska, Instytut Informatyki, Gliwice 2005. 2. Małysiak B.: Metody aproksymacyjnego wyszukiwania obiektów w bazach danych, Rozprawa doktorska, Politechnika Śląska, Instytut Informatyki, Gliwice 2003. 3. Gustafson J.: Wellesley Software Team: SQL Język Relacyjnych Baz Danych. Wydawnictwa Naukowo-Techniczne, Warszawa 1995. 215

B. Dziedzic, B. Małysiak, D. Mrozek 4. Ullman J. D., Widom Z.: Podstawowy wykład z systemów baz danych. Wydawnictwa Naukowo- Techniczne. Warszawa 2000. 5. Elmasri R., Navathe S. B.: Fundamentals of Database Sytems. Addison-Wesley Publishing Company, World Student Series. 2000. 6. Zadeh L. A.: Fuzzy sets, Information and Control 8, 338-353, 1965. 7. Czogała E., Pedrycz W.: Elementy i metody teorii zbiorów rozmytych. Wydawnictwa Naukowo- Techniczne. Warszawa 1985. 8. Łachwa A.: Rozmyty świat zbiorów, liczb, relacji, faktów, reguł i decyzji. Akademicka Oficyna Wydawnicza Exit, Warszawa 2001. 9. Yager R, Filev D.: Podstawy modelowania i sterowania rozmytego. Wydawnictwa Naukowo Techniczne, Wiley. Warszawa 1995. 10. Piegat A.: Modelowanie i sterowanie rozmyte. Akademicka Oficyna Wydawnicza Exit, Warszawa 1999. 11. Strona internetowa http://fuzzy.sonalysts.com, 2000. 12. Kacprzyk J., Zadrożny S.: Computing with words in intelligent database quering: standalone and Internet-based applications. 1997. 13. Kacprzyk J., Ziółkowski A.: Database Queries with Fuzzy Linguistic Quantifiers. IEEE Transactions of Systems, Man, and Cybernetics. Vol. SMC-16, Nr 3, maj/czerwiec 1986. 14. Kacprzyk J., Zadrożny S.: On summarization of large data sets via a fuzzy logic-based querying add-on to Microsoft Access. Intelligent Information Systems VII. Proceedings of the Workshop. Malbork czerwiec 1998. 15. Kacprzyk J., Zadrożny S. :FQUERY for Access: Towards human consistent querying user interface. ACM 0-89791-820-7, 1996. 16. Bosc P., Pivert O.: SQLf: A Relational Database Language for Fuzzy Querying. IEEE Transactions on Fuzzy Systems. Vol. 3, Nr 1, luty 1995. 17. Kacprzyk J., Szmidt E.: Intiutionistic Fuzzy Sets in Some Medical Applications. Springer-Verlag Berlin Heidelberg, 2001. 18. Kacprzyk J., Szmidt E.: Intiutionistic Fuzzy Sets in Intelligent Data Analysis for Medical Diagnosis. Springer-Verlag Berlin Heidelberg, 2001. 19. Bosc P., Pivert O.: Fuzzy queries and Relational Databases Proceedings of the 1994 ACM Symposium on Applied Computing, March 6-8, 1994, Phoenix, AZ, USA. ACM 1994. 170-174. 20. Bosc P., Lietard L., Pivert O.: Quantified Statements in a flexible relational query language. Proceedings of the 1995 ACM symposium on Applied computing, February 26-28, 1995, Nashville, TN, USA. ACM 1995. p.488-492. 21. Bosc P., Dubois D., Prade H. Fuzzy Functional Dependencies An Overview And A Critical Discussion Flexible Query-Answering Systems. 1994. 22. Małysiak B.: Wartości rozmyte w pytaniach sql do baz danych. Studia Informatica, Vol. 24, nr 2A (53), Gliwice 2004. 23. Małysiak B.: Interpretacja rozmytych warunków filtrujących w zapytaniach SQL. Studia Informatica, Vol.25, nr 2(58), Gliwice 2004. 24. Małysiak B.: Uzupełnianie zapytań SQL o stopień zgodności kryterium wyboru. Studia Informatica, Vol.25, nr 2(58), Gliwice 2004. 25. Rasmussen D., Yager R.: Summary SQL A Fuzzy Tool For Data Mining. Intelligent Data Analysis 1. 1997. 26. Yu C.T., Meng W.: Principles of Database Query Processing for Advanced Applications. Morgan Kaufmann Publishers, Inc., 1998. 27. Małysiak, B., Mrozek, D., Rozmyta agregacja danych w pytaniach SQL, w monografii Bazy danych: Modele, Technologie, Narzędzia. Tom 2 Analiza danych i wybrane zastosowania. Wydawnictwa Komunikacji i Łączności, Warszawa, 2005, pp. 77-84. 28. Małysiak B.: Rozmyte grupowanie danych w pytaniach SQL.WNT, SCR 2004, Warszawa 2004. 29. Małysiak, B., Mrozek, D., Kozielski, S., Processing Fuzzy SQL Queries with Flat, Context- Dependent and Multidimensional Membership Functions, Proc. of 4th IASTED International Conference on Computational Intelligence, Calgary, Canada. ACTA Press, 2005, pp. 36-41. 30. Małysiak B.: Wartości rozmyte w zagnieżdżonych pytaniach SQL. Studia Informatica, Vol.25, nr 2(58), Gliwice 2004. 216