Systemy baz danych - wykład VIII - Instytut Informatyki Teoretycznej i
Transkrypt
Systemy baz danych - wykład VIII - Instytut Informatyki Teoretycznej i
Systemy baz danych wykład VII dr inż. Robert Perliński Systemy baz danych - wykład VIII ODBMS vs RDBMS Model obiektoworelacyjny dr inż. Robert Perliński SQL3 Typ obiektowy Metody obiektów Konstruktor Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Dziedziczenie Funkcje i operatory Typy referencyjne 15 stycznia 2017 Źródła Systemy baz danych - wykład VII 1/44 Plan wykładu Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie 1 ODBMS vs RDBMS 2 Model obiektowo-relacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Funkcje i operatory Typy referencyjne 3 Typy referencyjne Źródła 4 Źródła Systemy baz danych - wykład VII 2/44 Relacyjne bazy danych Systemy baz danych wykład VII Relacyjne bazy danych dr inż. Robert Perliński są oparte na relacyjnym modelu danych zaproponowanym przez E.F. Cood’a w 1970 r. Model ten organizuje dane w jedną lub więcej tabel (albo ”relacji”) składających się z wierszy i kolumn zawierających unikalny klucz dla każdego wiersza. ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła Relacja jest zdefiniowana jako zbiór krotek, które mają takie same atrybuty. Krotka zwykle reprezentuje obiekt i związane z nim informacje. Obiekty są zwykle obiektami fizycznymi/materialnymi albo pojęciami. Relace przedstawia się zwykle jako tabele, która jest zorganizowana w wiersze i kolumny. Wszystkie dane związane z konkretnym atrybutem mają tą samą dziedzinę i spełniają te same ograniczenia. Systemy baz danych - wykład VII 3/44 Zalety i wady modelu relacyjnego I Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny Zalety: intuicyjność modelu łatwość przejścia z systemów plików wykorzystanie wieloprocesorowości wieloplatformowość SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie zapytania równoległe zaawansowane metody optymalizacji Funkcje i operatory Typy referencyjne Źródła zaawansowane metody zabezpieczeń rozbudowany system transakcji Systemy baz danych - wykład VII 4/44 Zalety i wady modelu relacyjnego II Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny Wady: ubogi zestaw typów brak funkcji i procedur użytkownika problemy z hierarchizacją brak danych zagnieżdżonych SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne brak dziedziczenia niedopasowanie pomiędzy językiem operowania danymi a językami programowania aplikacji - niezgodność impedancji brak uwzględnienia czasu i wersji Źródła Systemy baz danych - wykład VII 5/44 Niezgodności Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła Systemy baz danych - wykład VII 6/44 Bazy zorientowane obiektowo Systemy baz danych wykład VII Obiektowa baza danych to system zarządzania bazą danych, w którym informacje są reprezentowane w postaci obiektów jak ma to miejsce w programowaniu obiektowym. dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła zapisanie wyniku pracy programistów w bazie danych jako obiektów, możliwość powielania lub zmiany istniejących obiektów wewnątrz bazy danych, pozwalają zachować spójność między jezykiem programowania i danymi przechowywanymi w bazie - ten sam model reprezentacji danych, Przykłady: Caché, Db4o, Versant Object Database, ObjectStore, Objectivity/DB, Matisse, ... Systemy baz danych - wykład VII 7/44 Model obiektowy Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny obiekt jako podstawowa składowa cechy obiektów: atrybuty i związki funkcjonalność obiektu: metody, tożsamość obiektu, hermetyczność obiektów, SQL3 Typ obiektowy klasy, Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła dziedziczenie: współdzielenie implementacji i relacja podtypu przeciążanie i dynamiczne wiązanie funkcjonalności obiektów Systemy baz danych - wykład VII 8/44 Zalety i wady modelu obiektowego I Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła Zalety: odzwierciedlenie dowolnych obiektów świata rzeczywistego w postaci złożonych typów możliwość wprowadzania agregacji i dziedziczenia zmniejszenie dystansu pomiędzy fazami analizy, projektowania i implementaci zwiększenie poziomu abstrakcji w myśleniu programistów i użytkowników dopasowanie, bądź osadzenie wewnątrz języków programowania aplikacji uwzględnienie informacji proceduralnej (metody) Systemy baz danych - wykład VII 9/44 Zalety i wady modelu obiektowego II Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy programista podczas programowania nie musi nic wiedzieć o bazie danych, operując na jej obiektach tak jak na obiektach/zmiennych programu duża elastyczność Wady: brak standaryzacji Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne problemy ze skalowalnością, niezawodnością i efektywnością słabo rozwinięta optymalizacja i zabezpieczenia Źródła Systemy baz danych - wykład VII 10/44 Stosowane rozwiązania Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny Najczęściej stosowane rozwiązania wśród SZBD: obiektowe bazy danych. postrelacyjne bazy danych - bazy relacyjne poszerzone o : SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie elementy obiektowości, obsługę xml, rozwiązania analityczne, zapytania historyczne, itd.... Funkcje i operatory Typy referencyjne Źródła Systemy baz danych - wykład VII 11/44 Obiektowo-relacyjne bazy danych ORDBMS I Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła ORDBMS Bazy tworzone w tym modelu są często nazywane rozszerzonymi bazami relacyjnymi, bądź postrelacyjnymi, czy hybrydowymi. Zapewniają: kolekcje (zbiory, wielozbiory, sekwencje, zagnieżdżone tablice, tablice o zmiennej długości, tabele obiektów), metody użytkownika (funkcje i procedury definiowane przez użytkownika w różnych językach C++, VisualBasic, Java, PL/SQL) przeciążanie funkcji, typy referencyjne, Systemy baz danych - wykład VII 12/44 Obiektowo-relacyjne bazy danych ORDBMS II Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory perspektywy obiektowe, hierarchie zbiorów danych, przystosowanie do multimediów (duże obiekty BLOB, CLOB i pliki binarne), dane przestrzenne (spatial), abstrakcyjne typy danych (ADT) język zapytań SQL3 zwany też ObjectSQL. Z modelu relacyjnego pozostawiają: architekturę klient/serwer, Typy referencyjne mechanizmy buforowania i indeksowania, Źródła przetwarzanie transakcji, optymalizację zapytań. Systemy baz danych - wykład VII 13/44 SQL3 I Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów SQL3 jest kontynuacją linii SQL-92, rozwijaną przez ANSI, komitet X3H2, oraz ISO. Standard języka SQL powstały w 1999 rozszerzony o kolejne rozwinięcia modelu relacyjnego: nowe typy danych: LOB (BLOB, CLOB; brak możliwości narzucenia ograniczenia UNIQUE, nie można go wykorzystać jako argumentu ORDER BY lub GROUP BY), BOOLEAN, ARRAY, ROW poszerzenie zakresu perspektyw poprzez, które można aktualizować dane Konstruktor Dziedziczenie Funkcje i operatory wprowadzenie zapytań rekurencyjnych Typy referencyjne punkty zachowania w transakcjach Źródła wprowadzenie ról dla użytkowników rozbudowa wyzwalaczy Systemy baz danych - wykład VII 14/44 SQL3 II Systemy baz danych wykład VII dr inż. Robert Perliński oraz o korzystanie z cech obiektowych modelu postrelacyjnego: ODBMS vs RDBMS strukturalne typy definiowane przez użytkownika (z metodami, dziedziczeniem, podtypami) Model obiektoworelacyjny funkcje i procedury pisane w innych językach SQL3 Typ obiektowy tabele obiektów Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory typy referencyjne - odnośniki do obiektów, niepowtarzalne i niemodyfikowalne Typy referencyjne Źródła Systemy baz danych - wykład VII 15/44 SQL3 - rozszerzenia obiektowe Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła Typy definiowane przez użytkownika (abstrakcyjne typy danych - ADT, nazwane typy wierszy, oraz typy rozróżnione (distinct)) Konstruktory typów dla wierszy (row types) i referencji (reference types) Konstruktory typów dla kolekcji: zbiorów, list (sekwencji) i wielozbiorów Definiowane przez użytkownika funkcje i procedury Wspomaganie dla dużych obiektów (Binary Large OBject BLOB, Character Large OBject - CLOB) Wbudowane typy skalarne Systemy baz danych - wykład VII 16/44 Typ obiektowy Systemy baz danych wykład VII dr inż. Robert Perliński Typ obiektowy (inaczej klasa) łączy w sobie atrybuty oraz metody. ODBMS vs RDBMS Typy obiektowe można wykorzystać w blokach PL/SQL a także w definicji kolumn i tabel. Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Wykorzystanie obiektu wymaga najpierw zadeklarowania jego typu w bazie danych. Obiekty mogą być: Konstruktor trwałe (zapisywane w bazie danych), nietrwałe (przechowywane tylko z zmiennych języka PL/SQL). Dziedziczenie Funkcje i operatory Typy referencyjne Źródła Typ obiektowy dzieli się na specyfikację oraz ciało. Systemy baz danych - wykład VII 17/44 Typ obiektowy Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Definicja typu obiektowego ma następującą postać: CREATE [OR REPLACE] TYPE nazwa_typu { { AS | IS } OBJECT | UNDER nazwa_typu_macierzystego } ( atrybut1 typ1 [, atrybut2 typ2]... [,[ [NOT] OVERRIDING ] [ [NOT] FINAL ] [ [NOT] INSTANTIABLE ] { MEMBER | STATIC } specyfikacja_metody, ..., ] ) [ [NOT] FINAL ] [ [NOT] INSTANTIABLE ]; Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła Specyfikacja metody ma postać: PROCEDURE nazwa_procedury (par1 typ1 [, par2 typ2 ]...) FUNCTION nazwa_funkcji (par1 typ1 [, par2 typ2 ]...) RETURN typ_zwracany Systemy baz danych - wykład VII 18/44 NOT FINAL, NOT INSTANTIABLE Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory FINAL vs NOT FINAL: typy - na końcu definicji metody - na początku definicji, przed nazwą INSTANTIABLE vs NOT INSTANTIABLE typy - na końcu definicji metody - na początku definicji, przed nazwą Typy referencyjne Źródła Systemy baz danych - wykład VII 19/44 Typ obiektowy - przykład Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła CREATE OR REPLACE TYPE t_adres AS OBJECT ( kod VARCHAR2(6), miasto VARCHAR2(50), ulica VARCHAR2(100) ); CREATE OR REPLACE TYPE t_ulamek AS OBJECT ( licznik NUMBER(4), mianownik NUMBER(4), MEMBER PROCEDURE skroc ); DESCRIBE nazwa_typu; DROP TYPE nazwa_typu; Systemy baz danych - wykład VII 20/44 Tabele obiektów, tabele zawierające obiekty I Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor ROW OBJECT tabela “jednokolumnowa” - wiersze to obiekty OID - identyfikator obiektu (automatycznie nadawany) COLUMN OBJECT tabela wielokolumnowa - obiekt jako atrybut Dziedziczenie Funkcje i operatory obiekt jako atrybut innego obiektu Typy referencyjne Źródła Systemy baz danych - wykład VII 21/44 Tabele obiektów, tabele zawierające obiekty II Systemy baz danych wykład VII dr inż. Robert Perliński Tabele obiektów: CREATE TABLE nazwa OF nazwa_typu; ODBMS vs RDBMS np.: Model obiektoworelacyjny CREATE TABLE adresy OF t_adres; SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie INSERT INTO adresy VALUES ( t_adres('42-200', 'Częstochowa', 'Dąbrowskiego 69')); Funkcje i operatory Typy referencyjne Źródła SELECT * FROM adresy; 42-200 Systemy baz danych - wykład VII Częstochowa Dąbrowskiego 69 22/44 Tabele obiektów, tabele zawierające obiekty III Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny Tabela z kolumnami obiektowymi: CREATE TABLE osoba ( pesel NUMBER(11) PRIMARY KEY, nazwisko VARCHAR2(50), imie VARCHAR2(30), adres_zam t_adres ); SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne INSERT INTO osoba VALUES (12345678901, 'Kowalski', 'Jan', t_adres('42-200', 'Częstochowa', 'Dąbrowskiego 69')); SELECT * FROM osoba; Źródła 12345678901 Systemy baz danych - wykład VII Kowalski Jan [USRSCHEMA.T ADRES] 23/44 Metody obiektów Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny Składnia ciała typu obiektowego ma postać: CREATE [OR REPLACE] TYPE BODY nazwa_typu { IS | AS } { MEMBER | STATIC } implementacja_metody [; { MEMBER | STATIC } implementacja_metody ]... END; Składnia implementacji metody jest następująca: SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie PROCEDURE nazwa_procedury (par1 typ1[, par2 typ2 ]...) { IS | AS } pl/sql_block Funkcje i operatory Typy referencyjne FUNCTION nazwa_funkcji (par1 typ1[, par2 typ2 ]...) RETURN typ_zwracany { IS | AS } pl/sql_block Źródła Systemy baz danych - wykład VII 24/44 Metody obiektów - przykład I Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła CREATE OR REPLACE TYPE t_ulamek AS OBJECT ( licznik NUMBER(4), mianownik NUMBER(4), MEMBER PROCEDURE skroc ); / CREATE OR REPLACE TYPE BODY t_ulamek AS MEMBER PROCEDURE skroc IS dz NUMBER; BEGIN dz := GCD(licznik, mianownik); licznik := licznik/dz; mianownik := mianownik/dz; END skroc; END; / Systemy baz danych - wykład VII 25/44 Metody obiektów - przykład II Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie DECLARE u t_ulamek; BEGIN u := t_ulamek(32,144); DBMS_OUTPUT.put_line(u.licznik||'/'||u.mianownik); --32/144 u.skroc; DBMS_OUTPUT.put_line(u.licznik||'/'||u.mianownik); --2/9 END; / Funkcje i operatory Typy referencyjne Źródła Systemy baz danych - wykład VII 26/44 Konstruktor typów obiektowych Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła Każdy typ obiektowy ma konstruktor, funkcję o takiej samej nazwie jak obiekt typu. Konstruktor inicjalizuje i zwraca nową instancję obiektu danego typu. Konstruktory generowane są domyślnie dla każdego typu. Zawierają listę parametrów formalnych zgodną z porządkiem, nazwami i typami atrybutów typu. Można definiować własne konstruktory zastępując istniejące albo przeładowując je podając inną listę parametrów. Konstruktory trzeba wywoływać jawnie. Systemy baz danych - wykład VII 27/44 Konstruktor - przykład Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła CREATE OR REPLACE TYPE prostokat AS OBJECT ( dlugosc NUMBER, szerokosc NUMBER, pole NUMBER, -- Konstruktor z dwoma parametrami CONSTRUCTOR FUNCTION prostokat(dlugosc NUMBER, szerokosc NUMBER) RETURN SELF AS RESULT ); CREATE OR REPLACE TYPE BODY prostokat AS CONSTRUCTOR FUNCTION prostokat(dlugosc NUMBER, szerokosc NUMBER) RETURN SELF AS RESULT AS BEGIN SELF.dlugosc := dlugosc; SELF.szerokosc := szerokosc; -- Pole wyznaczane zamiast podawania jawnego w konstruktorze SELF.pole := dlugosc * szerokosc; RETURN; END; END; Systemy baz danych - wykład VII 28/44 Konstruktor - przykład II Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory DECLARE p1 prostokat; p2 prostokat; BEGIN -- Użycie konstruktora domyślnego p1 := NEW prostokat(10,20,200); -- Użycie własnego konstruktora p2 := NEW prostokat(10,20); DBMS_OUTPUT.put_line(p1.pole||' '||p2.pole); -- 200 200 END; Typy referencyjne Źródła Systemy baz danych - wykład VII 29/44 Dziedziczenie I Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy W PL/SQL jest obsługa pojedynczego dziedziczenia. Domyślnie każdy typ jest samodzielny - nie dziedziczy po innym typie. Dziedziczenie z typu macierzystego określamy słowem kluczowym UNDER. Typ macierzysty musi zawierać klausuję NOT FINAL. Domyślnie typy obiektowe są traktowane jako FINAL. Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła Typ potomny oprócz atrybutów i metod typu podstawowego może zawierać też dodatkowe atrybuty i metody. Możliwe jest nadpisanie metod z typu bazowego. Zmiana typu bazowego wpływa na typy potomne. Systemy baz danych - wykład VII 30/44 Dziedziczenie II Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Domyślnie typ obiektowy jest INSTANTIABLE - można na jego podstawie tworzyć obiekty. Typ NOT INSTANTIABLE jest typem abstrakcyjnym - nie można tworzyć obiektów, wykorzystywany tylko w hierarhii dziedziczenia. Typy abstrakcyjne nie mają konstruktora. Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła Polimorfizm dynamiczny - domyślnie wywoływana jest metoda z odpowiedniej klasy w herarchii dziedziczenia. Można wymusić wywołanie metody typu macierzystego. Systemy baz danych - wykład VII 31/44 Specyfikacja metod - FINAL, INSTANTIABLE Systemy baz danych wykład VII Definicję metody w ramach podtypu: można odziedziczyć - żadnych dodatkowych poleceń, przeładować - taka sama nazwa metod ale inna sygnatura, przesłonić - potrzeba druga definicja o takiej samej nazwie i zestawie parametrów. dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny W przesłanianiu metody wykorzystujemy słowo kluczowe OVERRIDING (klasa bazowa nie może być FINAL). SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Klauzula INSTANTIABLE - wymagana definicja metody, nawet jeżeli typ jest abstrakcyjny. Klauzula NOT INSTANTIABLE metody: Typy referencyjne Źródła Systemy baz danych - wykład VII cały typ musi być abstrakcyjny (NOT INSTANTIABLE), podajemy tylko specyfikację metody, podtypy typu bazowego musi zawierać implementację metody albo określać ją jako NOT INSTANTIABLE. 32/44 Dziedziczenie - przykład I Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Bazowa klasa abstrakcyjna figura, dziedziczą z niej: kolo kwadrat --klasa abstrakcyjna CREATE TYPE figura AS OBJECT ( typ VARCHAR2(10), NOT INSTANTIABLE MEMBER FUNCTION pole RETURN FLOAT ) NOT INSTANTIABLE NOT FINAL; Źródła Systemy baz danych - wykład VII 33/44 Dziedziczenie - przykład II Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła -- klasa dziedzicząca CREATE OR REPLACE TYPE kolo UNDER figura ( promien FLOAT, OVERRIDING MEMBER FUNCTION pole RETURN FLOAT ); -- redefinicja CREATE OR REPLACE TYPE BODY kolo AS OVERRIDING MEMBER FUNCTION pole RETURN FLOAT IS BEGIN RETURN 3.14159265358979 * promien * promien; END; END; Systemy baz danych - wykład VII 34/44 Dziedziczenie - przykład III Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła -- klasa dziedzicząca CREATE OR REPLACE TYPE kwadrat UNDER figura ( dl_boku FLOAT, OVERRIDING MEMBER FUNCTION pole RETURN FLOAT ); -- redefinicja CREATE OR REPLACE TYPE BODY kwadrat AS OVERRIDING MEMBER FUNCTION pole RETURN FLOAT IS BEGIN RETURN dl_boku * dl_boku; END; END; Systemy baz danych - wykład VII 35/44 Dziedziczenie - przykład IV Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny -- tabela obiektów CREATE TABLE figury OF figura; INSERT INTO figury VALUES(kolo('kolo',10) ); INSERT INTO figury VALUES(new kwadrat('kwadrat',10) ); INSERT INTO figury VALUES(new kwadrat('inny_kw',12) ); SQL3 Typ obiektowy Metody obiektów SELECT * FROM figury; Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła kolo kwadrat inny kw Systemy baz danych - wykład VII 36/44 Funkcje i operatory Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy TREAT - funkcja umożliwiająca rzutowanie na typy macierzyste, a także do typów potomnych: TREAT(obiekt AS [REF] typ) IS [NOT] OF - operator pozwalający na rozpoznanie typu obiektu niższego w hierarchii dziedziczenia, zwraca [nie] prawdę, jeśli obiekt jest określonego typu pochodnego Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne VALUE() - pobiera alias tabeli obiektowej i zwraca instancje obiektu będącego wierszem zamiast zestawu kolumn Źródła Systemy baz danych - wykład VII 37/44 Dziedziczenie - przykład V I Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów -- INSERT INTO figury VALUES(kolo('kolo',10) ); -- INSERT INTO figury VALUES(new kwadrat('kwadrat',10) ); -- INSERT INTO figury VALUES(new kwadrat('inny_kw',12) ); -- koła i kwadraty SELECT Value(f) FROM figury f; [USRSCHEMA.KOLO] [USRSCHEMA.KWADRAT] [USRSCHEMA.KWADRAT] Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne -- same kwadraty SELECT Value(f) FROM figury f WHERE Value(f) IS OF (kwadrat); Źródła [USRSCHEMA.KWADRAT] [USRSCHEMA.KWADRAT] Systemy baz danych - wykład VII 38/44 Dziedziczenie - przykład VI Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy -- INSERT INTO figury VALUES(kolo('kolo',10) ); -- INSERT INTO figury VALUES(new kwadrat('kwadrat',10) ); -- INSERT INTO figury VALUES(new kwadrat('inny_kw',12) ); -- szczegółowe dane SELECT typ, Treat(Value(f) AS kwadrat).dl_boku AS bok, Treat(Value(f) AS kolo).promien AS promien, f.pole() AS pole FROM figury f; Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła TYP kolo kwadrat inny kw Systemy baz danych - wykład VII BOK (null) 10 12 PROMIEN 10 (null) (null) POLE 314,159265358979 100 144 39/44 Typy referencyjne I Systemy baz danych wykład VII dr inż. Robert Perliński OID ODBMS vs RDBMS REF identyfikator obiektu wierszowego logiczny wskaźnik do obiektowych wierszy umożliwia stworzenie relacji pomiędzy obiektami różnych typów umożliwia tworzenie relacji jeden do wielu Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie DEREF Funkcje i operatory Typy referencyjne operator umożliwiający dostęp do obiektu wskazywanego przez REF Źródła Systemy baz danych - wykład VII 40/44 Modelowanie związków - typy referencyjne I Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie CREATE TYPE t_osoba AS OBJECT ( imie VARCHAR2(10), nazwisko VARCHAR2(20) ); -- tabela realizująca związek to tabeli osoby CREATE TYPE t_obraz AS OBJECT ( utworzony DATE, autor REF t_osoba ); Funkcje i operatory Typy referencyjne Źródła -- tabele obiektowe CREATE TABLE osoby OF t_osoba; CREATE TABLE obrazy OF t_obraz; Systemy baz danych - wykład VII 41/44 Modelowanie związków - typy referencyjne II Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny INSERT INTO osoby VALUES ('Jan','Kowalski'); INSERT INTO osoby VALUES ('Bartosz','Nowak'); INSERT INTO obrazy SELECT Current_date, Ref(o) FROM osoby o WHERE nazwisko LIKE 'Kowalski'; INSERT INTO obrazy SELECT Current_date, Ref(o) FROM osoby o WHERE nazwisko LIKE 'Nowak'; SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory SELECT * FROM obrazy; SELECT autor.imie FROM obrazy; -- BŁĄD SELECT utworzony, DEREF(autor).imie, DEREF(autor).nazwisko FROM obrazy; Typy referencyjne Źródła 15/04/16 15/04/16 Systemy baz danych - wykład VII [USRSCHEMA.T OSOBA] [USRSCHEMA.T OSOBA] 15/04/16 15/04/16 Jan Bartosz Kowalski Nowak 42/44 Źródła I Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów W wykładzie wykorzystano materiały: http://www.eyedb.org/wp-content/uploads/ documentation/manual/html/ODL/node2.html http://db.apache.org/jdo/index.html Materiały do wykładów Pani mgr. Wandy Kik fatcat.ftj.agh.edu.pl/~mariosh/DB_II/ ObjectRelationalOracle.pdf Konstruktor Dziedziczenie http://www.cs.put.poznan.pl/mmorzy/ Funkcje i operatory Typy referencyjne Źródła http://www.ipipan.waw.pl/~subieta/prezentacje/ Obiektowe%20bazy%20danych%20kontra% 20relacyjne%201997.ppt Systemy baz danych - wykład VII 43/44 Źródła II Systemy baz danych wykład VII dr inż. Robert Perliński ODBMS vs RDBMS Model obiektoworelacyjny SQL3 Typ obiektowy Metody obiektów Konstruktor Dziedziczenie Funkcje i operatory Typy referencyjne Źródła C.Zaniolo, S.Ceri, Ch.Faloutsos, R.T. Snodgrass, V. S. Subrahmanian, R.Zicari, Advanced Database Systems, Morgan Kaufmann, 1997 http://putwiki.azurewebsites.net/index.php? title=Kategoria: Zaawansowane_systemy_baz_danych http://wazniak.mimuw.edu.pl/index.php?title= Zaawansowane_systemy_baz_danych ”O modelach danych i innych rzeczach, które utrudniają życie informatykom” Krzysztof Goczyła, VI Konferencja PLOUG 2000 M. Lentner, Oracle 9i Kompletny podręcznik użytkownika, PJWSTK - W-wa, 2003 Systemy baz danych - wykład VII 44/44