pobierz plik referatu
Transkrypt
pobierz plik referatu
Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 Rozdział 14 w Modyfikacje schematu ERD na potrzeby automatycznej wizualizacji obiektów GUI w 1 Wstęp da .b w Streszczenie. W rozdziale zaproponowano modyfikacje schematu ERD poprzez dodanie metadanych określających kategorie dla obiektów. Podejście to umożliwia automatyczną wizualizację obiektów GUI. Przy nieznacznie wydłużonym czasie projektowania uzyskujemy możliwość generacji ponad 80% stron lub formatek dla użytkownika końcowego. W przypadku zmian dokonywanych w schemacie, automatyczna generacja pozwala na szybkie przeniesienie tych zmian na strony oraz formatki. 2 Prace pokrewne pl s. Procesy projektowania i implementacji w przypadku większości aplikacji przebiegają podobnie. Kolejno projektowany jest schemat konceptualny, z którego tworzony jest schemat logiczny [1]. Większość programów umożliwia wygenerowanie schematu fizycznego, a następnie skryptu tworzącego bazę danych. Najbardziej pracochłonną częścią jest implementacja GUI (ang. Graphical User Interface), czyli graficznego interfejsu użytkownika (formatki, strony HTML lub PHP/ASP/JSP). Istnieją pewne aplikacje, które pozwalają na generowanie pojedynczych obiektów GUI tj.: kontrolek (elementów wizualnych) a nawet całych formatek lub stron internetowych [2] [3]. Niestety, problemem są złożone i czasochłonne operacje złączenia bardzo wielu tabel w aplikacjach bazodanowych. Po dokładnej analizie procesu projektowania formatek, można zauważyć, że większość elementów powtarza się i można podzielić je na pewne kategorie. Z takich wniosków zrodziła się idea zmian schematów danych już na poziomie projektowania, aby koszty implementacji GUI były jak najniższe. Odbiorcą takiego systemu są projektanci systemów bazodanowych, gdzie można wyróżnić poszczególne kategorie obiektów na schemacie ERD. Modyfikacja schematu ERD poprzez dodanie metadanych była już rozpatrywana w wielu aplikacjach do projektowania, natomiast autorzy skupiali się głównie na opisie i generowaniu dokumentacji, nie na wspomaganiu tworzenia (generowania) części GUI. Sławomir Bańkowski, Michał Gorawski Politechnika Śląska, Instytut Informatyki, ul. Akademicka 16, 44-100 Gliwice, Polska email:{slawomir.bankowski,michal.gorawski}@polsl.pl (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 S. Bankowski, M. Gorawski w Dla wielu aplikacji warstwa pośrednia, czyli obiekty biznesowe (lub klasy trwałe), jest zastąpiona poprzez odpowiednie procedury lub funkcje dla konkretnej instancji bazy danych. Niektóre aplikacje (Tomahawk, JDeveloper, JBuilder) skupiają się na pojedynczych obiektach (zazwyczaj encjach), które można łatwo przenieść na postać formatki lub strony (HTML, ASP lub JSP) [4] [5]. Takie rozwiązanie jest dobre, jednak przy dużej liczbie tabel, czas projektowania lub dokonywania zmian jest ciągle bardzo duży. Dodatkowo, istnieje prawdopodobieństwo, że projektant lub programista przeoczy pewne ważne połączenia, które mogą być niezbędne użytkownikowi końcowemu (klienta systemu). Wynika to z faktu, że projektanci nie zawsze spełniają wszystkie potrzeby użytkownika końcowego. W fazie użytkowania bardzo często okazuje się, że aplikacja nie zawiera sporej części koniecznych elementów, które nie zostały zdefiniowane w pierwszym projekcie systemu. Możliwość pokazania użytkownikowi części działania aplikacji już w fazie projektowania pomaga uniknąć wielu nieporozumień. Istnieją pewne szablony (np.: w Rational Rose), które umożliwiają wygenerowanie części kodu odpowiadającego za silnik aplikacji, czyli wygenerowanie kodu dla znacznej części klas trwałych. Jest to znaczne ułatwienie, jednak spotykamy się z sytuacją, kiedy do bardzo dużej ilości wygenerowanego kodu trzeba dopisać silnik, bardzo często powtarzając te same czynności wiele razy. w w da .b 3 Rozpatrywany schemat Rozpatrywany jest schemat będący częścią schematu dla systemu LMS (Learning Management System) do zarządzania zajęciami (wirtualne teczki), zaprojektowanego na Politechnice Śląskiej. Wycinek zawiera 14 z 70 tabel. Strzałki oznaczają kierunek kluczy obcych (grot strzałki pokazuje w której tabeli jest klucz główny). przedmiot prowadzacy pracownik przedmiot_instancja grupa_typ grupa_studenci zajecie dzien_tygodnia obecnosc pl s. grupa uzytkownik ocena student obecność_typ Rys. 1. Wycinek rozpatrywanego schematu ERD Bez trudu można określić i nazwać pewne zależności, które są słownikowe (typowe nie tylko dla jednego przypadku). Przykładowo, encja dzien_tygodnia jest typu słownikowego, podobnie jak encje grupa_typ i obecność_typ. Encja przedmiot_instancja jest naturalnym rodzicem (lub agregatem) encji grupa, ponieważ dla jednej instancji przedmiotu można wskazać kilka grup należących do tej instancji. Podobnie, encja przedmiot jest rodzicem dla przedmiot_instancja. 166 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 Modyfikacje schematu ERD na potrzeby automatycznej wizualizacji obiektów GUI 4 Modyfikacje ERD w Schemat ERD zawiera trzy podstawowe elementy: encję, relację, atrybut. Aktualnie nie skupiamy się na "słabej encji", "słabej relacji", a także atrybutach kluczowych i atrybutach wielowartościowych, ponieważ nie ma to znaczenia na tym etapie modelowania. Opracowane zostały kategorie dla obiektów schematu ERD: 1) Kategorie dla encji: a) Dictionary (small, medium, big) - tabela słownikowa. b) Partial - tabela częściowa, całość informacji jest tworzona poprzez złączenie kilku innych tabel (przykładem takiej tabeli jest ocena), zawarte są informacje na przecięciu pewnych innych tabel (ocena wystawiona przez prowadzącego dla studenta w ramach pewnej grupy). Encja Partial powinna być połączona za pomocą dwóch lub więcej relacji typu Fact, może posiadać inne, dodatkowe relacje opisujące. c) Information (reference, parent, main) - tabela informacyjna, najbardziej popularna kategoria. d) Actions (saferead, readonly, writeonly, rwonly, editable) - akcje właściwe dla encji: zapis, odczyt, edycja. Nie jest to związane z prawami dostępu do określonych akcji dla encji, jest to zbiór wszystkich odpowiednich logicznie akcji, które można określić dla encji. e) Aggregable (countable, sumable, minable, maxable) - agregacje, jakie można wykonywać na atrybutach encji. f) User (owner, partial, child) - czy jest to tabela zawierająca informacje o użytkownikach w formie pośredniej (student, pracownik) lub bezpośredniej (użytkownik). 2) Kategorie dla relacji: a) Parent - określenie rodzicielstwa dla relacji, jedna encja jest rodzicem, druga jest dzieckiem, wyznaczane jest to zawsze za pomocą krotności relacji. b) Owner - właściciel informacji, relacja powinna być powiązana pomiędzy encją o kategorii Dictionary, Information lub Partial, a User. c) Dictionary - zależność słownikowa. d) Information - zależność informacyjna, przykładem takiej zależności jest dzień tygodnia dla zajęć. e) Fact - łączy tabele wskazując na informacje połączone ze sobą w tabelach Partial. Przykładem takiej zależności jest student i użytkownik. 3) Kategorie dla atrybutów: a) Primary key b) Foreign key c) Name (simple, partial, complex) d) Information e) Category f) Comment g) Aggregable (countable, sumable, minable, maxable) Dla każdego elementu można przypisać kategorię, która determinuje użycie tego elementu w dalszej fazie projektowania. Nazwy w nawiasie są typami kategorii. O ile każdemu elementowi można przypisać kilka kategorii, to w ramach określonej kategorii można wybrać tylko jeden typ. Niektóre kategorie mogą się wykluczać, dlatego została utworzona mapa kategorii, która wskazuje czy dwie kategorie mogą wystąpić dla jednego elementu. da .b w w pl s. 167 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 S. Bankowski, M. Gorawski w Dla encji mapa wygląda następująco (dla relacji i atrybutów większość kategorii się wyklucza i nie jest zalecane ustawianie więcej niż dwie kategorie dla jednego obiektu): Dictionary Partial Information Actions Aggregable Dictionary ? Partial OK. Information X OK. OK. OK. Actions OK. OK OK. Aggregable ? X OK X OK OK User OK. – można użyć dwóch kategorii w ramach obiektu, X – nie można użyć dwóch kategorii w ramach obiektu, ? – nie jest zalecane użycie wybranych dwóch kategorii w ramach obiektu. w 5 Przykłady modyfikacji w da .b W przypadku, gdy encja posiada kategorie Dictionary(small) Actions(rwonly), oznacza to, że jest to tabela słownikowa i właściwymi operacjami są: lista, dodanie elementu. Aby utworzyć formatkę dodawania, należy przede wszystkim skupić się na atrybutach o kategorii Name i Category. Jeżeli dodany jest element innej encji, która jest powiązana relacją Dictionary z tabelą Dictionary(small), to zostanie wyświetlony ComboBox w którym znajdą się wartości atrybutu o kategorii Name. grupa dzien_tygodnia Dictionary(small) dzien_tygodnia_nazwa Name Rys. 2. Modelowanie kategorii dla encji na schemacie logicznym pl s. Dla powyższego schematu (rys.2.) przy dodawaniu grupy należy na ostatniej stronie zamieścić ComboBox (lista rozwijana), w którym znajdą się wartości z kolumny dzien_tygodnia_nazwa dla tabeli dzien_tygodnia. Każdy atrybut posiada kategorię, która jest związana z faktem wyświetlania tak/nie, ale także z kolejnością wyświetlania na stronie (lub formatce). Poniżej (rys.3.) przedstawiona jest encja grupa, która posiada 5 atrybutów, a także 4 relacje. Aby wyświetlić listę grup jako tabelę, nie wystarczą tylko kolumny utworzone z atrybutów. Do tabeli grup należy przede wszystkim dodać informacje z tej encji, która pozostaje w relacji o atrybucie Parent (czyli encja przedmiot_instancja). Tabela powinna zawierać: 1) atrybuty o kategorii Name dla encji jako Parent (także na wyższych poziomach) nazwa przedmiotu, nazwa instancji przedmiotu, 2) atrybuty o kategorii Name dla danej encji - nazwa grupy, numer grupy, 3) atrybuty o kategorii Name dla wszystkich encji o kategorii Dictionary połączonej z daną encją relacją o kategorii Dictionary - typ grupy, dzień tygodnia, 4) atrybuty o kategorii Information dla encji - co ile tygodni, czas trwania, godzina początkowa, 168 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 Modyfikacje schematu ERD na potrzeby automatycznej wizualizacji obiektów GUI 5) atrybuty o kategorii Comment dla encji. grupa_nazwa Name grupa_numer co_ile_tygodni czas_trwania w grupa Information godzina_pocz przedmiot_instancja Parent w pracownik Owner grupa_typ Dictionary dzien_tygodnia w Rys. 3. Kategorie dla atrybutów i relacji na schemacie logicznym przedmiot da .b Kolejnym przykładem typowego połączenia jest rodzic-dziecko (kategoria Parent). Dla relacji o takiej kategorii wiemy, że przy dodawaniu nowego elementu dla określonej encji, musimy szukać encji, która jest "rodzicem". Zdefiniowane nowego elementu zawsze powinno się zaczynać na podstawie wyznaczenia rodzica. grupa_nazwa Name grupa_numer 1 grupa co_ile_tygodni N przedmiot_instancja 1 czas_trwania Parent B) pl s. N grupa grupa A) Information godzina_pocz dzien_tygodnia C) grupa_typ Dictionary Rys. 4. Trzy podstawowe typy połączenia encji z innymi encjami i atrybutami Dla przykładu na powyższym schemacie (rys.4.), dodanie grupy powinno się odbywać na podstawie wybrania przedmiotu (pierwsza strona – rys.4A.), a następnie instancji przedmiotu (druga strona – rys.4B.). Na trzeciej stronie powinny się znaleźć atrybuty dla encji grupa i dla innych encji powiązanych relacjami o kategoriach: Information, Dictionary (rys.4C.). 169 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 S. Bankowski, M. Gorawski 6 Generowanie wizualizacji na podstawie zmodyfikowanego schematu ERD Poniżej przedstawiony jest wycinek schematu ERD (rys.5.), dla którego zostanie rozpatrzona dodanie instancji dla encji grupy. Fizycznie jest to nowa grupa, w bazie będzie ona reprezentowana przez wiersz. w Parent Information przedmiot Name w przedmiot_nazwa przedmiot_instancja przedmiot_opis Dictionary nazwa_dodana w grupa dzien_tygodnia grupa_nazwa grupa_numer czas_trwania dzien_tygodnia_nazwa da .b Name Information Name Rys. 5. Schemat logiczny wraz z kategoriami dla encji, relacji i atrybutów pl s. Pierwszym krokiem jest odszukanie encji grupy. Encja ta posiada kategorię Information (nie zaznaczone na schemacie dla zachowania przejrzystości). Odszukane są wszystkie relacje: grupa - przedmiot_instancja (Parent), grupa - dzien_tygodnia (Dictionary). Dla encji przedmiot_instancja można wyróżnić następujące relacje: przedmiot_instancja przedmiot (Parent). Jeżeli chcemy zdefiniować nową grupę, to należy w pierwszym kroku wybrać rodzica - jest nim encja przedmiot_instancja, wybierając przedmiot_instancja musimy wybrać wiersz dla encji przedmiot. Kolejność kroków będzie następująca: − KROK1: Informacje wstępne na temat dodania grupy. − KROK2: Przedmiot - lista z wyborem przedmiotów, użytkownik wybiera jeden przedmiot. − KROK3: Lista z wyborem instancji przedmiotu dla wcześniej wybranego przedmiotu(Rys.6.). Rys. 6. Krok na stronie - wybór przedmiotu 170 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 Modyfikacje schematu ERD na potrzeby automatycznej wizualizacji obiektów GUI − KROK4: Dwa pola edycyjne dla atrybutów: grupa_nazwa, a także grupa_numer. ComboBox z wartościami atrybutu dzien_tygodnia_nazwa dla encji dzien_tygodnia, ComboBox z wartościami atrybutu typ_grupy_nazwa dla encji typ_grupy (rys.7.). w w w Rys. 7. Kolejny krok na stronie - wpisywanie danych dla nowej grupy − KROK5: Informacja o statusie, możliwość powrotu do poprzedniej strony, aby dodać inną grupę dla tego samego przedmiotu (rys.8.). da .b Rys. 8. Krok ostatni - możliwość dodania następnej grupy do wybranego przedmiotu 7 Wnioski i kierunki dalszej pracy pl s. Przyszłe prace są związane z uwzględnieniem modelowania UML zamiast modyfikacji schematu ERD. Należy zwrócić uwagę na rozszerzenie kategorii dla obiektów, a także definiowaniem kategorii użytkownika. Przedstawione rozwiązanie opiera się na tworzeniu GUI na podstawie zmodyfikowanego schematu ERD, uzupełnionego o metadane przypisujące kategorie dla obiektów (encja, relacja, atrybut). Należy pamiętać, że jest to szereg działań wspomagających, a nie zastępujących całą pracę. Z doświadczeń wynika [9], że w taki sposób można wygenerować około 85-95% wszystkich obiektów GUI. Przykładowo, dla 70 tabel, około 7 akcji dla każdej tabeli należy napisać około 500 wizardów po 3-7 stron każdy, co oznacza około 2500 stron lub formatek. Po zastosowaniu automatycznej wizualizacji, czas projektowania wydłuża się dwu lub trzykrotnie, natomiast generowanych jest około 450 z 500 potrzebnych wizardów. Przedstawione podejście pozwala zaoszczędzić czas, a także uniezależnić się w znacznej części od zmian w schemacie. Uniezależnienie się od zmian może być częściowo uzyskane 171 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 S. Bankowski, M. Gorawski w za pomocą wykorzystania modelu MVC (Model-View-Controller) opracowanego przez IBM. Tutaj jest to jednak tylko w niewielkim wymiarze (zmiana nazwy atrybutu, przeniesienie do innej tabeli). Po dodanie nowych atrybutów i encji należy zazwyczaj przemodelować sporą liczbę stron lub formatek. W aktualnej wersji bezpieczeństwo jest rozwiązane za pomocą prostych wpisów dostępów do określonej strony dla każdej roli - posiada dostęp lub nie. Wbudowanych jest domyślnie pięć ról: gość, student, prowadzący, administrator, superadmin. Generowanie wizualizacji ze zmodyfikowanego schematu ERD jest odpowiednie w określonych przypadkach. Podstawowym kryterium jest wielkość projektu: kilkanaście do kilkudziesięciu encji. Przy większych projektach wartość pracy dodanej może wykraczać poza poprawki potrzebne przy aktualizacji. Jeżeli konieczne jest użycie zaawansowanego modelu bezpieczeństwa, stosowanie rozszerzonego modelowania jest także mocno ograniczone. Należy zaznaczyć, że dla takiego projektu nie istnieje dokumentacja automatycznie generowana - dlatego poprawki mogą być niezwykle trudne. Przyszłe prace skupiają się na wykorzystaniu diagramów UML [6] [7] [8] przy generowaniu wizualizacji, a także zaawansowanym bezpieczeństwie. w w Literatura 5. 6. 7. 8. 9. Allen S.: Modelowanie Danych, ISBN: 83-246-0184-8, 2006. Marzec M.: JBuilder i bazy danych, ISBN: 83-7361-748-5, 2005. Dokumentacja dla aplikacji JBuilder: http://www.borland.pl/jbuilder/ Roy-Daderman A., Koletzke P. Dorsey P.: Oracle JDeveloper 10g Handbook, ISBN:0-07225583-8, 2004. Dokumentacja aplikacji JDeveloper: http://www.oracle.com/technology/products/jdev/ Wrycza S., Marcinkowski B., Wyrzykowski K.: Język UML 2.0 w modelowaniu systemów informatycznych, ISBN: 83-7361-892-9, 2006. Fowler M.: UML w kropelce, ISBN:83-87115-22-3, 2005. Strona standardu UML: http://www.uml.org/ Strona Systemu Zarządzania Zajęciami: http://apas.polsl.pl/lms/ da .b 1. 2. 3. 4. pl s. 172 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008