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