250 likes | 394 Views
Oberseminar Moderne Datenbanken WS03/04. Objektrelationale Datenbanken. Erweiterungsmöglichkeiten von relationalen Datenbanken um objektorientierte Konzepte. Gliederung. Einführung Übersicht SQL:1999 & SQL:2003 Allgemeine Konzepte Large Object Benutzerdefinierte Typen
E N D
Oberseminar Moderne Datenbanken WS03/04 Objektrelationale Datenbanken Erweiterungsmöglichkeiten von relationalen Datenbanken um objektorientierte Konzepte
Gliederung • Einführung • Übersicht SQL:1999 & SQL:2003 • Allgemeine Konzepte • Large Object • Benutzerdefinierte Typen • Typisierte Tabellen/Sichten • OO-Konzepte in Oracle9i Christina Böttger
Definition • ORDBMS ist Erweiterung relationaler DBMS mit objektorientieren Konzepten • Grundkonstrukte semantischer Datenmodelle und Einführung (abstrakter) Benutzerdatentypen ORDBMS = RDBMS + OODBMS Christina Böttger
Grenzen bei RDB • Unzureichende Vielfalt an Datentypen • nur eine Art von Beziehungen („gehört zu“) • keine Unterstützung komplexer Datenstrukturen • Fehlendes Verhalten • Keine Unterstützung von Objekt-Hierarchien (Vererbung) Christina Böttger
Objektorientierte Konzepte • Neue Datentypen • Komplexe Objekte • Vererbung • Polymorphismus • Speichern von Operationen • Benutzerdefinierbare Zugriffsmethoden Christina Böttger
Erweiterungen in SQL:1999 und SQL:2003 (1) • Trigger • Neue Basisdatentypen: BOOLEAN,BLOB,CLOB,BIGINT • Neue Typkonstruktoren: ROW, ARRAY,REF, MULTISET • Benutzerdefinierte Datentypen (Distinct-Typ und strukturierte Typen) Christina Böttger
Erweiterungen in SQL:1999 und SQL:2003 (2) • Typhierarchien (Subtypen) • Typisierte Tabellen und Tabellen-hierarchien (Subtabellen) • Typisierte Sichten und Sichthierarchien (Subsichten) • Rekursion • Generierte Spalten, Sequenz-generatoren,Identitätsspalten Christina Böttger
Neue Basisdatentypen BLOB CLOB BFILE
Large Object (LOB) • BLOB (Binary Large Object) • Bilder/Audio • Variable Länge bis 4GB • CLOB (Character Large Object) • Alphanumerische Zeichenkette • Variable Länge bis 4GB • BFILE (Binary File) • Lokator auf externe Datei • Dateigröße bis zu 4GB Christina Böttger
Operationen auf Large Object • EMPTY_BLOB • EMPTY_CLOB • BFILENAME • IS [NOT] NULL • Nicht erlaubt • BLOB/CLOB-Attribute als Teil eines Schlüssels oder in booleschen arith. Ausdrücken (Vergleich) • GROUP BY, ORDER BY Christina Böttger
Beispiel LOB-Typen CREATE DIRECTORY MITARBEITER_BILDER AS ‘D:\Image\’ ; INSERT INTO MitarbeiterTupelTabelle VALUES ( ‘Billy’, EMPTY_BLOB(), BFILENAME(‘MITRBEITER_BILDER’, billy.gif’), EMPTY_CLOB(), BFILENAME(‘MITARBEITER_BEWERBUNG’,’billy.rtf’) ); EMPTY_BLOB() bzw. EMPTY_CLOB() initialisieren LOB-Lokator (notwenig) Christina Böttger
Benutzerdefinierte Datentypen (UDT) Distinct – Datentypen Strukturierte Datentypen (Datentypen mit interner Struktur)
Distinct – Typen(1) Kopie eines existierten Basistypen mit neuem Namen • Wiederverwendung • Strenge Typisierung (basiert auf Namensäquivalenz) • Nicht-optionales Schlüsselwort FINAL schliesst Subtypbildung aus • Systemdefinierte Vergleichsoperatoren basierend auf dem Quelltyp • Cast-Operatoren zur Konversion zwischen Distinct- und Quelltyp Christina Böttger
Distinct-Typen(2) Erzeugen eines Distinct-Typs: CREATE TYPE Distinct-Typname AS (Quelltyp) FINAL Beispiele: CREATE TYPE Franken AS DECIMAL(12,2)FINAL; CREATE TYPE Euro AS DECIMAL(12,2)FINAL; Christina Böttger
Operationen auf Distinct-Typen Vergleich zweier Distinct-Werte: • Distinct-Typen unterliegen der strengen Typisierung • Zwei Distinct-Werte sind vergleichbar g.d.w. ihre Distinct-Typen identisch sind • Beispiel: Franken(1000.00) = Euro(1000.00) ergibt einen Typkonflikt Erzeugen einer Instanz eines Distinct-Typs: Distinct-Typname(Quelltypwert) Franken(1311.69) Euro(170470.13) Beispiele für Distinct-Werte: Christina Böttger
Strukturierte Typen • Objekttypen mit Attributen und Methoden • Bilden Typhierarchien (Einfachvererbung) • Defaultwerte und Integritätsbedingungen nicht unterstützt CREATETYPE PersonTyp AS( NameVARCHAR(30), Anschrift AdressTyp, EhepartnerREF(PersonTyp), Kinder REF(PersonTyp)ARRAY[10] )NOT FINAL; METHODAnzahlKinderRETURNS INTEGER; Christina Böttger
Einkapselung von strukturierten Typen • Attribute behandelt wie Methoden (Funktionen) • Vollständige Einkaspelung • Attrubite nur über Methoden zugreifbar • Sichtbarkeitsstufen: PUBLIC und PRIVATE • Jedes Attribut besitzt • Observer – Funktion zum Lesen • Mutator – Funktion zum Ändern Christina Böttger
Instanz strukturierte Typen • Erzeugen einer Instanz mit Default-Konstruktor: Typname() • Initialisierung mittels Mutator oder überladenen Konstruktor CREATEFUNCTION PersonTyp (n VARCHAR(30)) RETURNSPersonTyp BEGIN DECLAREp PersonTyp; SETp = PersonTyp(); SETp.Name = n; RETURNp; END; Christina Böttger
Typisierte Tabellentyp(1) • basiert auf strukturierte Types • Instanzen (Zeilen) sind Objekte dieses Typs Spalten(Columns) = Attribute OID-Spalte Tabellennamen R OIDs sind vom Typ REF(ST) Zeilen(Row) = Objekte Attributewerte Christina Böttger
Typisierte Tabellentyp(2) Syntax: (Beispiel) CREATETABLE Personen OF PersonTyp ( REF ISoidSYSTEM GENERATED, EhepartnerWITH OPTIONS SCOPEPerson, KinderWITH OPTIONS SCOPEPerson, ); Christina Böttger
Typisierte Sichten(1) • Analog zu typisierten Tabellen auf einen strukturierten Typ • Syntax: CREATEVIEW GutBezahlteMitarbeiter OF MitarbeiterTyp AS ( SELECT*FROM ONLY(Manager), WHERE Gehalt > Franken(10000) ); Christina Böttger
Typisierte Sichten(2) • Einschränkung • nur eine Tabelle oder Sicht enthalten • Tabelle bzw. Sicht typisiert, beschränkter Zugriff auf flache Extension (ONLY) • Verbundsoperationen und Gruppierung nicht erlaubt Christina Böttger
Objektrelationale Erweiterungen in Oracle9i • Neue Basistypen(LOB zusätzl. NCLOB, kein BOOLEAN) • Referenztypkonstruktor • Benutzerdefinierte Datentypen • Kollektionstypen • Tabellentyp • Variabler Arraytyp (VARRAY) • Objekttypen • Objekttabellen • Objektsichten (mit Subsichtenbildung) Christina Böttger
Objekttypen • Drei Typarten • Objekttypen • TabellenTyp • VARRAY-Typen CREATE TYPE <Typ> [AS OBJECT . . .]; CREATE TYPE <Typ> [AS TABLE . . .]; CREATE TYPE <Typ> [AS VARRAY . . .]; Christina Böttger