Wykład 8 Wojciech Pieprzyca Systemy Baz Danych Wykład 8 Wojciech Pieprzyca
Model relacyjny Dane umieszczone są w tabelach w postaci wierszy, które składają się z się z określonej ilości pól. Można korzystać tylko z typów predefiniowanych – wbudowanych w dany SZBD. Zalety: Model ten jest dokładnie zbadany i opiera się na rozbudowanych podstawach teoretycznych, Wykorzystanie języka SQL pozwala na budowę złożonych zapytań z grupowaniem i agregowaniem danych włącznie, Model ten jest niezależny od jakiegokolwiek języka programowania
Model relacyjny Wady: Modelowanie bardziej złożonych elementów rzeczywistości wymaga zaprojektowania i używania dużej liczby tabel, Brak możliwości definiowania własnych typów danych, Nienaturalna współpraca z językami programowania wysokiego poziomu, które obecnie w większości opierają się na obiektowym paradygmacie programowania. Trudności w modelowaniu związków wiele do wielu (N:M). Konieczność ich rozłożenia na związki jeden do wielu 1:N.
Model obiektowy Obiektowe bazy danych łączą własności obiektowości i obiektowych języków programowania z możliwościami systemów bazodanowych. Model danych wykorzystujący takie elementy jak klasy, atrybuty, metody. Zakłada hermetyzacje danych oraz metod, a także możliwość dziedziczenia. Język obiektowy jest językiem służącym zarówno do programowania jak i operowania na bazie danych, zapewniając możliwość powiązania danych z obiektami w projektowanej aplikacji.
Model obiektowy Obiekt w bazie reprezentuje obiekt w świecie rzeczywistym. W modelu tym istnieje możliwość definiowania własnych, złożonych typów danych oraz pisania procedury (metod) i operatorów do manipulowania tymi danymi w sposób obiektowy.
Model obiektowy Zalety: generalnie wszystkie zalety modelu obiektowego, bezpośrednie odzwierciedlenie obiektów modelowanej rzeczywistości, możliwość definiowania własnych typów danych, łatwość działania na złożonych obiektach, reprezentacja złożonych zależności pomiędzy obiektami, ujednolicone podejście do analizy, projektowania i implementacji systemów bazodanowych i aplikacji.
Model obiektowy Wady: brak jednego, akceptowanego języka zapytań, problemy z optymalizacją zapytań, brak szerokiego wykorzystania dla celów komercyjnych, niepewność co do skali zastosowań w przyszłości.
Model OMDG Model OMDG (Object Database Management Group) został przedstawiony jako standard definiowania i operowania na obiektowych bazach danych. Standard ten składa się z 4 części: Opis modelu obiektowego – słowny opis właściwości i pojęć modelu obiektowej bazy danych, ODL (Object Definition Language) – język definicji schematu obiektowej bazy danych, służy do definiowania klas (atrybutów, relacji, metod) i interfejsów obiektowej bazy danych, OQL (Object Query Language) – język zapytań do obiektowej bazy danych, OML (Object Manipulation Language) – zawiera instrukcje modyfikacji danych, znajdujących się w postaci obiektowej
ODL class nazwa { //definicje atrybutów //definicje relacji //definicje metod } Definicje atrybutów – określają nazwę i typ atrybutu. Typ może być: prosty (np. liczba Integer, ciąg znaków String, itp.) attribute String nazwisko; złożony – składający się z grupy obiektów np. zbiór attribute set<Float> pensje;
ODL Definicje relacji - określa nazwę związku, typ związku oraz odwołanie do związku zwrotnego (występującego w klasie do której tworzone jest połączenie). class pracownik { attribute String nazwisko; attribute String imie; attribute set<Float> pensje; attribute struct Adres{String ulica, String miasto} adres; relationship set<Firma> pracujeW inverse Firma::jestPracownikiem } Definicje metod – standardowa definicja znana z języków obiekt. void dodaj (in Firma f) { … }
OQL OQL jest językiem deklaratywnym opartym na standardzie SQL92 umożliwiającym zadawanie zapytań do obiektowej bazy danych. W poleceniu select określa się strukturę oczekiwanego wyniku, nazwy klas obiektów z których pobierane są wyniki oraz ewentualne warunki ograniczające po kluzuli where. select struct(imie:p.imie, nazwisko:p.nazwisko, ulica:p.adres.ulica, miasto:p.adres.miasto ) from p in Pracownicy where p.wiek()>30 Złączenia strukturalne (wynikające ze związków określonych w klasach) select struct(imie:p.imie, nazwisko:p.nazwisko, nazwa:f.nazwa, miasto:f.miasto) from p in Pracownicy, f in p.pracujeW
DB4O System zarządzania bazą danych DB4O dostarcza zawiera biblioteki umożliwiające tworzenie i operowanie na obiektowych bazach danych. Możliwe jest tworzenie aplikacji dwojakiego rodzaju: jednostanowiskowych – baza danych znajduje się w pliku i jest wykorzystywana w danym czasie tylko przez jednego użytkownika, wielostanowiskowych – baza danych jest udostępniona na zasadach architektury klient-serwer, możliwy jest współbieżny dostęp wielu użytkowników jednocześnie.
Obiektowo-relacyjne bazy danych Bazy obiektowo-relacyjne wywodzą się z baz czysto relacyjnych, które stopniowo były uzupełniane o elementy obiektowości takie jak: - możliwość tworzenia procedur, możliwość definiowania własnych typów danych, dziedziczenie typów danych, definiowanie złożonych struktur danych. SZBD umożliwiające wykorzystanie elementów obiektowych to np. Oracle, PostgreSQL.
Obiektowo-relacyjne bazy danych Definiowanie typów danych create type Point as object //nowy typ danych (x int, y int, member procedure move(dx int, dy int)); create type body Point as //definicja procedury move member procedure move(dx int, dy int) is begin self.x := self.x + dx; self.y := self.y + dy; end move; end;
Obiektowo-relacyjne bazy danych Dziedziczenie typów danych create type Figure as object (type varchar(20), not instantiable member function area return Float;) not instantiable not final; //typ abstrakcyjny, bazowy Klasa Figure będzie typem bazowym dla dalej zdefiniowanego typu pochodnego Triangle. Typ pochodny dziedziczy atrybuty oraz procedury zdefiniowane w typie bazowym oraz umożliwia zdefiniowanie nowych atrybutów i procedur/funkcji, a także definiowanie kodu odziedziczonych procedur/funkcji abstrakcyjnych.
Obiektowo-relacyjne bazy danych Dziedziczenie typów danych create type Triangle under Figure ( p1 Point, p2 Point, p3 Point, overriding member function area return Float ); Typ Triangle jest typem pochodnym wobec typu bazowego Figure. W ramach typu Triangle zaimplementowano definicję funkcji area odziedziczonej po typie triangle (powyżej przedstawiono jedynie nagłówek tej funkcji).
Obiektowo-relacyjne bazy danych Tabele przechowujące obiekty //utworzenie tabeli przechowującej obiekty typu Triangle create table Triangle of Triangle; //wstawienie obiektu do tabeli insert into Triangle values (new Triangle(new Point(0,0), new Point (0,10), new Point(10,10))); Powyżej wywoływany jest konstruktor typu danych Triangle, który zawiera zagnieżdżone wywołania konstruktora obiektu składowego Point.