Oberseminar Moderne Datenbanken WS03/04

25
Oberseminar Moderne Datenbanken WS03/04 Objektrelationale Datenbanken Erweiterungsmöglichkeiten von relationalen Datenbanken um objektorientierte Konzepte

description

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 - PowerPoint PPT Presentation

Transcript of Oberseminar Moderne Datenbanken WS03/04

Oberseminar Moderne Datenbanken

WS03/04

Objektrelationale Datenbanken

Erweiterungsmöglichkeiten von relationalen Datenbanken um objektorientierte Konzepte

14.11.2003 Christina Böttger

Gliederung Einführung Übersicht SQL:1999 & SQL:2003 Allgemeine Konzepte

Large Object Benutzerdefinierte Typen Typisierte Tabellen/Sichten

OO-Konzepte in Oracle9i

14.11.2003 Christina Böttger

Definition

ORDBMS ist Erweiterung relationaler DBMS mit objektorientieren Konzepten

Grundkonstrukte semantischer Datenmodelle und Einführung (abstrakter) Benutzerdatentypen

ORDBMS = RDBMS + OODBMS

14.11.2003 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)

14.11.2003 Christina Böttger

Objektorientierte Konzepte Neue Datentypen Komplexe Objekte Vererbung Polymorphismus Speichern von Operationen Benutzerdefinierbare

Zugriffsmethoden

14.11.2003 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)

14.11.2003 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

Neue Basisdatentypen

BLOBCLOBBFILE

14.11.2003 Christina Böttger

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

14.11.2003 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

14.11.2003 Christina Böttger

Beispiel LOB-Typen

INSERT INTO MitarbeiterTupelTabelleVALUES ( ‘Billy’,

EMPTY_BLOB(), BFILENAME(‘MITRBEITER_BILDER’, billy.gif’),

EMPTY_CLOB(), BFILENAME(‘MITARBEITER_BEWERBUNG’,’billy.rtf’)

);

EMPTY_BLOB() bzw. EMPTY_CLOB() initialisierenLOB-Lokator (notwenig)

CREATE DIRECTORY MITARBEITER_BILDER AS ‘D:\Image\’ ;

Benutzerdefinierte Datentypen (UDT)

Distinct – Datentypen

Strukturierte Datentypen (Datentypen mit interner Struktur)

14.11.2003 Christina Böttger

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

14.11.2003 Christina Böttger

Distinct-Typen(2)

Erzeugen eines Distinct-Typs:

CREATE TYPE Distinct-Typname AS (Quelltyp) FINAL

CREATE TYPE Franken AS DECIMAL(12,2) FINAL;CREATE TYPE Euro AS DECIMAL(12,2) FINAL;

Beispiele:

14.11.2003 Christina Böttger

Operationen auf Distinct-Typen

Distinct-Typname(Quelltypwert)

Erzeugen einer Instanz eines Distinct-Typs:

Franken(1311.69)Euro(170470.13)

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

Beispiele für Distinct-Werte:

14.11.2003 Christina Böttger

Strukturierte Typen Objekttypen mit Attributen und

Methoden• Bilden Typhierarchien (Einfachvererbung)• Defaultwerte und Integritätsbedingungen

nicht unterstütztCREATE TYPE PersonTyp AS (Name VARCHAR(30),Anschrift AdressTyp,Ehepartner REF(PersonTyp),Kinder REF(PersonTyp)ARRAY[10]

)NOT FINAL;METHOD AnzahlKinder RETURNS

INTEGER;

14.11.2003 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

14.11.2003 Christina Böttger

Instanz strukturierte Typen Erzeugen einer Instanz mit Default-

Konstruktor: Typname() Initialisierung mittels Mutator oder

überladenen KonstruktorCREATE FUNCTION PersonTyp (n VARCHAR(30)) RETURNS PersonTypBEGIN

DECLARE p PersonTyp;SET p = PersonTyp();SET p.Name = n;RETURN p;

END;

Typisierte Tabellen und Typisierte Sichten

14.11.2003 Christina Böttger

Typisierte Tabellentyp(1) basiert auf strukturierte Types Instanzen (Zeilen) sind Objekte dieses

Typs

OID A1 ... An

...

...

...

R

Tabellennamen OID-Spalte Spalten(Columns) = Attribute

Zeilen(Row) = ObjekteOIDs sind vomTyp REF(ST)

Attributewerte

14.11.2003 Christina Böttger

Typisierte Tabellentyp(2)

CREATE TABLE Personen OF PersonTyp(

REF IS oid SYSTEM GENERATED,Ehepartner WITH OPTIONS SCOPE Person,Kinder WITH OPTIONS SCOPE Person,

);

Syntax: (Beispiel)

Spaltenoption:

Spaltenname WITH OPTIONS Optionsliste

Option: SCOPE Typisierte Tabelle | DEFAULT Wert | Integritätsbedinung

14.11.2003 Christina Böttger

Typisierte Sichten(1) Analog zu typisierten Tabellen auf

einen strukturierten Typ

Syntax:CREATE VIEW GutBezahlteMitarbeiter OF

MitarbeiterTyp AS(

SELECT * FROM ONLY(Manager), WHERE Gehalt > Franken(10000)

);

14.11.2003 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

14.11.2003 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)

14.11.2003 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 . . .];