Objektrelationale Systeme (ORDBMS)

Werbung
Objektrelationale Systeme (ORDBMS)
. . .
Anwend
dungspro
ogramm n
n‘
Anwend
dungspro
ogramm 2
2‘
Anwend
dungspro
ogramm 1‘
. . .
Anwend
dungspro
ogramm n
Anwend
dungspro
ogramm 2
Anwend
dungspro
ogramm 1
• Idee / Ansatz:
Objektrelationales SQL
Relationale SQL
e eu g1
Erweiterung
. . .
DBMS
DBMS
18. Prof. Jasper: Datenbanksysteme
Erweiterung n
1
ORDBMS: Standards
• SQL:1999, SQL:2003 und SQL.2008
• Ziel: OO‐Konstrukte in relationale Systemen integrieren
• „To say that these SQL:1999 extensions are mere „extended
interpretations“ of
interpretations
of the relational data
relational data model is
model is like saying that
an intercontinental ballistic missile is merely an „extended
interpretation“ of
p
a spear“ [Whitemarsh
p
Information Systems y
Corportation 2000]
• Folgende Darstellung entspricht i.d.R. SQL:2003
• Literatur: Türker, C.: SQL:1999 & SQL:2003, dpunkt.verlag, 2003
Literatur: Türker C : SQL:1999 & SQL:2003 dpunkt verlag 2003
18. Prof. Jasper: Datenbanksysteme
2
Struktur von SQL:1999 und SQL:2003 (> 3000 Seiten!)
•
P 1 SQL/F
Part 1: SQL/Framework
k
–
•
Part 2: SQL/Foundation
–
•
In SQL:2003 Ausgliederung aus Part 2 für Metatabellen
Part 13: SQL/JRT (java routines and types)
–
•
Java Anbindung an SQL DB
Java‐Anbindung an SQL‐DB
NEU: Part 11: SQL/Schemata (information and database schemata)
–
•
Zugriff auf Daten externer Datenquellen
Part 10: SQL/OLB (object language binding)
–
•
Einbindung in Wirtssprachen (embedded SQL)
Part 9: SQL/MED (management of external data)
–
•
Abstrakte Datentypen direkt im DBMS ausführbar
b
k
di k i
S
füh b
Part 5: SQL/Bindings
–
•
Integrated Database Application Program Interface (IDAPI), Open Database Connectivity (ODBC)
Part 4: SQL/PSM (persistent stored modules)
–
•
Kern des SQL‐Standards (1200 Seiten)
Q
(
)
Part 3: SQL/CLI (Call‐level‐interface)
–
•
Überblick über den Standard und die Sprachebenen
Registrierung von externen Routinen und Datentypen, die in Java geschrieben wurden
NEU: Part 14: SQL/XML (XML‐related specifications)
–
Basisdatentyp XML und dazugehörigen Funktionen etc.
18. Prof. Jasper: Datenbanksysteme
3
Datentypen und Typkonstruktoren
• Datentypen von SQL‐92 erweitert um
– BOOLEAN
– BIGINT
– LOB (CLOB; BLOB; mit max. Größenangaben, z.B. 100M; eingeschränkte Funktionalität, z.B. nicht Schlüssel, keine Mengenoperationen)
– XML
• Typkonstruktoren
– ARRAY
– REF
– ROW
18. Prof. Jasper: Datenbanksysteme
4
SQL:1999/2003: Vordefinierte Datentypen
XML
Chronologische Typen
BOOLEAN
Zeichenbasierte Typen
TIMESTAMP
Numerische Typen
Bitbasierte Typen
CLOB
DATE TIME
NCLOB
INTERVALL
BIT (fixed)
CHARACTER
groß (Jahr/Monat)
BOLB
BIT VARYING
CHARACTER VARYING
klein (Tag/Std/Min/Sek)
Exakte num. Typen
SMALLINT
NUMERIC
INTEGER
Angenäherte num. Typen
REAL
FLOAT
DOUBLE PRECISION
1999
DECIMAL
2003
BIGINT
18. Prof. Jasper: Datenbanksysteme
5
Typkonstruktoren
• ARRAY (collection type)
–
–
–
–
Orthogonal anwendbar
Eindimensional, keine Schachtelung (auch nicht implizit)
,
g(
p )
Aufhebung der 1. NF
Probleme: Semantik aus Anwendung oft auf „Positionsnummern“ abgebildet
CREATE TABLE Kunden(
kundenNr
kundenVorname
kundenName
...
telNr
...);
SELECT SELECT
FROM
WHERE
INTEGER PRIMARY KEY
VARCHAR(25)
VARCHAR(25)
VARCHAR(15) ARRAY[5]
kundenName
Kunden
telNr[1] = ‘13235552‘;
18. Prof. Jasper: Datenbanksysteme
6
Typkonstruktoren
• Der ROW‐Typkonstruktor
– Nachbildung OO‐Subobjekte
– Vermeidet Fremdschlüssel und Joins
V
id t F
d hlü l d J i (oft schneller!)
( ft h ll !)
– Notwendig: ROW (Tupel) und Ref (Verweis)
• Zwei explizite Möglichkeiten zur Spezifikation von Zeilentypen:
Zwei explizite Möglichkeiten zur Spezifikation von Zeilentypen:
1.
2.
Typkonstruktor ROW definiert Spalte als Zeilenwertig
CREATE TYPE spezifiziert Zeilentyp: Typisierte Tabelle
p
yp yp
oder für komplexe Attribute
• Beispiel zu 2:
• Benennungen:
– Felder (fields)
– Attribute
b
– Instanz/Objekt
CREATE TYPE AdressTyp AS (
strasse
VARCHAR(25),
hausNr
CHARACTER(5)
CHARACTER(5),
plz
CHARACTER(8),
ort
VARCHAR(25),
REF IS SYSTEM GENERATED);
CREATE TABLE Adresse OF AdressTyp (REF IS AdressOID
SYSTEM GENERATED);
18. Prof. Jasper: Datenbanksysteme
7
Typkonstruktoren
• Beispiel zu 1:
– Anlegen von zeilenwertigen Attributen
CREATE TYPE KundenTyp AS( kundenNr
INTEGER,
kundenName ROW( kVorname
kName
kundenAdresse ROW( strasse
ROW( strasse
hausNr
plz
ort
VARCHAR(25),
VARCHAR(25)),
VARCHAR(25)
VARCHAR(25),
CHARACTER(5),
CHARACTER(8),
VARCHAR(25)),
....
ansprechPartner VARCHAR(25),
REF IS SYSTEM GENERATED);
• Unterschiede zwischen ROW (Wertsemantik) und TYP (Objektsemantik)
• Beliebige Schachtelung möglich
• KEINE geschachtelten Relationen (SET‐Typ)
KEINE geschachtelten Relationen (SET Typ)
18. Prof. Jasper: Datenbanksysteme
8
Typkonstruktoren
• Referenzen (Zeiger, Verweise) dienen der Vermeidung von Verbundoperationen!
CREATE TABLE Kunde
CREATE
TABLE K d
....
kadresse REF(AdressTyp)
....
– Zu „REF‐Spalten“ werden eigenständige Tabellen gehalten
– Typisierung: nur REF‐IDs passender Tabellen dürfen eingebunden werden
– Mit SCOPE‐Klausel kann eine existierende Tabelle angegeben werden, die den passenden Typ haben muss.
CREATE TABLE Konto (
CREATE
TABLE K t (
kontoNr
INTEGER
kunde
REF(KundenTyp)
eroeffnung
DATE
DATE,
....
);
PRIMARY KEY,
SCOPE(Kunde),
– Referentielle
Referentielle Integrität wird über eine entsprechende Klausel spezifiziert: Integrität wird über eine entsprechende Klausel spezifiziert:
„References are checked“ mit Kaskadierung, z. B. bei Löschung.
18. Prof. Jasper: Datenbanksysteme
9
Typkonstruktoren
• Individualisierte Datentypen (distinct data type)
– Benutzerdefiniert Typen können eingeführt werden: CAST notwendig bei unterschiedlich benannten Typen
unterschiedlich benannten Typen
CREATE TYPE EuroTyp
CREATE TYPE USDollarTyp
AS DECIMAL(10,2) FINAL
AS DECIMAL(10,2) FINAL
.... WHERE guthabenEuro > CAST(guhabenUSDollar AS EuroTyp);
.... SET guthabenUSDollar = guthabenUSDollar * CAST(1,02 AS USDollarTyp);
• Mit Hilfe von benannten Zeilentypen können typisierte Tabellen entstehen: entstehen:
– Ein benannter Zeilentyp ZT wird durch den Befehl CREATE TYPE ZT AS () definiert; dieser hat den Namen ZT
– Eine typisierte Tabelle zu einem Zeilentypen durch den Befehl
CREATE TABLE TT OF ZT ()
– Dadurch können mehrere Tabellen mit identischer Struktur aber Dadurch können mehrere Tabellen mit identischer Struktur aber
unterschiedlichen semantischen Bedingungen angelegt werden, siehe Beispiel
18. Prof. Jasper: Datenbanksysteme
10
Typkonstruktoren
CREATE TABLE Produkt (
CREATE
TABLE Produkt (
produkt_Nr
FünfstelligeZahl PRIMARY KEY,
produkt_Bez
VARCHAR(50) UNIQUE NOT NULL,
product_Typ
p
_ yp
VARCHAR(25) NOT NULL,
( )
stueck_Kosten
PositiveReal NOT NULL,
netto_Preis
PositiveReal NOT NULL,
CONSTRAINT VerlustVermeidung CHECK(netto_Preis > (stueck_Kosten * 1.5)) );
CREATE TPYE ProduktTyp AS (
produkt_Nr FünfstelligeZahl,
produkt Bez VARCHAR(50),
produkt_Bez
product_Typ VARCHAR(25),
stueck_Kosten PositiveReal,
netto_Preis
PositiveReal,
REF IS SYSTEM GENERATED );
)
CREATE TABLE Produkt OF ProduktTyp (
REF IS ProduktOID SYSTEM GENERATED,
CONSTRAINT NOT_NULL_Spalten CHECK(NOT NULL produkt_Nr AND NOT NULL produkt_Bez AND NOT NULL product_Typ
AND NOT NULL stueck_Kosten AND NOT NULL netto_Preis),
CONSTRAINT UNIQUE Spalten CHECK( UNIQUE product_Bez),
CONSTRAINT UNIQUE_Spalten
CHECK( UNIQUE product Bez)
CONSTRAINT VerlustVermeidung CHECK(netto_Preis > (stueck_Kosten * 1.5)) );
18. Prof. Jasper: Datenbanksysteme
11
Modellierungsmöglichkeiten für komplexe Objekte
• Konzepte der Objektorientierung in SQL:XXXX?
• Beispiel: Adresse eines Kunden
–
–
–
–
Menge von Spalten (wie in SQL‐92)
Zeilenwertige Spalte (Zeilentyp (AdressTyp) oder ROW)
Verweistyp (=> Alle Adressen in eigener Tabelle)
Verweistyp (=> Alle Adressen in eigener Tabelle)
Als Arrays (hier gibt es verschiedene Varianten)
• Wichtig für die konzeptuelle Modellierung:
– (Un)Abhängigkeit der Substrukturen
• Abhängig: expliziter Typ oder ROW
• Unabhängig: REF
– Exklusive / gemeinsame Daten
Exklusive / gemeinsame Daten
• Exklusiv: ROW‐Konstruktor oder Typ
• Gemeinsam: REF
18. Prof. Jasper: Datenbanksysteme
12
Modellierungsmöglichkeiten für komplexe Objekte
• Objektidentität:
– Surrogat (Systemvergebener Schlüssel)
– Mehrere Möglichkeiten
M h
Mö li hk it
CREATE TYPE KundenTyp AS (
....
REF IS SYSTEM GENERATED);
REF IS SYSTEM GENERATED);
REF USING INTEGER);
REF FROM (kundenNr));
REF FROM (kundenNr));
– Name bei Tabellenerzeugung festlegen
CREATE TABLE Kunde OF KundenTyp(
yp(
REF IS KundenOID SYSTEM GENERATED);
REF IS KundenOID USER GENERATED);
REF IS KundenOID
USER GENERATED);
REF IS KundenOID DERIVED);
• Parallel: Objektidentität vs. Primär‐/Fremdschlüssel
Parallel: Objektidentität vs Primär /Fremdschlüssel
18. Prof. Jasper: Datenbanksysteme
13
Modellierungsmöglichkeiten für komplexe Objekte
• Vererbung • Typhierarchie und Tabellenhierarchie (beide hierarchisch => einfache Vererbung)
• Typhierarchie
– Klassische
Klassische Spezialisierung (KEINE Typspezialisierung in überschriebenen Spezialisierung (KEINE Typspezialisierung in überschriebenen
Methoden)
– In der Untertyp‐Deklaration können • Neue Attribute und
Neue Attribute und
• Neue Methoden hinzugefügt werden
• Bestehende Methoden durch eine R‐Implementierung ersetzt werden
– UNDER
UNDER‐Klausel zur Spezifikation
Kl
l
S ifik ti
– OVERRIDING bei Methodenüberschreibungen (s.u.)
– Abstrakte Zeilentypen (dürfen nicht instanziiert werden): Attribut „NOT yp (
)
INSTANTIABLE“
18. Prof. Jasper: Datenbanksysteme
14
Modellierungsmöglichkeiten für komplexe Objekte
• Beispiel Typhierarchie
CREATE TYPE PersonTyp AS( person_Nr
AchtstelligeZahl,
person_Vorname VARCHAR(25)
p
( )
person_Name
VARCHAR(25)
personAdresse
REF(AdressTyp) ARRAY[5],
REF IS SYSTEM GENERATED,
<M th d d kl ti
<Methodendeklarationene> );
>)
CREATE TYPE KundenTyp UNDER PersonTyp AS( rabatt DECIMAL(4,2) DEFAULT 3,
ansprechpartner
h
REF(K
REF(KontaktPersTyp) ARRAY[3],
k P T ) ARRAY[3]
<Methodendeklarationene> );
CREATE TYPE MitarbeiterTyp UNDER PersonTyp
CREATE TYPE MitarbeiterTyp
UNDER PersonTyp AS( geburtsdatum
AS( geburtsdatum
DATE,
gehalt
PositiveReal,
einstellung
DATE
mitarbeiterStatus Statustyp
abteilungs_Nr
DreistelligZahl,
<Methodendeklarationene> );
18. Prof. Jasper: Datenbanksysteme
15
Modellierungsmöglichkeiten für komplexe Objekte
• Tabellenhierarchie
– Zu jedem Tabelleneintrag in der Tabellenhierarchie muss es einen analogen Eintrag in der Typhierarchie geben (umgekehrt nicht!; Notwendig z B bei abstrakten
der Typhierarchie geben (umgekehrt nicht!; Notwendig z. B. bei abstrakten Zeilentypen).
– Under‐Klausel CREATE TABLE Person OF PersonTyp ( REF IS PersonOID
CREATE TABLE Person OF PersonTyp
( REF IS PersonOID SYSTEM GENERATED,
SYSTEM GENERATED
<Integritätsbedingungen>);
CREATE TABLE Kunde OF KundenTyp UNDER Person(<Integritätsbedingungen>);
yp
(
g
g g
)
• Vererbung und Anfragen
– A
Anfrage bearbeitet Tabelle (FROM‐Klausel) mit allen Untertabellen
f
b b i T b ll (FROM Kl
l) i ll U
b ll
– Anfrage nicht auf Tabellenhierarchie
• ONLY‐Klausel schränkt Ausgangstabellen ein
• DEREF‐Klausel ordnet Objekte ihren Tabellen zu 18. Prof. Jasper: Datenbanksysteme
16
Herunterladen