oberseminar moderne datenbanken ws03/04
Post on 04-Jan-2016
42 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
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;
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)
top related