1 / 25

Zsbd Obiektowo – relacyjne Bazy danych

Zsbd Obiektowo – relacyjne Bazy danych. Wykład 7 Prowadzący: dr Paweł Drozda. Program wykładu. Informacje ogólne Definicja danych Dziedziczenie Modelowanie związków między obiektami. Wprowadzenie. Zaproponowane w celu rozszerzenia funkcjonalności relacyjnych baz danych

kolya
Download Presentation

Zsbd Obiektowo – relacyjne Bazy danych

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ZsbdObiektowo – relacyjne Bazy danych Wykład 7 Prowadzący: dr Paweł Drozda

  2. Program wykładu • Informacje ogólne • Definicja danych • Dziedziczenie • Modelowanie związków między obiektami dr P. Drozda

  3. Wprowadzenie • Zaproponowane w celu rozszerzenia funkcjonalności relacyjnych baz danych • Główna koncepcja – dodanie funkcjonalności obiektowych do istniejących relacyjnych DBMS • Główne elementy dodane do RDBMS • Procedury, funkcje • Możliwość definicji nowych również złożonych typów danych • Definicja obiektowych i referencyjnych typów danych • Dziedziczenie, polimorfizm • Standard obejmujący rozszerzenia – SQL3 dr P. Drozda

  4. Zalety • Brak konieczności zmiany całego systemu relacyjnego • Standard SQL3 kompatybilny z SQL2 • Możliwość definiowania funkcji ogólnie dostępnych dr P. Drozda

  5. Definiowanie typu obiektów • Składnia createtypeNazwaTypu as object (definicja danych); • Przykład CREATE TYPE punkt AS OBJECT ( X float, Y float); CREATE TYPE odcinek AS OBJECT( P1 punkt, P2 punkt); CREATE TYPE tabela IS TABLE OF punkt; CREATE TYPE wielokat AS OBJECT( zbiorPunktow tabela); dr P. Drozda

  6. Metody obiektów • Podobnie jak w obiektowych BD możliwość przypisania metody • Deklaracja metody w nagłówku typu obiektu • Deklaracja zachowania metody w ciele • Przykład CREATE TYPE odcinek (p1 punkt, p2 punkt, MEMBER PROCEDURE nowyKoncowy(p punkt), MEMBER FUNCTION dlugosc RETURN FLOAT); dr P. Drozda

  7. Przykład ciąg dalszy CREATE TYPE BODY odcinek MEMBER PROCEDURE nowyKoncowy(p punkt) IS BEGIN p2:=p; END nowyKoncowy; MEMBER FUNCTION dlugosc RETURN FLOAT IS BEGIN RETURN sqrt(power(self.p1.x-self.p2.x,2)+power(self.p1.y-self.p2.y,2)); END; END; dr P. Drozda

  8. Konstruktory • Funkcje deklarowanie w specyfikacji typu – CONSTRUCTOR FUNCTION • Nazwa funkcji taka sama jak nazwa typu • Służą do określenia w jaki sposób tworzone są obiekty danego typu • Parametry przekazywane tak jak w normalnych funkcjach • Funkcjonalność implementowana w ciele typu • Jako typ zwracany – RETURN SELF AS RESULT Przykład: CREATE TYPE kula AS OBJECT ( …, CONSTRUCTOR FUNCTION kula (promiennumber) RETURN SELF AS RESULT,…); dr P. Drozda

  9. Dziedziczenie • Składnia CREATE TYPE nazwa UNDER rodzic (…); • Przykład CREATE TYPE osoba AS OBJECT ( imie varchar2(20), nazwisko varchar2(20), dataUrodzenia date, MEMBER FUNCTION wiek RETURN number) not final; CREATE TYPE student UNDER osoba ( numerIndeksu char(6), rokStudiow number); dr P. Drozda

  10. Typy, metody abstrakcyjne • Definiowane za pomocą – not instantiable • Typy • Nie można na ich podstawie tworzyć tabel • not instantiable – po definicji całego typu • Metody • Tylko definicja nagłówka – bez ciała • Musi zostać nadpisana w podklasie • not instantiable – przed słowem member dr P. Drozda

  11. Nadpisywanie metod • Za pomocą słowa overridingprzed słowem member • Przy wywołaniu metody – zostanie wywołana metoda nadpisująca Przykład CREATE OR REPLACE TYPE bryla AS OBJECT( Typ VARCHAR(20), NOT INSTANTIABLE MEMBER PROCEDURE skaluj (n number), NOT INSTANTIABLE MEMBER FUNCTION powierzchnia RETURN NUMBER, NOT INSTANTIABLE MEMBER FUNCTION objetosc RETURN NUMBER) NOT INSTANTIABLE NOT FINAL; dr P. Drozda

  12. Przykład ciąg dalszy CREATE OR REPLACE TYPE kula UNDER bryla( x FLOAT, y FLOAT, z FLOAT, r FLOAT, OVERRIDING MEMBER PROCEDURE skaluj (n number), OVERRIDING MEMBER FUNCTION powierzchnia RETURN NUMBER, OVERRIDING MEMBER FUNCTION objetosc RETURN NUMBER); CREATE OR REPLACE TYPE BODY kula AS OVERRIDING MEMBER PROCEDURE skaluj (n number) IS BEGIN SELF.r := self.r *n; END; OVERRIDING MEMBER FUNCTION powierzchnia RETURN NUMBER IS BEGIN RETURN 4*3.14 * self.r *self.r; END; OVERRIDING MEMBER FUNCTION objetosc RETURN NUMBER IS BEGIN RETURN 4/3*3.14*power(self.r,3); END; END; dr P. Drozda

  13. Tabele obiektów • Obiekty gromadzone są w tabelach • Tworzenie tabeli obiektów: CREATE TABLE nazwaTabeli OF nazwaTypuObiektu; Przykład CREATE TABLE kule OF kula; • Wstawianie obiektów do tabeli INSERT INTO kule VALUES(‘kulka’,1,2,3,9); INSERT INTO kule VALUES(kula(‘pilka’,1,1,1,2)); INSERT INTO odcinki VALUES (new odcinek(new punkt(1,1), new punkt(2,2))); • Obiekt otrzymuje identyfikator, który można odczytać za pomocą ref(obiekt) • Odczyt wartości value(obiekt), bądź poszczególne pola, metody: obiekt.pole, obiekt.metoda • Co z ALTER TABLE????? dr P. Drozda

  14. Heterogeniczne tabele • Zawierają dane o różnych typach (np. tabela na podstawie typu bryły – zawiera kule i inne) • Wstawianie CREATE TABLE bryly OF bryla; INSERT INTO bryly VALUES(new kula(1,1,1,2)); INSERT INTO bryly VALUES(new szescian(3)); INSERT INTO bryly VALUES(new prostopadloscian(2,3,4)); dr P. Drozda

  15. Typ danych REF • Umożliwia zapisywanie wskaźników do obiektów wierszy • Stosowany do określenia związku pomiędzy obiektami • Wartości typu REF – identyfikatory obiektów powiązanych • Związki REF jednokierunkowe (inaczej niż w obiektowych) dr P. Drozda

  16. Przykład REF CREATE TYPE nauczyciel AS OBJECT( imie VARCHAR2(20), nazwisko VARCHAR2(20)); CREATE TYPE przedmiot AS OBJECT( nazwa VARCHAR2(20), prowadzacy REF nauczyciel); CREATE TABLE profki OF nauczyciel; CREATE TABLE przedmioty OF przedmiot; • Wstawianie do tabeli z referencją INSERT INTO profki VALUES (‘Stefan’,’Batory’); INSERT INTO przedmioty SELECT ‘bazy danych’, ref(p) FROM profki p WHERE imie=‘Stefan’ dr P. Drozda

  17. Związki dwustronne • Zastosowanie niekompletnych definicji typów • Przykład CREATE TYPE nauczyciel; CREATE TYPE lista AS TABLE OF uczen; CREATE TYPE klasa AS OBJECT ( nazwa VARCHAR2(30), wychowawca REF nauczyciel, uczniowie lista); CREATE TYPE nauczyciel AS OBJECT ( nazwisko VARCHAR2(30), wychowuje REF klasa); dr P. Drozda

  18. Związki wielowartościowe • Konieczna deklaracja tabeli o dowolnej liczbie elementów zawierającej dane typu REF nazwaTypu • Przykład createtype student; create type listaStudentow AS TABLE OF REF student; createtype przedmiot AS object( nazwa varchar2(20), grupa listaStudentow); createtypelistaPrzedmiotow AS TABLE OF REF przedmiot; createtype student AS object( nazwisko varchar2(20), przedmioty listaPrzedmiotow ); dr P. Drozda

  19. Związki wielowartościowe w tabelach • konieczne dodanie zagnieżdżonej tabeli w definicji tabeli ze związkiem wielowartościowym CREATE TABLE studenci OF student NESTED TABLE przedmioty STORE AS przed; INSERT INTO studenci VALUES(‘tomasz’,NULL); INSERT INTO przedmioty SELECT ‘bazy danych’, ListaStudentow(ref(s)) FROM studenci s; INSERT INTO studenci VALUES(‘bolek’,NULL); INSERT INTO TABLE (SELECT grupa FROM przedmioty WHERE nazwa=‘bazy danych’) (SELECT ref(s) FROM studenci s WHERE nazwisko=‘bolek’); dr P. Drozda

  20. Tworzenie zapytań • Wszystkie elementy z tabeli – użycie gwiazdki • odwołanie do poszczególnych kolumn – poprzez ustawienie aliasu do tabeli i odwołanie przez alias • Specjalne wartości obiektów: • ref(o) – identyfikator obiektu • value(o) – wartość obiektu • Przykład: SELECT * FROM kule; SELECT value(k), ref(k) FROM kule k; SELECT * FROM studenci WHERE nazwisko =‘bolek’; SELECT * FROM przedmioty WHERE nazwa = ‘bazy danych’; dr P. Drozda

  21. Tworzenie zapytań - cd • Gdy wybieramy element z nadklasy – pokazuje nam wszystko z podklas SELECT * FROM bryly; SELECT value(b) FROM bryly b; • Ograniczenie do podklasy – „IS OF” SELECT value(b) FROM bryly b WHERE value(b) IS OF (kula); • Odwołanie do metod – alias.nazwaMetody SELECT b.powierzchnia(), b.objetosc() FROM bryly b; (wyniki są pokazane dla wszystkich podklas) dr P. Drozda

  22. Zapytania „nested tables”, ścieżki • odwołanie do tabeli zagnieżdżonych z referencjami za pomocą COLUMN_VALUE SELECT s.COLUMN_VALUE.nazwisko FROM przedmioty p, table(p.grupa) s; • odwołanie do tabeli zagnieżdżonych bez referencji – przez ścieżki (tabela wielokąty składa się z punktów) SELECT z.x FROM wielokaty w, table(w.zbiorpunktow) z; • Ścieżki - poprzez kropkę odwołanie do podtypu Przykład (trójkąt złożony z 3 punktów p1,p2,p3 każdy punkt ma współrzędne x,y) SELECT t.p1.x, t.p1.y FROM trojkaty t; - wypisze współrzędne punktów p1 dla wszystkich trójkątów dr P. Drozda

  23. Modyfikacja typu • ALTER TYPE nazwa opcje • ADD MEMBER I CONSTRUCTOR FUNCTION|PROCEDURE – dodanie funkcji, procedury • DROP MEMBER I CONSTRUCTOR FUNCTION|PROCEDURE – usunięcie metody • ADD ATTRIBUTE – dodanie atrybutu (może być więcej niż 1) • MODIFY ATTRIBUTE– zmiana definicji elementu • DROP ATTRIBUTE – usunięcie atrybutu • Parametr CASCADE – zmiany wprowadzone we wszystkich elementach do których odwołuje się dany typ • Parametr INVALIDATE – zmiany niewprowadzane do elementów pochodnych dr P. Drozda

  24. Przykład ALTER TYPE student ADD ATRIBUTE rok NUMBER CASCADE; ALTER TYPE student ADD ATTRIBUTE miasto VARCHAR2(7) CASCADE; ALTER TYPE student DROP ATTRIBUTE rok CASCADE; ALTER TYPE student MODIFY ATTRIBUTE miasto VARCHAR2(70) INVALIDATE; dr P. Drozda

  25. Usuwanie typu • Można usunąć tylko, gdy do niczego się nie odwołuje DROP TYPE nazwaTypu; • Co zrobić gdy typy odwołują się cyklicznie? Opcja FORCE dr P. Drozda

More Related