• Nie Znaleziono Wyników

Transformacja zapytań rozmytych do bazy danych na zapytania w standardzie SQL

N/A
N/A
Protected

Academic year: 2021

Share "Transformacja zapytań rozmytych do bazy danych na zapytania w standardzie SQL"

Copied!
8
0
0

Pełen tekst

(1)

MAGDALENA LIPISKA

Zakład Systemów Informatycznych Zarzdzania Wydział Informatyki Politechniki Szczeciskiej

Streszczenie

W artykule zaprezentowane są róĪne formy zapytaĔ rozmytych do baz danych. Szczegółowa analiza tych zapytaĔ stanowi klucz do ich zamiany na zapytania w standardzie SQL. Metoda tej transformacji to podstawowy mechanizm rozmytego jĊzyka zapytaĔ.

1. Wstp

O wartoci współczesnych baz danych stanowi ich gotowo informacyjna, która weryfikowana jest przede wszystkich w trakcie formułowania zapytania i otrzymywania odpowiedzi. Poniewa ludzie myl i opisuj rzeczywisto w kategoriach informacji rozmytych („obroty handlowca duo spadły”, „handlowiec mało sprzedaje” itp.), jzyk zapyta jako podstawowy mechanizm komunikacji w nowoczesnych systemach baz danych musi uwzgldnia zapis subiektywnych sdów, wzgldnych wypowiedzi, rejestracji danych obarczonych pewnymi błdami pomiarowymi itp. Jedn z moliwoci podniesienia jakoci jzyków zapyta jest zatem zastosowanie logiki rozmytej zaproponowanej przez L.A. Zadeha [2]. Wiksza uyteczno rozmytych jzyków zapyta wynika m.in. z faktu, e informacje nieprecyzyjne s dla niektórych systemów jedynymi dostpnymi informacjami, a wystpujce ewentualnie informacje precyzyjne mog by obarczone pewnym błdem pomiarowym [6].

Celem artykułu jest prezentacja transformacji rónych form zapyta rozmytych do zapyta w standardzie SQL. Metoda ta stanowi podstawowy mechanizm rozmytego jzyka zapyta.

2. Zapytania rozmyte

W przypadku rozmytych jzyków zapyta nieostro ma charakter temporalny i powstaje w czasie formułowania zapytania. Zapytanie do bazy danych jest nieprecyzyjne (rozmyte) jeli zawiera przynajmniej jeden z poniszych elementów:

• wartoci rozmyte;

• operatory arytmetyczne rozmyte; • kwantyfikatory rozmyte.

Zapytanie rozmyte moemy zatem przedstawi w nastpujcej formie: SELECT A1 ,A2 ...

FROM T1 ,T2 ... WHERE P1 XOK OL P2.... gdzie:

(2)

T - tabela

P - predykat prosty

OL - operator logiczny (AND, OR)

XOK - współczynnik operatora kompensacyjnego (waga, próg reakcji) Natomiast predykat prosty moemy zdefiniowa nastpujco:

P = XK KA XO O XW W gdzie:

XK – warto podobiestwa dla kwantyfikatora K

K- kwantyfikator twardy (istnieje, wszyscy, aden) lub rozmyty (prawie wszyscy, prawie aden)

XO – warto podobiestwa dla operatora arytmetycznego O

O – operator arytmetyczny twardy (=, !=, <, >, =>, =<) lub rozmyty (prawie =, prawie !=, prawie <, prawie >)

XW– warto wg rozkładu moliwoci/podobiestw dla warunku W – konkretna warto lub zmienna lingwistyczna.

T a b e l a 1 Tablica ODDZIAŁ rejestrujca odziały firmy

Nr_od Oddział Pozostałe dane

001 Warszawa ...

002 Szczecin ...

003 Katowice ...

T a b e l a 2 Tablica HANDLOWCY rejestrujca dane zatrudnionych w działach handlowych

pracowników

Nr_h Nazwisko Imi Płe Pozostałe dane Nr_od

001 Jurgiewicz Robert M ... 001 002 Runiewicz Jan M ... 003 003 Zalewski Sławomir M ... 001 004 Kulczycka Joanna K ... 003 005 Biekowski Wojciech M ... 002 006 Matczak Regina K ... 003 007 Rapcewicz Rafał M ... 002 008 Stanisławski Jan M ... 001 009 Kowalski Piotr M ... 001 010 Jasiski Krzysztof M ... 003 011 Tomczak Edmund M ... 002 012 Wójtowicz Adam M ... 002

(3)

T a b e l a 3 Tablica OBROTY rejestrujca obroty i ich spadek w porównaniu z poprzednim okresem

Nr_h Obroty[zł] Spadek [%] 001 10340,00 1 002 4500,00 3 003 2870,00 12 004 5540,00 5 005 9070,00 2 006 3000,00 10 007 6600,00 7 008 2540,00 3 009 9100,00 1 010 1500,00 8 011 2250,00 9 012 3710,00 6

Dla zilustrowania problemu rozwaymy zapytania do przykładowej bazy danych pewnej firmy handlowej, która ma trzy oddziały w Polsce i zatrudnia łcznie 12 handlowców (tab.1,2,3). Podstawowym kryterium oceny pracowników działów handlowych jest poziom ich obrotów oraz jego zmiany w czasie.

2.1. Nieprecyzyjne (rozmyte) wartoci

Warto stanowi podstawowy składnik predykatu i w zapytaniu rozmytym moe by zapisana jako konkretna liczba, tekst czy data albo w postaci zmiennej lingwistycznej. Dla atrybutów zapisanych w formacie liczbowym, jakim jest np. poziom obrotów, taka zmienna moe przyjmowa róne wartoci w zalenoci od wysokoci obrotów, co przedstawia tab. 4.

W przykładowej bazie danych zamiast szuka handlowców o konkretnym poziomie obrotów szukamy handlowców, których poziom obrotów był bardzo słaby. W miejscu wartoci liczbowej pojawia si zmienna lingwistyczna „bardzo słaby”.

Jeeli w rozwaanym zapytaniu przyjmiemy warto wg rozkładu moliwoci na poziomie 0,6 (XW=0,6) to zapytanie rozmyte bdzie miało nastpujc posta :

SELECT A.IMIE, A.NAZWISKO FROM HANDLOWCY A, OBROTY B

WHERE A.NR_H=B.NR_H AND B.OBROTY = 0.6 „BARDZO SŁABY”

Wanym zadaniem w realizacji zapytania jest rozumienie poj, zmiennych lingwistycznych (w tym przypadku „bardzo słaby”) w kategoriach liczbowych i zapamitywanie ich w bazie danych. Niestety proces rejestrowania rozmytych informacji w tradycyjnej bazie danych cile wie si z ich defuzyfikacj (wyostrzaniem) (tab.4).

Jednym z rozwiza, które pozwala na otrzymanie dobrych wyników działania jzyka zapyta, jest okrelenie dla przyjtych wskaników funkcji przynalenoci [6] do zbioru. W tym przykładzie naley zdefiniowa funkcj przynalenoci obrotów do rozmytego zbioru obrotów o

(4)

bardzo słabym poziomie i obliczy wartoci dla poszczególnych poziomów obrotów. Wiemy, e wszystkie obroty równe i mniejsze od 2000,00 zł traktujemy jako złe lub krytyczne, a równe i wiksze od 4000,00zł s obrotami lepszymi od bardzo słabych, zatem F1 - funkcja okrelajca stopie przynalenoci obrotów do zbioru obrotów O o "bardzo słabym" poziomie przyjmuje dla nich warto 0 (F1 = 0 dla O < =2000 i O>=4000). W kategoriach bardzo słabego poziomu na pewno rozpatrujemy obroty na poziomie 3000,00zł zatem dla takich obrotów funkcja przyjmie warto 1 (F1 = 1 dla O =3000). Obroty z przedziału pomidzy 2000,00 zł a 3000,00zł wraz ze wzrostem wartoci w coraz wikszym stopniu przynale do rozpatrywanego zbioru rozmytego, co mona zdefiniowa nastpujco: F1 = (O-2000)/1000 dla 2000 < O <3000. Natomiast obroty z przedziału 3000,00zł a 4000,00zł wraz ze wzrostem wartoci w coraz mniejszym stopniu przynale do zbioru O (F1 = (4000– O)/1000 dla 3000 < O <4000) (tab.5).

T a b e l a 4 Rejestracja rozmytych informacji w tradycyjnej bazie danych

Zmienna linwistyczna Obroty [zł]

Krytyczny 1000,00 Zły 2000,00 Bardzo słaby 3000,00 Słaby 4000,00 Dostateczny 5000,00 Przecitny 6000,00 Dobry 7000,00 Bardzo dobry 8000,00 Wyróniajcy 9000,00 Znakomity 10000,00 T a b e l a 5 Funkcja przynalenoci O [tys. zł] do zbioru rozmytego obrotów o bardzo słabym poziomie

(opracowanie własne na podst. [6])

O 2,1 2,2 2,3 2,4 2,5 2,6 2,7 2,8 2,9 3,0 3,1 3,2 3,3 3,4 3,5 3,6 3,7 3,8 3,9 F1 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1,0 0,9 0,8 0,7 0,6 0,5 0,4 0,3 0,2 0,1 Korzystajc z relacji łczcej podobiestwa stanów jakociowych ze stopniami przynalenoci i rozkładu moliwoci dokonujemy transformacji zapytania rozmytego do postaci tzw. twardej czyli w standardzie SQL:

SELECT A.IMIE, A.NAZWISKO FROM HANDLOWCY A, OBROTY B

WHERE A.NR_H=B.NR_H AND B.OBROTY <3400,00 AND B.OBROTY >2600,00

W zalenoci od rozkładu funkcji przynalenoci zwizanej z subiektywn ocen wartoci atrybutu moemy otrzyma w wyniku działania rozmytego jzyka zapyta róne odpowiedzi. Jest to bardzo naturalne, gdy kady z uytkowników stwierdzajc, e poziom obrotów jest bardzo

(5)

słaby moe mie na uwadze inne wysokoci obrotów. Dodatkowo ten sam uytkownik moe zmieni swoje preferencje w czasie.

2.2. Nieprecyzyjne (rozmyte) operatory arytmetyczne

Problem dotyczy zastpienia w predykacie zapytania rozmytego klasycznych operatorów arytmetycznych odpowiednimi, tzn., nieostrymi operatorami takimi jak: prawie =, prawie !=, prawie <, prawie >.

W powyszym przykładzie moemy szuka handlowców, których obroty spadły tak samo jak

obroty Kowalskiego albo interesuj nas tylko ci handlowcy, których obroty spadły prawie tak samo jak obroty Kowalskiego.

W tym przypadku przy obranym współczynniku 0.8 (XO=0,8) zapytanie rozmyte miałoby posta:

SELECT A.IMIE, A.NAZWISKO FROM HANDLOWCY A, OBROTY B WHERE A.NR_H=B.NR_H AND B.SPADEK 0.8 =

(SELECT C.SPADEK

FROM OBROTY C, HANDLOWCY D

WHERE C.NR_H=D.NR_H AND D.NAZWISKO = ”KOWALSKI”))

W przypadku transformacji zapyta z rozmytymi operatorami arytmetycznymi jednym z podstawowych działa jest budowa tablicy podobiestw, która okrela nam warto funkcji przynalenoci, w tym przypadku procentowego spadku obrotów, wzgldem siebie. Relacja podobiestwa P na dziedzinie D jest relacj rozmyt, która przypisuje kadej parze wartoci dziedziny D warto z przedziału [0,1] czyli P:D×D-> [0,1]. W tabeli 6 wida wyranie podstawowe własnoci tej relacji takie jak zwrotno (P(x,x)=1) czy symetryczno (P(x,y) = P(y,x)).

Korzystajc z tabeli podobiestw okrelamy warto spadku obrotów, która przy 1% spadku Kowalskiego i wartoci funkcji przynalenoci 0.8 wynosi 5% i mniej. Formułujemy zapytanie twarde:

SELECT A.IMIE, A.NAZWISKO FROM HANDLOWCY A, OBROTY B WHERE A.NR_H=B.NR_H AND B.SPADEK =<5

T a b e l a 6 Tabela podobiestw spadków obrotów (opracowanie własne)

Spadek obrotów [%] 1 2 3 5 6 7 8 10 12 1 1.0 0.95 0.9 0.8 0.75 0.7 0.65 0.55 0.45 2 0.95 1.0 0.95 0.85 0.8 0.75 0.7 0.6 0.5 3 0.9 0.95 1.0 0.9 0.85 0.8 0.75 0.65 0.55 5 0.8 0.85 0.9 1.0 0.95 0.9 0.85 0.75 0.65 6 0.75 0.8 0.85 0.95 1.0 0.95 0.9 0.8 0.7 7 0.7 0.75 0.8 0.9 0.95 1.0 0.95 0.85 0.75

(6)

8 0.65 0.7 0.75 0.85 0.9 0.95 1.0 0.9 0.8

10 0.55 0.6 0.65 0.75 0.8 0.85 0.9 1.0 0.9

12 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.9 1.0

Budowa tablicy podobiestw, poniewa opiera si na ustalaniu wartoci funkcji przynalenoci, równie uzaleniona jest od indywidualnych preferencji uytkownika.

2.3. Nieprecyzyjne (rozmyte) kwantyfikatory

W zapytaniu twardym kwantyfikatorem domylnym jest kwantyfikator wszyscy

lub w przypadku zaprzeczenia kwantyfikator Īaden.

Zazwyczaj nie szukamy wszystkich handlowców, których poziom obrotów był niszy ni 1400,00zł tylko handlowców, których poziom obrotów był niszy ni 1400,00zł. Rozmyty jzyk zapyta daje nam moliwo zapytania o prawie wszystkich handlowców, których poziom obrotów był niszy ni 1400,00zł.

Zapytanie rozmyte moe mie posta: SELECT A.IMIE, A.NAZWISKO FROM HANDLOWCY A, OBROTY B

WHERE A.NR_H=B.NR_H AND 0.8 B.OBROTY =<1400,00

W przypadku rozmytych kwantyfikatorów współczynnik moemy traktowa jako 80% krotek spełniajcych podany warunek. W tym przypadku musimy policzy liczb wszystkich krotek danej relacji i poda 80% z nich jako odpowied. Powyszy przykład cile koresponduje z opcj zapytania narzucajc nam maksymalna liczb krotek. Jeeli chcemy pozna piciu handlowców z takimi obrotami zapytamy:

SELECT 5 A.IMIE, A.NAZWISKO FROM HANDLOWCY A, OBROTY B

WHERE A.NR_H=B.NR_H AND B.OBROTY =<1400,00

Zastosowanie kwantyfikatora rozmytego nabiera innego znaczenia, jeeli np. interesuj nas

oddziały, w których nie pracują prawie Īadne kobiety. Zapytanie rozmyte formułujemy

nastpujco:

SELECT ODDZIAŁ FROM ODDZIAŁ WHERE NR_OD NOT IN

(SELECT DISTINCT A.NR_OD

FROM ODDZIAŁ A, HANDLOWCY B WHERE A.NR_H=B.NR_H AND 0.8 B.PŁE =’K’)

Po przyjciu współczynnika 0.8 jako 80% krotek spełniajcych podany warunek szukamy wszystkich oddziałów, w których zatrudnionych jest 80% mczyzn.

2.4. Operatory kompensacyjne

Operatory kompensacyjne, najczciej w postaci redniej geometrycznej, maj zastosowanie w przypadku łczenia predykatów i okrelaj ich wspólny stopie przynalenoci. Jeeli obiektem zainteresowania uytkownika systemu s szczególnie ci handlowcy, którzy mało sprzedaj, ale nie duo mniej ni w poprzednim okresie, to po zdefiniowaniu pojcia "nie duo mniej" jako mniej

(7)

wicej 10% i bardzo słaby poziom obrotów czyli 3000,00zł moemy sformułowa nastpujce pytanie:

SELECT A.IMIE, A.NAZWISKO FROM HANDLOWCY A, OBROTY B

WHERE A.NR_H=B.NR_H AND B.OBROTY =3000,00 AND B.SPADEK=<10 W praktyce jednak nie otrzymamy pełnych informacji o wydajnoci pracowników, gdy na licie nie znajd si ci, których obroty spadły o 11% niezalenie od obecnego ich poziomu. Jest to oczywicie wynik działania operatora logicznego "AND" w zastosowanej logice klasycznej. Po ustaleniu progu reakcji dla operatora kompensacyjnego 0.5 zapytanie rozmyte przyjmuje tak posta:

SELECT A.IMIE, A.NAZWISKO FROM HANDLOWCY A, OBROTY B

WHERE A.NR_H=B.NR_H AND B.OBROTY=3000,00 0.5 AND B.SPADEK=<10

Po zdefiniowaniu funkcji przynalenoci dla atrybutów „obroty” (tab. 5), aby móc otrzyma odpowied musimy jeszcze zdefiniowa funkcj okrelajca stopie przynalenoci spadku obrotów S do zbioru spadków obrotów „nie duo mniej”. Spadek obrotów mniejszy ni 5% moemy traktowa jako bardzo mało zatem w tym przypadku warto szukanej funkcji wynosi 1 (F2 = l dla S < =5). Warto spadku obrotów powyej 15% moe by rozpatrywana ju w kategoriach wikszego spadku, zatem dla takich spadków obrotów funkcja przyjmie warto 0 (F2 = 0 dla S > = 15). Spadek obrotów z przedziału pomidzy 5% a 15% wraz ze swoim wzrostem przyjmuje coraz mniejsze wartoci funkcji: F2 = (15 – S)/10 dla 5 < S <15 (tab.7).

T a b e l a 7 Funkcja przynalenoci spadku obrotów do zbioru rozmytego spadków „nie duo mniej”

Spadek[%] 5 6 7 8 9 10 11 12 13 14

F2 1,0 0,9 0,8 0,7 0,6 0,5 0,4 0,3 0,2 0,1

Po zastosowaniu redniej geometrycznej (tab. 8) zauwaamy wówczas, e nawet handlowiec (012) majcy obroty a 3710,00 zł jest dla nas "wany", jeli jego spadek obrotów jest na poziomie tylko 6%. W wyniku takiego zapytania otrzymamy take handlowca (003), którego obroty spadły a o 12%, ale obecny poziom jego obrotów wynosi tylko 2870,00zł.

T a b e l a 8 Przykład zapisu relacji danych rozmytych z funkcjami przynalenoci F1, F2

Nr_h F1 F2 rednia geometryczna 001 0,00 1,00 0,00 002 0,00 1,00 0,00 003 0,87 0,30 0,51 004 0,00 1,00 0,00 005 0,00 1,00 0,00 006 1,00 0,50 0,70 007 0,00 0,80 0,00 008 0,54 1,00 0,73

(8)

009 0,00 1,00 0,00

010 0,00 0,70 0,00

011 0,25 0,60 0,39

012 0,29 0,90 0,51

3. Podsumowanie

W relacjach rozmytych spotykamy si ze zjawiskiem wystpowania czciowego tzn., e dana krotka moe wystpowa w jakim stopniu (krotki waone). Rozwaajc poziom "wanoci" handlowca mona zbudowa tak relacj, która wraz z poprzednio okrelon tabel podobiestw umoliwi formułowanie bardziej rozbudowanych zapyta do bazy danych. W skrajnych przypadkach moe ona przybiera nietypow dla logiki konwencjonalnej posta typu: "W jakim stopniu dobry jest zły handlowiec?" lub "W jakim stopniu "wyróniajcy" jest poziom "cennoci" handlowca okrelanego mianem "krytyczny"?".[7]

Róne preferencje uytkowników rozmytego jzyka zapyta determinuj mnogo rozwiza, co zwiksza uyteczno i podnosi gotowo informacyjn systemu baz danych. Uniwersalne zastosowanie takich systemów wymaga elastycznych narzdzi komunikacji i tu szczególny nacisk naley połoy na interakcj uytkownika w trakcie formułowania zapytania. Problem dotyczy przede wszystkim okrelenia nieprecyzyjnych wartoci atrybutów tzn. budowy tablic podobiestw i definiowaniu osobistych funkcji przynalenoci. Wysokiej klasy rozmyty jzyk zapyta powinien take, poza przechowywaniem informacji o preferencjach uytkownika, uwzgldnia ich zmiany w czasie

Bibliografia

1. Kolman R., "InĪynieria jakoĞci", PWE, Warszawa, 1992.

2. Zadeh L.A., "Fuzzy Sets as a basis for a theory of possibility", "Fuzzy Sets and Systems", 1978, nr 1.

3. Zadeh L.A., "A Computational Approach to Fuzzy Quantifiers in Natural Languages", "Computational Mathematics applications", 9, 1983, nr 1.

4. Celko J., “SQL zaawansowane techniki programowania”, Wydawnictwo MIKOM,Warszawa 1999

5. Kacprzyk J., Ziółkowski A., „Database queries with fuzzy linguistic quantifiers” IEEE Transactions on Systems, Man and cybernetics. SMC, 1986

6. Piegat A., „Modelowanie i sterowanie rozmyte”, Akademicka Oficyna Wydawnicza Exit, Warszawa 1999

7. Lipiska M., „Zastosowanie logiki rozmytej w systemach baz danych”, Materiały VII Sesji Naukowej Informatyki, Szczecin 2002

MAGDALENA LIPISKA e-mail: mlipinska@wi.ps.pl

Zakład Systemów Informatycznych Zarzdzania Wydział Informatyki Politechniki Szczeciskiej ul. ołnierska 49 71-210 Szczecin, tel. (91) 449-56-68

Cytaty

Powiązane dokumenty

Niezależność aplikacji i danych - dane mogą być wprowadzane do bazy bez konieczności modyfikacji korzystających z nich programów czy systemów użytkowych, a z drugiej

Sens tego zapytania można opisać w następujący sposób: Wybrać (SELECT) wszystkie kolumny z tabeli Ucznio- wie (Uczniowie.*) oraz wszystkie kolumny z tabeli Klasy (Klasy.*),

SELECT nazwisko, etat, placa_pod * 12 AS roczne_zarobki FROM pracownicy. ORDER BY etat DESC, roczne_zarobki

Trwałe, zapisane w bazie danych (CREATE TABLE), modyfikowalne (INSERT, UPDATE, DELETE).

{VARCHAR – łańcuch znaków o zmiennej długości (do 20 znaków), UNIQUE – unikatowy, NOT NULL – pole nie może być puste}.. pensja DECIMAL(7,2)

W bazie danych nazwisko_firma utwórz nową tabelę test3 zawierającą 4 kolumny: id, imie, nazwisko, pesel.. Kolumny imie i nazwisko powinny tworzyć

e) Podaj osoby, których nazwiska zaczynają się na No. f) Podaj osoby, których imiona nie zaczynają się na literę A. Użyj operatora IN. Wyniki posortuj malejąco według

Każdy obiekt klasy Ojciec ma wymagane atrybuty pesel, imię i nazwisko oraz atrybut dzieci, którego wartością jest zbiór identyfikatorów obiektów będących dziećmi danego