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