pobierz plik referatu
Transkrypt
pobierz plik referatu
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 Rozdział 27 w Ocena standardu CWM w kontekście standardu SQL 2003 i projektowania relacyjnych baz danych w 1 Wstęp da .b w Streszczenie. W artykule dokonano przeglądu pakietu Relational standardu CWM oraz odpowiednich, zgodnych semantycznie, elementów standardu SQL. W oparciu o przeprowadzoną analizę zaproponowano także ograniczenia zdefiniowane w języku OCL, które nałożone na metamodel CWM, zapewnią zgodność semantyczną wybranych elementów, ze standardem SQL 2003. pl s. Projektowanie baz danych jest procesem wieloetapowym i sprowadza się do tworzenia modeli na różnych poziomach abstrakcji. Transformacja modeli pomiędzy poszczególnymi poziomami abstrakcji odbywa się w oparciu o zdefiniowany zbiór reguł transformacji [9]. Model konceptualny, będący reprezentacją wycinka rzeczywistości, może być wyspecyfikowany za pomocą języka UML [10] w postaci diagramu klas. Model logiczny uzyskuje się z modelu konceptualnego bazy dany. W przypadku, gdy jest on modelem relacyjnym (technologicznie zależnym), wówczas do jego specyfikacji można użyć dedykowanego profilu UML lub standardu SQL. Model fizyczny, uzyskany w wyniku przekształcenia modelu logicznego, wyrażony jest za pomocą języka specyficznego dla wybranej platformy implementacyjnej [8]. Standard CWM (Common Warehouse Metamodel) używa notacji UML do reprezentowania pojęć standardu SQL. W związku z powyższym może on być wykorzystany do tworzenia modeli poziomu logicznego. CWM zdefiniowany został w oparciu o standard SQL w wersji 99 [4], natomiast aktualną wersją, jest wersja 2003. Z uwagi na występujące różnice pomiędzy wspomnianymi wersjami standardu SQL dokonano w pracy oceny użyteczność standardu w procesie projektowania relacyjnych baz danych. Przeprowadzono analizę rozbieżności i ocenę ich wpływu na użyteczność standardu CWM. Jednocześnie uzupełniono standard CWM o ograniczenia wyrażone w języku OCL, które wykluczyły możliwość zdefiniowania modelu logicznego bazy danych niezgodnego ze standardem SQL. W kolejnym podrozdziale omówiony został pakiet Relational, w celu lepszego zrozumienia poruszanego tematu. Ewa Śliwa, Lech Tuzinkiewicz: Politechnika Wrocławska, Instytut Informatyki Stosowanej, Wybrzeże Wyspiańskiego 27, 50-370 Wrocław, Polska email: [email protected], [email protected] (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 E. Śliwa, L. Tuzinkiewicz 2 Pakiet Relational standardu CWM w Standard CWM [1], zaproponowany przez Object Management Group (OMG), stanowi rozszerzenie metamodelu OMG i służy do wymiany metadanych. CWM jest zbiorem pakietów, które zawierają tematycznie pogrupowane metaklasy. Pakiet Relational, którego elementy wykorzystywane są do modelowania obiektowo-relacyjnego, bazuje na części standardu SQL99, składa się z dwudziestu czterech klas. Klasy pakietu można pogrupować zgodnie z ich przeznaczeniem na sześć grup. Pierwszą grupę stanowią klasy definiujące hierarchię obiektów: Catalog oraz Schema. Druga grupa, to zbiór klas definiujących podstawowe elementy składowe schematu bazy danych: Column, ColumnSet, ColumnValue, QueryColumnSet, Row, RowSet, NamedColumnSet, Table, View, SQLDataType, SQLSimpleType, SQLDistinctType oraz SQLStructuredType. Do trzeciej grupy, definiującej indeksy należą: SQLIndex oraz SQLIndexColumn. Czwarta grupa to klasy definiujące integralność danych: CheckConstraint, UniqueConstraint, PrimaryKey oraz ForeignKey. Do ostatniej, piątej grupy, należą klasy, które definiują aspekty dynamiczne bazy danych: Trigger, Procedure oraz SQLParameter. Relacja pomiędzy omówionymi klasami przedstawiona została na rysunku poniżej. da .b w w pl s. Rys. 1. Relacje pomiędzy klasami pakietu Relational standardu CWM ([1] strona 199) 270 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 Ocena standardu CWM w kontekście standardu SQL 2003 i projektowania relacyjnych baz danych. 3 Ocena zgodności CWM ze standardem SQL2003 w Biorąc pod uwagę fakt, że w standardzie SQL 2003 [3] dokonano szeregu zmian polegających na dodaniu nowych elementów oraz usunięciu tych, które uznano za nieistotne, wymagana jest analiza zgodności elementów standardu CWM reprezentujących pojęcia języka SQL. W tabeli 1. przedstawiono wyniki analizy zgodności semantycznej wybranych, (podstawowych z punktu widzenia modelowania bazy danych na poziomie logicznym) elementów standardu CWM ze standardem SQL 2003. Zestawienie to dokonane zostało z zachowaniem wprowadzonego w poprzednim podrozdziale podziału na grupy. Tabela 1. Zestawienie pogrupowanych elementów standardu CWM ze standardem SQL w Element CWM Catalog Schema Element CWM Table da .b w Pierwsza grupa Ocena Zgodność na poziomie definicji. Różnice na poziomie agregowanych elementów (np. indeksy, dziedzina) oraz braku ograniczeń wymuszających przynależność schematu do katalogu oraz składowych schematu do schematu. Nie zostało nałożone ograniczenie na unikalność nazw schematów w obrębie katalogu. Druga grupa Ocena Koncepcja tabeli w obu standardach jest odmienna. Standard SQL2003 definiuje tabelę jako kolekcję wierszy tego samego typu – Row Type – posiadającą przynajmniej jedną kolumnę. Tabela metamodelu CWM [5] jest zmaterializowanym, nazwanym zbiorem kolumn (wyznaczonym przez strukturalny typ danych), posiadającym ograniczenie unikalności oraz mogącym posiadać klucze obce. Standard CWM dopuszcza jednak istnienie tabeli, która nie posiada żadnej kolumny. Różnica w koncepcji bytu, reprezentującego tabelę, dotyczy także jego podziału na rodzaje. Standard SQL 2003 wyróżnia tabele bazowe (trwałe oraz tymczasowe), chwilowe oraz pochodne. W CWM tabelę bazową reprezentuje klasa Table, której atrybut isTemporary decyduje o tym, czy jest ona tymczasowa czy trwała. W przypadku tabeli tymczasowej, jej zakres wyznacza atrybut temporaryScope (zgodnie ze standardem SQL). Kolejny atrybut klasy Table – isSystem – decyduje o fakcie, czy dana tabela jest systemową czy też nie (jest to pewna nadmiarowość w stosunku do standardu SQL). CWM dopuszcza, aby systemowa tabela była jednocześnie tymczasową – brak jest odpowiedniego ograniczenia. Nie definiuje także SQL-owej tabeli chwilowej. Klasa QueryColumnSet, nie odpowiada w pełni SQL-owej tabeli pochodnej, ponieważ nie obejmuje swym zasięgiem widoków. W CWM [6] perspektywa jest nazwanym zbiorem kolumn, natomiast w SQL 2003 - nazwaną tabelą pochodną, która może opierać się zarówno na tabeli bazowej jak i na innej tabeli pochodnej. Jest to istotna różnica, bowiem standard SQL w przeciwieństwie do CWM, dopuszcza tworzenie widoków w oparciu o inną perspektywę. Ma to wpływ na postać definicji perspektywy modyfikowalnej. Uzasadnia to istnienie w SQL-u klauzuli WITH CHECK OPTION. pl s. View 271 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 E. Śliwa, L. Tuzinkiewicz w Column SQLDataType Element CWM CheckConstraint, ForeignKey, UniqueConstraint, PrimaryKey Nie ma odpowiednika w standardzie SQL. pl s. Element CWM SQLIndex SQLIndexColumn da .b w w W matamodelu CWM klasa Column posiada atrybut initialValue (odziedziczony po klasie Attribute z pakietu Core), który może stanowić SQL – wą wartość domyślną. Atrybut ten, typu Expression, jest zapisanym w postaci łańcucha znaków wyrażeniem, którego wykonanie nadaje początkową wartość kolumnie. Dla kolumny określa się typ danych (związek klasy Column z klasą SQLDataType) oraz fakt czy dopuszcza ona nieokreśloność – podobnie jak w przypadku standardu SQL. Konieczność określenia atrybutu length dla kolumny typu znalowego, która oznacza w przypadku łańcucha zmiennej długości jego maksymalną długość, natomiast w przypadku łańcucha stałej długości jego długość, może doprowadzić do sprzeczności. Podobny atrybut (characterMaximumLength) zostaje określony dla klasy SQLSimpleDataType, z którym może być związana klasa Column. Brakuje jednak odpowiedniego ograniczenia, które strzegłoby równości wartości obu atrybutów. Dla kolumny według SQL 2003, w odróżnieniu od CWM, należy zaznaczyć, czy jej nazwa jest zależna od implementacji oraz w przypadku, gdy bazuje ona na dziedzinie, należy ją wskazać (CWM nie definiuje w ogóle pojęcia dziedziny). Ponadto SQL 2003 wprowadza kolumny typu IDENTITY oraz kolumny generowane, których definicja wymaga podania większej ilości informacji, niż definicja zwykłej kolumny. Zagadnienie to jednak nie miało szansy zaistnieć w metamodelu CWM. Standard SQL 2003 definiuje trzy rodzaje typów danych: predefiniowany, konstruowany (tablica, wielozbiór, referencja lub wiersz) oraz definiowany przez użytkownika. SQL-owemu typowi predefiniowanemu odpowiada w CWM SQLSimpleType oraz SQLDistinctType. Trzeci SQLStructuredType jest najbliższy definicji SQL – owego typu wierszowego. W standardzie CWM nie ma typu zdefiniowanego przez użytkownika. Trzecia grupa Ocena Czwarta grupa Ocena Koncepcja ograniczeń, dzięki którym baza danych zachowuje integralność, jest także odmienna w obu standardach. SQL definiuje trzy rodzaje ograniczeń integralności: tabelowe, dziedziny oraz asercje. Ograniczenia tabelowe podzielone zostały z kolei na: unikalności, referencji oraz zwykłe ograniczenie poprawności. W CWM klasa CheckConstraint (specjalizująca klasę Constraint z pakietu Core) reprezentuje SQL – owe ograniczenie poprawności. Nie jest ono jednak w pełni zgodne ze standardem SQL 2003. Pokrywa się forma definicji, którą stanowi wyrażenie logiczne, oraz omówione cechy związane z walidacją. Jednakże w SQL – u ograniczenie poprawności może dotyczyć tylko jednej tabeli, natomiast w CWM – wielu tabel. Wydaje się więc, iż w metamodelu CWM ograniczenie poprawności stanowi połączenie jego SQL – owej wersji oraz asercji. Poza tym klasa CheckConstraint pozostaje w związku z klasami Table oraz 272 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 Ocena standardu CWM w kontekście standardu SQL 2003 i projektowania relacyjnych baz danych. w w Element CWM Trigger, Procedure, SQLParameter da .b w Column. Nie zostało jednak nałożone ograniczenie, które strzegłoby, aby kolumny, z którymi jest związana jest klasa CheckConstraint, należały do klasy Table, także będącej z nią w związku. SQL – owe ograniczenie unikalności oraz jego specjalizacja w postaci ograniczenia klucza głównego reprezentowane są w CWM poprzez klasy UniqueConstraint oraz PrimaryKey Z kolei ograniczenie referencji w CWM zamodelowane jest w postaci klasy ForeignKey, która wiąże kolumny z jednej tabeli z kolumnami z innej lub tej samej tabeli. Cechy obu tych ograniczeni odpowiadają definicji standardu SQL. W metamodelu CWM nie jest jednak przestrzegana zasada unikalności nazw ograniczeń. W przypadku ograniczenia klucza obcego, brak jest ograniczenia, które wskazywałby, iż kolumny danej tabeli, które zostają związane z kolumnami unikalnymi innej (lub tej samej) tabeli muszą być tego samego typu. Piąta grupa Ocena W obu przypadkach aspekt dynamiczny wyrażony jest za pomocą procedur składowanych oraz wyzwalaczy. Różnice występują w części składniowej. CWM dopuszcza by procedura składowana posiada parametr typu return (niedopuszczalne w SQL – u, parametr tego typu może posiadać jedynie funkcja składowana). Znaczenie wyzwalaczy w obu standardach jest jednakowe, a istniejące różnice dotyczą zakresu i sposobu ich wykorzystania. W matamodelu CWM możliwe jest stworzenie wyzwalacza dla tabeli tymczasowej (niedopuszczalne w standardzie SQL). Z kolei, w SQL możliwe jest ograniczenie listy kolumn tabeli związanych z wyzwalaczem oraz określenie znacznika czasu utworzenia wyzwalacza, który jest istotny w sytuacji istnienia wielu wyzwalaczy dotyczących tego samego zdarzenia (brak w CWM). pl s. Głównym skutkiem rozbieżności standardu CWM oraz SQL jest brak jednoznacznej interpretacji definiowanych pojęć, co z kolei może przełożyć się na niezgodności przy przenoszeniu modeli pomiędzy platformami. Dla niektórych z wyżej omówionych niezgodności zaproponowano ograniczenia, zdefiniowane w języku OCL [2], które je eliminują. 4 Przykład wykorzystania standardu CWM w projektowaniu relacyjnej bazy danych Przedstawione w poprzednim podrozdziale rozbieżności pomiędzy standardami CWM i SQL mogą mieć negatywny wpływ na jakość modelu logicznego. Wybrane przypadki rozbieżności zostaną zilustrowane na przykładzie modelu logicznego, którego podstawę stanowi model konceptualny związany z organizacją konferencji naukowych (rys. 2). Dla każdego z tych przykładów zaproponowane zostanie ograniczenie zdefiniowane w języku OCL [7]. 273 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 E. Śliwa, L. Tuzinkiewicz w w w da .b Rys. 2. Model konceptualny wycinka rzeczywistości związanego z organizacją konferencji naukowych Na rys. 3. przedstawiono realizację asocjacji zgłoszenie (rys. 2) w standardzie CWM. Relacja ta pokazana jest za pomocą pogrubionej linii ciągłej i jest przykładem niepoprawnej referencji w standardzie SQL (niezgodność typów powiązanych kolumn). Poprawny związek reprezentowany jest przerywaną linią. pl s. Rys. 3. SQL-owy związek referencji zamodelowany w standardzie CWM Definicja ograniczenia (w języku OCL w wersji 2.0), eliminująca możliwość wystąpienia omówionej wyżej sytuacji. context ForeignKey inv: let (s1 : Sequence (SQLDataType) = self.feature.type) and (s2 : Sequence (SQLDataType) = self.unique.feature.type) in (s1->size() = s2->size()) and (s1->forAll(i:Integer | self->at(i) = s2->at(i))) 274 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 Ocena standardu CWM w kontekście standardu SQL 2003 i projektowania relacyjnych baz danych. Na rys. 4. zamodelowana została klasa Artykuł (rys. 2) w standardzie CWM. Jest to przykład prezentujący możliwość zdefiniowania typu łańcuchowego dla kolumny z niejednoznacznie określoną długością (wyróżnione obiekty definiują dwa różne rozmiary kolumny typu łańcuch znaków). w w w Rys. 4. Model tabeli w standardzie CWM Definicja ograniczenia (w języku OCL w wersji 2.0), eliminująca możliwość wystąpienia omówionej wyżej sytuacji. da .b context Column inv: not(self.length->oclIsInvalid()) implies (self.type->oclIsTypeOf(char) or self.type->oclIsTypeOf(varchar)) and (self.length = self.type.characterMaximumLength) pl s. Na rys. 5. zamodelowane zostało ograniczenie związane z wycinkiem rzeczywistość, które na rys. 1. oznaczone jest w postaci notki. W CWM rolę SQL-owej asercji spełnia klasa CheckConstraint. Jest to przykład prezentujący możliwość zdefiniowania ograniczenia, w którego ciele wykorzystywane będą kolumny tabel, z którymi dane ograniczenie nie jest związane (sytuacja niedopuszczalna w SQL). Pogrubiona linia obrazuje błędny związek pomiędzy instancją klasy CheckConstraint oraz instancją klasy Column, która nie należy do tabel związanych z ograniczeniem. Definicja ograniczenia (w języku OCL w wersji 2.0), eliminująca możliwość wystąpienia omówionej wyżej sytuacji context CheckConstraint inv: let cc : Set(Column)=self.constrainedElement-> select(elem|elem->oclIsTypeOf(Column)) and ct : Set(Column)= (self.constrainedElement->select(elem|elem->oclIsTypeOf(Table))) ->select(self.feature) in ct->includesAll(cc) 275 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 E. Śliwa, L. Tuzinkiewicz w da .b w w Rys. 5. SQL-owa asercji zamodelowana w standardzie CWM za pomocą klasy CheckConstraint context Table inv: let s : Set(String) = self.trigger.name and b : Bag(String) = self.trigger.name in s->size() = b->size() pl s. W metamodelu CWM brakuje ograniczenia związanego z zachowaniem unikalności nazw jednego typu elementu w przestrzeni nazw (sytuacja niedopuszczalna w SQL). Na przykład dopuszczalne jest, aby katalog zawierał schematy o tej samej nazwie lub, aby wyzwalacze danej tabeli posiadały nieunikalne nazwy. Definicja ograniczenia (w języku OCL w wersji 2.0), eliminująca możliwość wystąpienia omówionej wyżej sytuacji Metamodel CWM dopuszcza także możliwość zdefiniowania tymczasowej tabeli systemowej (sytuacja niedopuszczalna w SQL) oraz wyzwalacza dla tabeli tymczasowej. Definicja ograniczenia (w języku OCL w wersji 2.0), eliminująca możliwość wystąpienia omówionej wyżej sytuacji context Table inv: self.isSystem implies self.isTemporary = False oraz context Table inv: self.isTemporary implies self.trigger->isEmpty() 276 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 Ocena standardu CWM w kontekście standardu SQL 2003 i projektowania relacyjnych baz danych. 5 Wnioski w W projektowaniu baz danych istotną rolę odgrywają standardy dotyczące modelowania i przetwarzania danych. Standardem, który może być wykorzystany do modelowania na poziomie logicznym jest standard CWM, który został stworzony na podstawie standardu języka SQL99 [4]. Z uwagi na to, iż alternatywnym rozwiązaniem specyfikacji modelu na poziomie logicznym jest standard SQL 2003 dokonana została ocena zgodność pakietu Relational standardu CWM w zakresie zgodności reprezentowanych pojęć względem standardu SQL 2003. Przeprowadzona analiza wykazała, że: − Różnice, na poziomie semantycznym, pomiędzy elementami standardów CWM oraz SQL mogą mieć negatywny wpływ na jakość modelu logicznego wyspecyfikowanego za pomocą standardu CWM. − Standard CWM wymaga uzupełnienia o ograniczenia, które zapewnią zgodność semantyczną w zakresie reprezentowanych elementów standardu SQL. − Standard CWM, pomimo rozbieżności w stosunku do aktualnej wersji standardu SQL, może być praktycznie wykorzystywany. Ponadto: − Istnieją narzędzia oparte o standard CWM wspierające proces projektowania baz danych − Model logiczny utworzony w oparciu o standard CWM może być przenoszony pomiędzy różnymi platformami. Standard CWM powinien być utrzymywany oraz wciąż rozwijany. 1. da .b w w Literatura pl s. Common Warehouse Metamodel (CWM) Specification, March 2003, Version 1.1, Volume 1 formal /03-03-02. Wersja elektroniczna specyfikacji dostępna jest na stronie internetowej: http://www.omg.org/technology/cwm/ . 2. OCL 2.0 Specification, Version 2.0. Wersja elektroniczna specyfikacji dostępna jest na stronie internetowej: http://www.omg.org/docs/ptc/03-10-14.pdf . 3. Information technology – Database languages – SQL 2003 – Part 2 : Foundation. 4. Information technology – Database languages – SQL 99 – Part 2 : Foundation 5. Poole J., Chang D., Tolbert D., Mellor D.:Common Warehouse Metamodel Developer’s Guide, Wiley Publishing, Inc., Indianapolis, Indiana. 6. Poole J., Chang D., Tolbert D., Mellor D.:Common Warehouse Metamodel John Wiley & Sons, Inc., New York 2002. 7. Warmer J., Kleppe A.: OCL precyzyjne modelowanie w UML, WNT, Warszawa 2003 8. Teorey T., Lightstone S., Nadeau T.: Database Modeling & Design: Logical Design, Elsevier Inc., 2006. 9. Muller R.: Bazy danych. Język UML w modelowaniu danych, Wydawnictwo Mikom 1999. 10. UML specification version 2.0. Wersja elektroniczna specyfikacji dostępna jest na stronie internetowej: http://www.uml.org/ 277 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 w da .b w w pl s. 278 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006