Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

objekt-relationale Datenbanken

Ähnliche Präsentationen


Präsentation zum Thema: "objekt-relationale Datenbanken"—  Präsentation transkript:

1 objekt-relationale Datenbanken
objekt-relationale Datenbanken Die objekt-relationale Datenbank ORACLE 9i

2 Konzepte von Oracle 9i relationale Datenbank objektorientierte Zusätze
Konzepte von Oracle 9i relationale Datenbank objektorientierte Zusätze können genutzt werden müssen nicht genutzt werden objektorientierte Erweiterungen von Struktur- und Tabellendefinitionen SQL und PL/SQL

3 Objekt-Tabellen statt Tupel-Tabellen
Objekt-Tabellen statt Tupel-Tabellen Objekt-Tabelle Personen Tupel-Tabelle Personen Meier, , ... Huber, , ... Müller, , ... Meier, , ... Trennung von Strukturdefinition und Tabellendefinition als Objektmenge statt Tupelmenge Personen_typ: Name, Geburtsdatum, ... create type person_typ as object (pname varchar2(100), adresse varchar2(100), gebdat date, geschlecht char(1)); create table personen of person_typ;

4 Aggregation: eingebettete Objekte
Aggregation: eingebettete Objekte Dr. Franz Gmeiner Panoramastr. 80 88255 Baienfurt Prof. Sepp Holzer Buchenallee 80 88111 Biergarten

5 Strukturierte Attribute durch eingebettete Objekte
Strukturierte Attribute durch eingebettete Objekte create type Person_typ as object ( create type Name_typ as object (titel varchar2(10), vorname varchar2(50), nachname varchar2(50)); create type adress_typ as object (strasse varchar2(50), hausnr varchar2(5), plz char(5), ort varchar2(50)); create type person_typ as object (pname name_typ, adresse adress_typ, gebdat date, geschlecht char(1)); create table personen of person_typ;

6 Vererbung, Klassenhierarchien
Vererbung, Klassenhierarchien Dr. Franz Gmeiner Panoramastr. 80 88255 Baienfurt Personen Studenten Sarah Heimer Hirschgraben 8 88212 Ravensb. AI 12345

7 Unterklassen create type person_typ as object (pname name_typ, ) not final; create type student_typ under person_typ (Studiengang varchar(3), Matrikelnummer integer) not final; create type hiwi_typ under student_typ (Beginn date, Ende date, Wochenstd integer, Aufgabe varchar(100)); create table personen of person_typ; Hier dürfen auch Studenten und Hiwis eingetragen werden

8 Methoden Zu Objekt-typ gehören auch Methoden, z. B.
Methoden Zu Objekt-typ gehören auch Methoden, z. B. create type person_typ as object (pname name_typ, adresse adress_typ, gebdat date, geschlecht char(1), Panoramastr. 80 88255 Baienfurt Dr. Franz Gmeiner create type person_typ as object (pname name_typ, adresse adress_typ, gebdat date, geschlecht char(1), member function alter_jahre return integer, pragma restrict_references (alter_jahre, wnps, wnds));

9 Implementierung von Methoden mit PL/SQL
Implementierung von Methoden mit PL/SQL create type body person_typ as member function alter_jahre () return integer is jahrg, jahrj, monatg, monatj, tagg, tagj integer; begin jahrg := to_char(gebdat, 'yyyy'); jahrj := to_char(sysdate, 'yyyy'); monatg := to_char(gebdat, 'mm'); monatj := to_char(sysdate, 'mm'); tagg := to_char(gebdat, 'dd'); tagj := to_char(sysdate, 'dd'); if monatj > monatg or (monatj = monatg) then return jahrj - jahrg; else return jahrj - jahrg - 1; end if; end alter_jahre;

10 Methoden zur Sortierung
Methoden zur Sortierung ORDER BY bei zusammengesetztem Typ nicht möglich Definiere eigene Sortierfunktion Analog zu Methodendefinition Zwei Formen: Map-Funktion Order-Funktion

11 Beispiel Map-Funktion
Beispiel Map-Funktion create type name_typ as object (titel varchar2(10), vorname varchar2(50), nachname varchar2(50), map member function namensort return varchar2); create type body name_typ as map member function namensort return varchar2 is begin return nachname || vorname; end namensort; end name_typ;

12 Mehrwertige Attribute durch geschachtelte Tabellen
Mehrwertige Attribute durch geschachtelte Tabellen Dr. Franz Gmeiner Panoramastr. 80 88255 Baienfurt Telefon: 0751/552515 0751/ Prof. Sepp Holzer Buchenallee 80 88111 Biergarten Telefon: 0751/55756 0751/ /987654

13 Beispiel: mehrwertige Attribute
Beispiel: mehrwertige Attribute create type telefonarray as varray(5) of varchar2(30); -- maximal 5 Telefonnummern pro Person oder create type person_typ as object (pname name_typ, adresse adress_typ, gebdat date, geschlecht char(1), telefonliste telefonarray, member function alter_jahre return integer); create table personen of person_typ nested table telefonliste store as person_telefonnrn;

14 Referenzen auf andere Objekte
Referenzen auf andere Objekte Anne Holzer Buchenallee 80 88111 Biergarten Papa Mama Prof. Sepp Holzer Buchenallee 80 88111 Biergarten

15 Referenzen Jedes Objekt hat Objektidentifikator
Referenzen Jedes Objekt hat Objektidentifikator Referenzen beziehen sich auf diese OID Realisierung von 1:n-Relationen statt Fremdschlüsseln Effizienzvorteile bei Richtung von n zu 1

16 Beispiel für Referenzen
Beispiel für Referenzen create type person_typ; -- Vorwärtsdeklaration create type person_typ as object (pname name_typ, adresse adress_typ, gebdat date, geschlecht char(1), telefonliste telefonarray, ref_vater ref person_typ, ref_mutter ref person_typ, member function alter_jahre return integer, pragma restrict_references (alter_jahre, wnps, wnds));

17 Einfügen in Objekttabellen: Konstruktoren
Einfügen in Objekttabellen: Konstruktoren insert into personen values (person_typ(name_typ('Dr.', 'Martin', 'Hulin'), adress_typ ('Panoramastrasse', '80', '88255', 'Baienfurt'), ' ', 'm', telefontab('0751/552515', '0751/ ', '0171/987654'), NULL, NULL);

18 SELECT über Objekte Select p.adresse.ort from personen p
SELECT über Objekte Select p.adresse.ort from personen p where p.name.titel = 'Prof.' p ist Variable für Objekte der Klasse Person_typ.


Herunterladen ppt "objekt-relationale Datenbanken"

Ähnliche Präsentationen


Google-Anzeigen