Ćwiczenia z Zaawansowanych Systemów Baz Danych
Hurtownie danych Zad 1. Projekt schematu hurtowni danych W źródłach danych dostępne są następujące informacje dotyczące operacji bankowych: Klienci banku (PESEL, imię, nazwisko, datę urodzenia, płeć, kod pocztowy, miasto, ulica, numer domu i numer mieszkania); Konta (numer, typ, saldo, data założenia, właściciel); Operacje (numer operacji, numer konta, typ operacji, kwota, data operacji, data księgowania); Zaproponuj wielowymiarowe struktury danych umożliwiające przeprowadzanie analiz operacji bankowych. Wybierz wymiary dla analizy i poziomy szczegółowości dla poszczególnych wymiarów. Zaprojektuj schemat hurtowni danych klasy ROLAP o topologii płatka śniegu: (a) Zdefiniuj tabele faktów, (b) Zdefiniuj tabele wymiarów. Wskaż w schemacie klucze podstawowe i klucze obce.
Rozwiązanie Źródła danych: Klienci banku (PESEL, imię, nazwisko, datę urodzenia, płeć, kod pocztowy, miasto, ulica, numer domu i numer mieszkania); Konta (numer, typ, saldo, data założenia, właściciel); Operacje (numer operacji, numer konta, typ operacji, kwota/kwota, data operacji, data księgowania); Identyfikacja miar: Klienci < liczba klientów > Konta < saldo, liczba kont > Operacje < kwota, liczba operacji > Identyfikacja wymiarów: Nazwa hierarchii wymiaru Dla miar Klientów: Nazwa wymiaru Źródło wartości wiek: Generalizacja o rok(data urodzenia) o przedział_wieku (rok: {'młodzi', 'w średnim wieku', 'starsi'}), płeć, o płeć(płeć) miejsce zamieszkania: o miasto (nazwa miasta) o województwo (nazwa miasta, województwa).
Dla miar Kont: typ konta: o typ(typ), data założenia: o rok(data założenia) o wiek(rok: {'stare', 'nowe'}), właściciel: o właściciel (właściciel) Klienci Dla miar Operacji: konto: o konto (numer konta) Konta, typ: o typ (typ), kwota: o przedział (kwota: {'duża', 'średnia', 'mała'}), data operacji: o dzień (data operacji) o miesiąc (data operacji) o rok (data operacji), data księgowania: o dzień (data operacji) o miesiąc (data operacji) o rok (data operacji),
Projekt ROLAP o schemacie płatka śniegu: Tabele faktów: Operacje (nr_operacji PK, nr_konta FK, id_typu FK, id_daty FK, id_daty FK, id_kwoty FK, kwota) Konta (nr_konta PK, id_typu FK, id_data_zał FK, id_właściciela FK, saldo) Klienci (pesel PK, id_roku FK, id_płci FK, id_miasta FK) Tabele wymiarów: Konta = Konta (nr_konta PK, id_typu FK, id_data_zał FK, id_właściciela FK, saldo) Typy_operacji (id_typu PK, nazwa_typu, opis_typu) Kwoty_operacji (id_kwoty PK, nazwa_kwoty, od, do) Daty_dzień (id_daty PK, data ('DD-MM-YYYY'), id_miesiąca FK) Daty_miesiąc (id_miesiąca PK, data ('MM-YYYY'), id_roku FK) Daty_rok (id_roku PK, data ('YYYY')) Typy_kont (id_typu PK, nazwa_typu, opis) Daty_założenia_kont (id_daty_zał PK, data ('YYYY'), id_wieku FK) Wiek_kont (id_wieku PK, nazwa_wieku (id_wieku)) Właściciele = Klienci (pesel PK, +imię, +nazwisko, id_roku FK, id_płci FK, id_miasta FK) Wiek_klientów (id_wieku PK, data ('YYYY'), id_przedz_wieku FK)
Przedziały_wieku_klientów (id_przedz_wieku PK, nazwa_przedziału) Płcie (id_płci PK, nazwa_płci) Miasta (id_miasta PK, nazwa_miasta, id_województwa FK) Województwa (id_województwa PK, nazwa) Przedziały wieku Płatek śniegu Wiek Płeć Województwo Klienci Miasto Adres Data typ Konta Data rok Data założenia konta Data rok Typ konta Operacje Data miesiąc Data operacji Typ operacji Kwota operacji Data dzień
Projekt ROLAP o schemacie gwiazdy: Tabele faktów: Operacje (nr_operacji PK, nr_konta FK, id_typu FK, id_daty_oper FK, id_kwoty FK, kwota) Konta (nr_konta PK, id_typu FK, id_data_zał FK, id_właściciela FK, saldo) Klienci (pesel PK, id_roku FK, id_płci FK, id_miasta FK) Tabele wymiarów: Konta = Konta (nr_konta PK, id_typu FK, id_data_zał FK, id_właściciela FK, saldo) Typy_operacji (id_typu PK, nazwa_typu, opis_typu) Kwoty_operacji (id_kwoty PK, nazwa_kwoty, od, do) Daty_operacji (id_daty_oper PK, data ('DD-MM-YYYY'), data ('MM-YYYY'), data ('YYYY')) Typy_kont (id_typu PK, nazwa_typu, opis) Daty_założenia_kont (id_daty_zał PK, data ('YYYY'), id_wieku, nazwa_wieku_konta (id_wieku)) Właściciele = Klienci (pesel PK, +imię, +nazwisko, id_roku FK, id_płci FK, id_miasta FK) Wiek_klientów (id_wieku PK, data ('YYYY'), id_przedz_wieku, nazwa_przedziału) Płcie (id_płci PK, nazwa_płci) Miasta (id_miasta PK, nazwa_miasta, id_województwa, nazwa_województwa)
Gwiazda Wiek Płeć Klienci Adres Data założenia Konta Typ konta Operacje Typ operacji Kwota operacji Data operacji
Zad 2. Operatory cube i rollup Dana jest tabela faktów TF1(a, b, c): Podaj wyniki zapytania: select sum(a), b, c from TF1 group by cube(b, c) a b c 20 y a 15 y a 10 x b 15 x c 5 x c 10 y b 25 x b Dana jest tabela faktów TF2(a, b, c): Podaj wyniki zapytania: select sum(a), b, c from TF1 group by rollup(b, c) a b c 20 y a 15 y a 10 x b 15 x c 5 x c 10 z d 25 z d
Zad 3. Typy perspektyw zmaterializowanych Dany jest zbiór perspektyw zmaterializowanych. Określ własności poszczególnych perspektyw: NU nieutrzymywalna, CU - częściowo utrzymywalna, U utrzymywalna, SO - samoobsługowa Wpisz w poszczególne pozycje jeden z symboli: T gdy perspektywa posiada określoną własność lub N gdy nie posiada. Uwaga: perspektywy klasy SO muszą należeć jednocześnie do jednaj z klas CU albo U. Nr Definicja perspektywy zmaterializowanej 1 select b, sum(a) from A group by b 2 select min(a) from A 3 select avg(a), count(a), sum(a) from A 4 select b, count(a) from A group by b 5 select median(a) from A 6 select b, median(a) from A group by b NU CU U SO
Zad 4. Użyteczność perspektyw zmaterializowanych Dane są definicje perspektyw materializowanych: 1. select b, sum(a) from A group by b 2. select b, min(a) from A group by b 3. select b, sum(a), sum(a*a), count(a) from A group by b 4. select b, sum(a), count(*) from A group by b 5. select b, count(a) from A group by b 6. select b, median(a) from A group by b Czy poniższe zapytania mogą być zrealizowane, za pomocą jednej z powyższych perspektyw. Jeżeli tak, podaj numery wszystkich tych perspektyw. Zapytanie Tak/Nie Numery perspektywy select sum(a) from A select b, avg(a) from A group by b select median(a) from A select count(a) from A select b, variance(a) from A group by b
Eksploracja danych Zad 5.Wsparcie i ufność reguł asocjacyjnych 1. Dany zbiór transakcji będący podstawą do wyszukiwania wzorców asocjacji: Id transakcji Obiekty 100 1, 5, 10 101 3, 5, 7, 9, 12 102 1, 10,12 103 1, 2, 3, 5, 10 104 5, 7, 9, 10 Podaj wartości wsparcia i ufności reguły: 5 -> 10 Wsparcie s =. Ufność c =. 2. Dany zbiór transakcji będący podstawą do wyszukiwania wzorców asocjacji: Id transakcji Obiekty 100 A, B 101 A, B, C 102 A, C 103 A, B 104 B, C Znajdź wszystkie reguły asocjacyjne o minimalnym wsparciu s min = 0,5 i ufności c min = 0,7.
Zad 6. Algorytm Apriori a. Podaj wszystkie wygenerowane przez algorytm Apriori kandydujące zbiory częste o rozmiarze 4, kolejno po fazach join i prune, na podstawie na podstawie danych zbiorów częstych o rozmiarze 3: {1,2,5}, {3,6,7}, {3,6,8}, {9,11,12}. b. Baza danych zawiera 10 transakcji. Zadany minimalny poziom wsparcia s=0,4, ufności c=0,8. Wszystkie zbiory częste znalezione w bazie danych to: {1} 9 razy, {3} 7 razy, {5} - 6 razy, {6} 5 razy, {1, 3} 6 razy, {1, 5} 5 razy. Wygeneruj na ich podstawie wszystkie reguły asocjacyjne spełniające zadany poziom wsparcia i ufności.
Zad 7. Klasyfikacja Dany jest zbiór danych treningowych: Etykieta klasy Indeks Nazwisko Płeć Średnia Rok Kandydat ocen studiów 9909 Nowak K 3,41 II Średni 10118 Nowacka K 4,97 III Dobry 11852 Celińska K 4,45 I Średni 9877 Kowalski M 3,98 III Średni 9111 Tarzan M 3,08 I Zły 10502 Kowalczyk M 4,75 II Dobry a. Zaproponuj transformację powyższych danych (usunięcie lub generalizację wybranych atrybutów) dla ich przystosowania do procesu klasyfikacji. Podaj nowy kształt tabeli b. Wygeneruj drzewo decyzji dla przetransformowanej tabeli (nie musi być to drzewo optymalne, to znaczy sposób jego wygenerowania może być intuicyjny nie trzeba stosować żadnej z przedstawionych na wykładzie metod). c. Który atrybut powinien być wybrany jako korzeń drzewa decyzji? Odpowiedź krótko uzasadnij.
Zad 8. Grupowanie Pogrupuj za pomocą aglomeracyjnego algorytmu hierarchicznego dane opisane w poniższej tabeli podobieństwa. Łącz grupy na podstawie minimalnej odległości między poszczególnymi elementami grup. Narysuj dendrogram dla uzyskanego wyniku. A B C D E A 0 7 2 1 4 B 0 3 6 5 C 0 8 6 D 0 9 E 0 C.size C 5 {A}, {B}, {C}, {D}, {E}
Zad 9. Obiektowo-relacyjny model danych Dany jest schemat obiektowo-relacyjnej bazy danych równoważny następującemu diagramowi klas (związki są modelowane jako referencje między obiektami). jest_szefem 0..* Pracownik {persistence} +PESEL : integer {key} +nazwisko : string +etat [1..*] : Etat + języki[0..*] : String 0..1 jest_podwładnym Etat +nazwa : string +płaca_min : float +płaca_max : float Związkowiec { persistence} +związek : string +składka : float a) Przy założeniu, że jest już zdefiniowany obiektowy typ danych Etat podaj definicję typów Pracownik i Związkowiec. Definicja ma umożliwiać dwukierunkową nawigację: od szefa do podwładnych i id podwładnych do szefa. Zdefiniuj tabelę typu pracownik, która będzie przechowywała również związkowców.
Rozproszone bazy danych Zad 10. Fragmentacja Dany schemat tabeli Projekty (atrybut id_proj jest kluczem tabeli): id_proj nazwa budżet data_rozp data_zak kierownik typ Projektant dokonał następującej - błędnej formalnie - fragmentacji danych tej tabeli: Fragment F1: Atrybuty(id_proj, nazwa, budżet, data_rozp, data_zak, kierownik, typ); wiersze spełniają warunek selekcji: budżet >100 000 and budżet <2 000 000 Fragment F2: Atrybuty(id_proj, nazwa, budżet); wiersze spełniają warunek selekcji: budżet >1 000 000 Fragment F3: Atrybuty(data_rozp, data_zak, kierownik, typ); wiersze spełniają warunek selekcji: budżet >1 000 000 Które warunki poprawności fragmentacji nie zostały spełnione? Zamień powyższy schemat fragmentacji na poprawny formalnie.
Zad 11 Alokacja Zastosuj algorytm najlepszego dopasowania do alokacji fragmentów R1 i R2 na jednym z serwerów S1 lub S2 dla transakcji T1 (realizującej pięć dostępów do R1) i T2 (dwa dostępy do R2 i trzy dostępy do R1). Transakcja Liczba transakcji Serwer na godzinę T1 10 S1 T2 5 S1 T1 2 S2 T2 20 S2