Rozdział monografii: `Bazy Danych: Modele, Technologie, Narzędzia`

advertisement
Rozdział monografii: 'Bazy Danych: Modele, Technologie, Narzędzia', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2005
Rozdział 9
Rozmyta agregacja danych w pytaniach SQL
w
w
w
Streszczenie. W rozdziale przedstawiono analizę występowania wartości
rozmytych we frazie HAVING, wyznaczanie wartości funkcji agregujących
dla danych nieprecyzyjnych. Zaprezentowano możliwość zastosowania w pytaniach sformułowanych w sposób nieprecyzyjny rozmytych kwantyfikatorów (pełniących rolę lingwistycznych funkcji agregujących) oraz obliczanie
stopnia zgodności tak sformułowanych warunków rozmytych. Każdy z wyodrębnionych przypadków został zilustrowany konkretnym przykładem.
1 Wprowadzenie
da
.b
Pytania, które użytkownik kieruje do bazy danych, są przez niego w pierwotnej postaci
formułowane w języku naturalnym. Można się więc spodziewać w takich pytaniach określeń nieprecyzyjnych lub nie mających swoich odpowiedników w języku SQL (stanowiącym obecnie standardowy język zapytań w bazach danych [3], [11].
Rozszerzenie języka SQL przez wprowadzenie elementów teorii zbiorów rozmytych,
umożliwi użytkownikowi konstruowanie zapytań zawierających niedokładne lub nieprecyzyjnie podane warunki. Warunki pytania, formułowane przez użytkownika, przekładają się
zwykle na warunki filtrujące i te właśnie powinny zostać poddane szczegółowej analizie.
Biorąc pod uwagę miejsca występowania warunków filtrujących w instrukcji SELECT
języka SQL, warunki te mogą być podzielone na [10], [11]:
− występujące we frazie WHERE (operujące na poszczególnych wierszach),
− występujące we frazie HAVING (operujące na wyodrębnionych we frazie GROUP
BY grupach wierszy).
Poza wymienionymi powyżej frazami, wartości nieprecyzyjne mogą występować również w klauzulach SELECT, GROUP BY, ORDER BY instrukcji SELECT.
Analiza występowania wartości nieprecyzyjnych (rozmytych) w warunkach filtrujących
we frazie WHERE oraz wyznaczanie stopnia zgodności tak skonstruowanego warunku
zostały przedstawione w artykułach [4], [5], [6], [7], [8].
W tym rozdziale natomiast zostanie przedstawiona analiza występowania wartości rozmytych we frazie HAVING, tworzenie rozmytych funkcji agregujących, rozmytych kwantyfikatorów lingwistycznych oraz wyznaczanie stopnia zgodności tak sformułowanych warunków.
Prezentowane w dalszej części rozdziału pytania, konstruowane w języku SQL, odnoszą
się do przykładowej bazy danych ZAKŁADY. W skład bazy danych ZAKŁADY wchodzą
między innymi następujące tabele:
pl
s.
Dariusz Mrozek, Bożena Małysiak: Politechnika Śląska, Instytut Informatyki,
ul. Akademicka 16, 44-100 Gliwice, Polska
email:{mrozek, malysiak}@polsl.pl
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2005
Rozdział monografii: 'Bazy Danych: Modele, Technologie, Narzędzia', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2005
D. Mrozek, B. Małysiak
Instytuty (nr_inst, nazwa),
Zaklady (nr_zakl, nazwa, liczba_prac, liczba_pokoi, nr_inst),
Pracownicy (nr_prac, imie, nazwisko, wiek, plec, staz_pracy, nr_zakl),
Zapotrzebowanie (nr_zakl, rok, papier, toner, plytki_CD),
Zuzycie (nr_zakl, rok, papier, toner, plytki_CD),
w
Nazwy kolumn wchodzących w skład kluczy głównych w tabelach zostały podkreślone,
natomiast nazwy kolumn zawierających wartości rozmyte pogrubione.
Przechowywane w tabeli zapotrzebowanie dane dotyczą szacowanych (planowanych)
potrzeb na dany rok. W przedstawionych, w kolejnych podrozdziałach, przykładach rozpatrywane warunki rozmyte będą dla wyróżnienia pogrubione.
Schemat bazy danych ZAKŁADY przedstawiony jest na diagramie (rys. 1).
instytuty
w
nr_inst : Integer
nazwa : String
1
w
zapotrzebowanie
papier : ftrapezium
toner : ftrapezium
plytki_CD : ftrapezium
nr_zakl : Integer
rok : Date
+należy
0..*
+z amawia
0..*
1
zaklady
nazwa : String
liczba_prac : Integer
liczba_pokoi : Integer
nr_zakl : Integer
nr_inst : Integer
+zatrudnia
1
0.. *
da
.b
pracownicy
imie : String
nazwisko : String
plec : String
wiek : Integer
nr_zakl : Integer
staz_pracy : Integer
nr_prac : Integer
1
+zuż ywa
0..*
zuzycie
papier : Int eger
t oner : Integer
plyt ki_CD : Integer
nr_zakl : Int eger
rok : Date
Rys. 1. Schemat bazy danych ZAKŁADY
pl
s.
2 Funkcje agregujące na danych rozmytych
W języku SQL możliwy jest podział wierszy w tabeli na grupy i obliczenie wartości funkcji
agregujących w ramach poszczególnych grup. Do wyodrębnienia grup wierszy służy klauzula GROUP BY, po której wypisuje się nazwy kolumn, których jednakowe wartości wyznaczają kolejne grupy wierszy. Tak jak na pojedyncze wiersze w tabeli można nałożyć
warunki we frazie WHERE, tak i na wyodrębnione grupy można również nakładać warunki.
W tym celu stosuje się klauzulę HAVING, w której wyszukiwane dane mogą zostać przetworzone przy użyciu dostępnych funkcji agregujących [12].
Obliczenie wartości funkcji agregujących, np.: 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 spośród liczb
rozmytych [2], [9], [13]. W rozdziale założono, że liczby rozmyte są typu L-R [2], [9], [13].
Funkcja agregująca COUNT zawsze zwraca liczbę analizowanych wartości, więc obliczona
wartość jest zawsze liczbą ostrą (dokładną).
78
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2005
Rozdział monografii: 'Bazy Danych: Modele, Technologie, Narzędzia', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2005
Rozmyta agregacja danych w pytaniach SQL
Przykładowe pytanie kierowane do bazy danych ZAKŁADY (której strukturę przedstawiono we wprowadzeniu) może brzmieć następująco:
„Wyznacz wartość średniego zapotrzebowania na tonery w roku 2002.”
Postać tego pytania zapisana w języku SQL jest następująca:
SELECT AVG(toner)
FROM zapotrzebowanie
WHERE rok = ‘2002’;
w
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 jest uruchamiana odpowiednia autorska funkcja agregująca operująca na rozmytych danych lub klasyczna funkcja agregująca operująca na dokładnych danych.
w
3 Nakładanie warunków na funkcje agregujące w pytaniach
rozmytych
w
da
.b
Wartości rozmyte mogą występować również w zapisie warunków filtrujących we frazie
HAVING, gdzie warunki te są nakładane na funkcje agregujące i ten przypadek został
szczególnie dokładnie przeanalizowany.
W tego typu pytaniach rozmytych można wyróżnić kilka rodzajów agregacji danych [4]:
− 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.
Nowym problemem jest agregacja wykonywana dla kolumn zawierających rozmyte dane. Proces wyznaczania stopnia zgodności z kryteriami warunku przebiega tak samo, jak
w przypadku warunku we frazie WHERE [4], [5], [6], [14], tzn. po pierwsze dla każdego
warunku rozmytego jest wyznaczany jego stopień zgodności. Następnie w przypadku warunków złożonych, w zależności od łączących je operatorów, należy zastosować odpowiednią s-normę lub t-normę [2], [9], [13] i obliczyć całkowity stopień zgodności.
W kolejnych podrozdziałach zostaną rozpatrzone wymienione powyżej przypadki agregacji danych w warunkach rozmytych.
pl
s.
3.1 Agregacja wartości ostrych − nakładany warunek rozmyty
Wszystkie prowadzone dotychczas rozważania dotyczące wyznaczania stopni zgodności
między wartością dokładną a wartością rozmytą, dotyczące frazy WHERE, we frazie
HAVING są podobne [4], [5], [6].
Przykładowe pytanie kierowane do bazy danych ZAKŁADY może brzmieć następująco:
„Wyszukaj te zakłady, w których jest zatrudnionych około 10 kobiet, przy czym stopień
zgodności z tym warunkiem powinien być większy od 0,65.”
Pytanie to zapisane w języku SQL w formie operatorowej [5], [6] może mieć następującą postać:
SELECT nr_zakl
FROM pracownicy
WHERE plec = ’K’
GROUP BY nr_zakl
HAVING (count(nr_prac) jest okolo 10) > 0.65;
79
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2005
Rozdział monografii: 'Bazy Danych: Modele, Technologie, Narzędzia', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2005
D. Mrozek, B. Małysiak
Proces wyboru grup do wyniku jest wykonywany w typowy sposób. Dla bieżącej grupy
wierszy jest wyznaczany stopień zgodności wartości funkcji agregującej count(nr_prac)
z wartością rozmytą okolo 10. W odpowiedzi pojawią się te grupy, dla których warunek
wyszczególniony we frazie HAVING jest spełniony ze stopniem zgodności przekraczającym 0,65.
w
3.2 Agregacja wartości rozmytych
w
w
Zadanie wyszukiwania w przypadkach, w których jest niezbędne wykonanie agregacji na
wartościach rozmytych, jest realizowane w ten sam sposób, jak w pytaniu omawianym
w poprzednim punkcie z tą różnicą, że w pytaniach tych jest niezbędne wyznaczenie wartości funkcji agregujących: SUM, AVERAGE, MIN, MAX operujących na wartościach rozmytych.
Przykładowe pytanie kierowane do bazy danych ZAKŁADY może brzmieć następująco:
„Wyszukaj te instytuty, których sumaryczne roczne zapotrzebowanie na papier wynosiło
około 1000 ryz. W odpowiedzi powinny znaleźć się wiersze o stopniu zgodności co najmniej
0,7.”
Pytanie to zapisane w języku SQL w formie operatorowej [5], [6] może mieć następującą postać:
da
.b
SELECT i.nr_inst, rok, sum(papier)
FROM zapotrzebowanie z JOIN zaklady zk ON z.nr_zakl=zk.nr_zakl
JOIN instytuty i ON zk.nr_inst = i.nr_inst
GROUP BY i.nr_inst, rok
HAVING (sum(papier)jest okolo 1000) >= 0.7;
W przedstawionym przykładzie zastosowano funkcję agregującą SUM, której argumentem są wartości typu rozmytego. Proces wyboru grup do wyniku wykonywany jest w typowy sposób (omówiony w poprzednim punkcie), w odpowiedzi pojawią się te grupy, dla
których warunek wyszczególniony we frazie HAVING jest spełniony ze stopniem zgodności większym bądź równym 0,7.
3.3 Rozmyty warunek filtrujący we frazie WHERE i agregacja we frazie HAVING
pl
s.
W przypadku, gdy warunki filtrujące są nakładane na kolumny zarówno we frazie WHERE,
jak i we frazie HAVING, zadanie wyszukiwania jest realizowane w ten sam sposób jak
w poprzednich przykładach, z tą różnicą, że w tego typu pytaniach, po wybraniu wierszy
spełniających warunki filtrujące we frazie WHERE, wyodrębniane są grupy wierszy, na
które nakładane są warunki wyspecyfikowane we frazie HAVING.
W tego typu pytaniach dwa razy są wyznaczane stopnie zgodności, najpierw dla poszczególnych wierszy, później dla grup zawierających już tylko te wiersze, które zostały
wyodrębnione w pierwszym procesie wyboru wierszy.
Rozpatrzmy następujące pytanie, kierowane do bazy danych ZAKŁADY:
„Wyszukaj nazwy tych zakładów, które w roku 2003 złożyły zapotrzebowanie na około
100 płytek CD oraz ich maksymalne zużycie płytek CD wynosiło około 120. W odpowiedzi
powinny się znaleźć wiersze, które spełniają podane kryteria ze stopniem zgodności nie
mniejszym niż 0,8.”
Pytanie to zapisane w języku SQL w formie operatorowej [5], [6] może mieć następującą postać:
80
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2005
Rozdział monografii: 'Bazy Danych: Modele, Technologie, Narzędzia', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2005
Rozmyta agregacja danych w pytaniach SQL
SELECT z.nr_zakl, nazwa
FROM zaklady z JOIN zapotrzebowanie zp
ON z.nr_zakl = zp.nr_zakl
JOIN zuzycie zu ON zp.nr_zakl = zu.nr.zakl
WHERE zp.rok =’2003’ AND (zp.plytki_CD jest okolo 100) >= 0.8
GROUP BY z.nr_zakl, nazwa
HAVING (max(zu.plytki_CD) jest okolo 120) >= 0.8;
w
W procesie interpretacji powyższego pytania należy zwrócić uwagę na następujące etapy:
− najpierw na etapie filtracji (wykonanie frazy WHERE) są wybierane wiersze spełniające warunek dokładny (dotyczący roku 2003) i dla tych wierszy jest wyznaczany
stopień zgodności dla warunku rozmytego: (zp.plytki_CD jest okolo 100),
− następnie wiersze, dla których stopień zgodności nie jest mniejszy niż 0,8 podlegają
grupowaniu,
− kolejno dla grup we frazie HAVING wyznaczona jest wartość maksymalna i po raz
drugi jest obliczany stopień zgodności, tym razem dotyczący tej wartości,
− z grup, dla których ten stopień zgodności spełnia warunek (nie mniejszy niż 0,8), jest
tworzony wynik.
w
w
4 Rozmyte kwantyfikatory (rozmyte lingwistyczne funkcje agregujące)
da
.b
W języku naturalnym często używa się sformułowań: prawie wszystkie, prawie żaden,
około połowa itd., dopuszczających niepewność. Wszystkie te stwierdzenia odnoszą się do
pewnej analizowanej grupy obiektów.
Określenia te mogą pełnić rolę rozmytych kwantyfikatorów, co umożliwia formułowanie
zapytań typu: „Wyszukaj dane o zakładach, w których prawie wszyscy pracownicy to mężczyźni.” lub „Wyszukaj zakłady, w których około połowa pracowników ma mniej niż 35
lat.”
Należy zauważyć, że bezwzględne wartości (liczby pracowników) spełniające kryteria
pytania są w każdym przypadku inne. Można jednak w prosty sposób unormować takie
wyniki wyznaczając iloraz:
Card (G ( warunek ))
Card (G )
pl
s.
o=
(1)
gdzie:
G − oznacza grupę wierszy G o liczności card(G) (np. pracowników zakładu i),
G((warunek)) − oznacza wiersze grupy G spełniające warunek (np. pracownicy zakładu
i młodsi od 35 lat).
Powyższy iloraz (wzór 1) oznacza więc odsetek wierszy w grupie spełniających warunki
pytania. Można zauważyć, że zachodzi 0 ≤ o ≤ 1.
Należy zwrócić uwagę, że określenia: prawie wszyscy, około połowa, prawie żaden
można potraktować jako tzw. wartości lingwistyczne, tzn. wartości rozmyte [1], [2], [9],
[13]. Powstaje wtedy problem zdefiniowania funkcji przynależności [2], [9], [13] dla takich
wartości. Jeśli argumentem funkcji przynależności byłyby liczby bezwzględne (np. liczba
mężczyzn, czy liczba pracowników młodszych niż 35 lat), to funkcja ta miałaby zastosowanie w jednym konkretnym pytaniu, zaś ogólnie byłaby bezużyteczna.
Zauważono jednak, że zdefiniowanie takiej funkcji na przedziale [0, 1] (lub inaczej
w procentach) pozwala skojarzyć (porównać) taką funkcję przynależności z funkcją odse81
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2005
Rozdział monografii: 'Bazy Danych: Modele, Technologie, Narzędzia', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2005
D. Mrozek, B. Małysiak
tek. Można wtedy wyznaczyć stopień „spełnienia” danego kwantyfikatora (np. prawie
wszyscy) [1], [2], [13], czyli inaczej – stopień zgodności warunku z kryteriami pytania.
Przyjęto na przykład funkcję przynależności dla wartości lingwistycznej prawie wszyscy
jak na rys. 2.
µ
w
1
w
0
0.9
0.95
1
X
Rys. 2. Funkcja przynależności dla wartości lingwistycznej prawie wszyscy
w
da
.b
Rozważono ponownie pytanie:
„Wyszukaj te zakłady, w których prawie wszyscy pracownicy to mężczyźni.
W odpowiedzi powinny znaleźć się wiersze o stopniu zgodności co najmniej 0,7.”
Postać tego pytania zapisana w języku SQL może być wyrażona następująco:
SELECT nr_zakl, prawie_wszystkie(plec = ‘M’)
FROM pracownicy
GROUP BY nr_zakl
HAVING prawie_wszystkie(plec = ‘M’) >= 0.7;
Założono, że dla zakładu numer 1 wartość funkcji odsetek wyniosła 0,925. Wtedy
z wykresu funkcji przynależności odczytać można (rys. 3), że wartość stopnia zgodności
wynosi w tym przypadku 0,5. Tak więc zakład numer 1 nie spełnia warunku na stopień
zgodności i nie zostanie włączony do zbioru wynikowego.
pl
s.
Na koniec można zauważyć, że wartość lingwistyczna prawie wszyscy, którą na początku tego rozdziału określono jako kwantyfikator rozmyty, zajmuje w zapisie pytania w języku SQL miejsce funkcji agregującej. Stąd też wartości tego typu (również okolo_polowa,
prawie_zaden) można określać jako lingwistyczne funkcje agregujące.
µ
1
0.5
0
0.9 0.925
1
X
Rys. 3. Stopień zgodności (0,5) obliczonego odsetka (0,925) z wartością lingwistyczną
prawie_wszystkie
82
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2005
Rozdział monografii: 'Bazy Danych: Modele, Technologie, Narzędzia', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2005
Rozmyta agregacja danych w pytaniach SQL
3 Podsumowanie
w
W rozdziale przedstawiono proces wykonywania zapytań rozmytych, w których zastosowano agregację danych. Agregowane dane w zależności od pytania przyjmowały zarówno
ostre (dokładne), jak i rozmyte wartości. Podobnie kryterium pytania było formułowane
zarówno w formie ostrej (dokładnej), jak i rozmytej. Każdy z przypadków został poparty
przykładowym pytaniem SQL.
Zaprezentowane zostało również autorskie rozwiązanie, pozwalające na zastosowanie
w pytaniach SQL kwantyfikatorów rozmytych typu: prawie wszyscy, około połowa, prawie
żaden. Ze względu na ich miejsce występowania w rozmytym pytaniu SQL, określono je
mianem lingwistycznych funkcji agregujących.
Wymiernym rezultatem przedstawionych rozwiązań jest możliwość agregowania danych
podanych w sposób nieprecyzyjny, wyznaczania wartości rozmytych warunków występujących we frazie HAVING oraz uzyskiwania odpowiedzi na pytania, w których pojawiają się
kwantyfikatory rozmyte.
w
w
Literatura
2.
3.
4.
5.
6.
7.
9.
10.
11.
12.
13.
14.
pl
s.
8.
Czogała E., Łęski J.: Fuzzy and neuro-fuzzy intelligent systems. Heiderbrg: New York: PhisicalVerlag, 2000.
Łachwa A.: Rozmyty świat zbiorów, liczb, relacji, faktów, reguł i decyzji. Akademicka Oficyna
Wydawnicza Exit, Warszawa 2001.
Elmasri R., Navathe S. B.: Fundamentals of Database Sytems. Addison-Wesley Publishing
Company, World Student Series. 2000.
Małysiak B.: Wartości rozmyte w pytaniach SQL do baz danych. Studia Informatica, Vol. 24, nr
2A (53). Szczyrk 2003.
Małysiak B: Interpretacja rozmytych warunków filtrujących w zapytaniach SQL. Studia Informatica, Vol.25, nr 2(58). Gliwice 2004.
Małysiak B.: Uzupełnianie zapytań SQL o stopień zgodności kryterium wyboru. Studia Informatica, Vol.25, nr 2(58). Gliwice 2004.
Małysiak B.: Mechanizmy wnioskowania przybliżonego w bazach danych. Studia Informatica,
Vol. 23, nr 4(51). Gliwice 2002.
Małysiak B.: Aproksymacyjne zapytania do baz danych. Studia Informatica, Vol. 23, nr 4 (51).
Gliwice 2002.
Piegat A.: Modelowanie i sterowanie rozmyte. Akademicka Oficyna Wydawnicza Exit, Warszawa 1999.
Ullman J. D.: Database and knowledge-base systems. Computer Science Press, 1988.
Ullman J. D., Widom Z.: Podstawowy wykład z systemów baz danych. WNT, Warszawa 2000.
SQL Język Relacyjnych Baz Danych. Wellesley Software. WNT, Warszawa 1995.
Yager R, Filev D.: Podstawy modelowania i sterowania rozmytego. WNT, Warszawa 1995.
Yu C.T., Meng W.: Principles of Database Query Processing for Advanced Applications. Morgan Kaufmann Publishers, Inc., 1998.
da
.b
1.
83
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2005
Rozdział monografii: 'Bazy Danych: Modele, Technologie, Narzędzia', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2005
w
da
.b
w
w
pl
s.
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2005
Download