Durchschnittlicher Fortschritt
Gewusst0
Nicht gewusst0
Noch nicht gestartet102

Empfohlene Karteikarten-Sets

Karteikarten im Karteikarten-Set

Noch nicht gestartet (102)

Persistenzmechanismen
Anforderungen
 

Transparenz
Interoperabilität
Skalierbarkeit
Transaktionen
Optimierung
 

Transparenz
 

Applikationsentwickler arbeiten in gleicher Weise mit transienten und persistenten Objekten
 

Interoperabilität
 

Persistente Objekte können auch in anderen als der
Erstellungsumgebung verwendet werden


 Speicherung ist vom konkreten Persistenzmechanismus unabhängig


Laufzeitumgebung und persistenter Speicher sind austauschbar
 

Skalierbarkeit
 

Auffinden von persistenten Objekten erfolgt ohne vollständiges Durchsuchen des “Objektpools"
 

Objektserialisierung 

  1. Schritt 1 ____________
  2. Schritt 2 ____________
     

Wandle Objekte in einen Bytestrom um


Lege Bytestrom in einer Datei ab
 

Ist Transparenz bei Objektserialisierung gegeben ?

Nicht gegeben – Klassen müssen von Hand serialisiert/
deserialisiert werden
 

Ist Interoperabilität bei Objektserialisierung gegeben ?

Nein. Feste Bindung an Java (sogar spezielle Versionsbindung)

Ist Skalierbarkeit bei Objektserialisierung gegeben ?

Nicht gegeben – Objekte müssen vollständig (inkrementelles Laden nicht möglich) im Hauptspeicher deserialisiert werden, um Bedingungen testen zu können
 

Erfüllt die Objektserialisierung die Anforderungen von Persistenzmechanismen ? 

Nein

Objektorientierte DBS
Persistenzalternativen
 

Persistenz durch explizite Kennzeichnung

  • Explizite Kennzeichnung persistenter Klassen in einer Konfigurationsdatei
  • Bei Instanziierung eines Objekts wird explizit entschieden, ob die Instanz persistent oder transient sein soll


Persistenz durch Erreichbarkeit

  • Zu Beginn wird ein „Wurzelobjekt“ in das Programm geladen
  • Alle anderen Objekte sind persistent, wenn sie von diesem „Wurzelobjekt“ aus erreicht werden können

 

 

Persistenz durch Vererbung

  • Alle Instanzen einer Klasse, die von einer bestimmten „Wurzelklasse“ erbt

Persistenz durch Vererbung

Alle Instanzen einer Klasse, die von einer bestimmten „Wurzelklasse“ erbt

Persistenz durch Erreichbarkeit

  • Zu Beginn wird ein „Wurzelobjekt“ in das Programm geladen
  • Alle anderen Objekte sind persistent, wenn sie von diesem „Wurzelobjekt“ aus erreicht werden können

Persistenz durch explizite Kennzeichnung

  • Explizite Kennzeichnung persistenter Klassen in einer Konfigurationsdatei
  • Bei Instanziierung eines Objekts wird explizit entschieden, ob die Instanz persistent oder transient sein soll

Objektorientierte DBS

Vorteile

 

Transparenz – kein Paradigmenbruch bei Speicherung

  •  Abbildung komplexer Objekte wesentlich einfacher als in RDBS
  • Relationale Modellierung und Mapping entfällt

 

Performance-Vorteile bei sehr komplexen Modellen

  • Gute Eignung für große Objekte („BLOBs“)

Objektorientierte DBS

Nachteile
 

ODBS deutlich weniger verbreitet als RDBS

  •  „Einsatzrisiko“
  •  Immense Datenbestände in relationaler Form vorhanden
  • Oft ist ein gemeinsamer Zugriff mit anderen nicht OO-Systemen auf gemeinsame Datenbanken nötig (Umgang mit Altlasten)

 

DB-Unabhängigkeit u. Abfragesprachen mangelhaft

  •  Typsystem einer Programmiersprache wird als Datenbankmodell verwendet, oft Low-Level Programmierung
  • Oftmals keine Sichten, Rechtevergabe

 

ODBS halten sich nur bedingt an den Standard

  •  erschwert Interoperabilität und Migration auf ein anderes ODBS

Objektrelationales Mapping
Prinzipielle Idee
 

  1. Bilde Klassen und Beziehungen auf Relationenschema ab
  2. Speichere Objekte in RDBS mit diesem Schema
     
787332774600de277745656.63080585phptxuvw6.png1939329365600de28cb56427.61124077phpFxOs3U.png

OR-Mapping Patterns
Abbildung von Vererbungsbeziehungen

Kriterien
 

  • Speicherverbrauch
  • l Einfacher Zugriff auf alle Objekte einer Klasse (Extension)
  • l Einfacher Zugriff auf alle Attribute einer Klasse (Intension)
  • l Konsistenzsicherung
  • l Inserts/Updates
     

OR-Mapping Patterns
Abbildung von Vererbungsbeziehungen

Abbildungsvarianten
 

  1. Union: 1 Tabelle
  2. Vertikale Zerlegung: 1 „schmale“ Tabelle pro Klasse
  3. Horizontale Zerlegung: 1 „breite“ Tabelle pro Klasse
     

OR-Mapping Patterns
Abbildung von Vererbung: Union Tabelle

 

Person

  • Name
  • Vorname

 

Mitarbeiter

  • Personalnr.
  • Abteilung

Vorgehen

  •  Obertyp und Untertypen werden in einer einzigen Relation zusammengefasst
  •  Ein Attribut bestimmt den Untertyp einer Entität
  •  Entität, die nicht zu einem der Untertypen gehört, hat für die spezifischen Attribute dieses Untertyps Nullwerte

OR-Mapping Patterns
Abbildung von Vererbung: Vertikale Zerlegung

 

Person

  • Name
  • Vorname

 

Mitarbeiter

  • Personalnr.
  • Abteilung

Vorgehen

  • Jeder Entitätstyp wird entsprechend der Attribute in der IST-EIN-Hierarchie zerlegt und in Teilen in den zugehörigen Relationen gespeichert
  • Es wird nur der Primärschlüssel dupliziert
     

OR-Mapping Patterns
Abbildung von Vererbung: Horizontale Zerlegung

 

Person

  • Name
  • Vorname

 

Mitarbeiter

  • Personalnr.
  • Abteilung

Vorgehen

  •  Jeder Entitätstyp wird durch eine Relation abgebildet
  •  Jede Entität ist genau einmal und vollständig in ihrer „Basisrelation“ gespeichert
     
1663963434600de43c3b4634.14194138phpEvTaUD.png307898884600de44b5607e2.35668102php82jq2c.png

Was ist Polymorphie ? 

Polymorphie oder Polymorphismus ist ein Konzept in der objektorientierten Programmierung, das ermöglicht, dass ein Bezeichner abhängig von seiner Verwendung Objekte unterschiedlichen Datentyps annimmt.

OR-Mapping Patterns
Polymorphie – Variante 1

1968263570600de4f0b91ac0.86824664phpTCpnOw.png

OR-Mapping Patterns
Polymorphie – Variante 2

1607919448600de510dbdb96.07093883phpfWAxru.png

OR-Mapping Patterns
Polymorphie – Variante 1

Vor- und Nachteile

Wie bei Union

OR-Mapping Patterns
Polymorphie – Variante 2

Vor- und Nachteile

Wie bei Horizontale Zerlegung

OR- Mapping Patterns
Globale Attribute Abbildungen
 

  1. Eine Tabelle je globalem Attribut
  2. Eine Tabelle je Klasse
  3. Eine einzeilige Tabelle für alle globalen Attribute
  4. Eine mehrzeilige Tabelle für alle globalen Attribute

Vergleich der Persistenzmechanismen
 

56770076600de620e9e576.66470997php5VNaEp.png

Nachteile von OR-Mapping Middleware
 

OO Modell ist mächtiger als relationales Modell

  • l Vielfach nur verlustbehaftete Abbildung möglich


Abbildungsprobleme z.B. bei

  • l Methoden – stehen nicht zentral in der Datenbank zur Verfügung
  • l Objektidentität vs. Primärschlüssel
  • l Vererbungshierarchien – alternative Abbildungsmöglichkeiten


Komplexe Objekte müssen in Komponenten zerlegt und auf viele Tabellen verteilt werden

  • Zur Rekonstruktion der Objekte sind zeitaufwendige Verbundoder Mengenoperationen notwendig

OO Modell ist mächtiger als relationales Modell
 

Ja

Relationales Modell ist mächtiger als OO Modell

Nein

Synthese OO + RDB =
 

ORDB
 

Relationales Datenmodell bzw. RDBS

Vorteile:


 

  •  Reife (Speicherverwaltung,Optimierung, Recovery,Zugriffskontrolle)
  • Stored Procedures in DBgespeichert und auf Server und Client ausführbar
  • Standardkonformität (SQL)
  • Verbreitung, etc.

Objektorientiertes
Datenmodell
Vorteile:

Vorteile:

  • Semantisch reiches DM
  • Erweiterbarkeit des Typsystems
  • Methoden, etc

ORDBS
Vorteile:

    Vorteile:

    • SQL-Standard als Voraussetzung für Herstellerunabhängigkeit
    • Bisherige Anwendungen/Daten bleiben unverändert

    Zwei Hauptziele von ORDBS
     

    Evolutionäre Erweiterung relationaler DBS

    Aufwärtskompatibilität basierend auf SQL

     Integration objektorientierter Konzepte

    •  realitätsgetreuere Datendefinition
    •  intuitivere Anfrageformulierung
    •  Unterstützung von Non-Standardanwendungen


    Vereinigung der Vorteile relationaler und
    objektorientierter Konzepte, ohne bewährte SQLKonzepte aufzugeben
     

    48250119600de8280bf962.64481372phpBFC9gG.png1161409319600de7fe86ed32.98615423phpgUIT8A.png

    Neue Typkonstruktoren
    Weiterentwicklung – NF^2-Datenmodell
    Was ist hierbei erlaubt ? 

    Geschachtelte Relationen erlaubt
    l d.h. relationenwertige Attribute
    l "Non-First-Normal-Form" – NF2
     

    NF^2 heißt

    "Non-First-Normal-Form"
     

    Neue Typkonstruktoren

    Tupeltyp –ROW Konstruktor

    Erzeugen eines Tupels mit dem Tupelkonstruktor
    l heisst genauso wie der Tupeltypkonstruktor ROW[werteliste]
    ROW('Seestrasse', 31, 8008, 'Zürich', 'Schweiz')
     

    Neue Typkonstruktoren

    Tupeltyp –ROW Zugriff

    Zugriff auf ein Tupelfeld mittels Punktnotation
    SELECT Name, Anschrift.ORT
    FROM MitarbeiterTupeltabelle
     

    UPDATE MitarbeiterTupeltabelle
    SET Anschrift.Ort = 'Linz'
    WHERE Anschrift.Ort = 'Wien;
     

    Neue Typkonstruktoren

    Tupeltyp –ROW Vergleich zweier Tupel

    Vergleich zweier Tupel: <,>,=, <>, …

    ROW(1, 2, 7) = ROW(1, 2, 7) -- liefert TRUE
    ROW(1, 2, 7) = ROW(1, 3, 7) -- liefert FALSE
    ROW(1, 2, 7) = ROW(1, NULL, 7) -- liefert UNKNOWN

     

    Neue Typkonstruktoren
    Arraytyp – ARRAY Konstruktor

    Datentyp zur Speicherung mehrerer Werte für ein Attribut

    Konstruktor: ARRAY[elementliste]

     

    INSERT INTO MitarbeiterTupeltabelle(Sprachkenntnisse)
    VALUES (ARRAY['Deutsch', 'Englisch']);
     

    Neue Typkonstruktoren
    Arraytyp – ARRAY Elementzugriff
     

    Direkter Elementzugriff: myArray[2]
    SELECT Sprachkenntnisse[2]
    FROM MitarbeiterTupeltabelle;
     

    Neue Typkonstruktoren
    Arraytyp – ARRAY Entschachtelung
     

    Entschachtelung: UNNEST transformiert Array in Tabelle

    SELECT s.*
    FROM MitarbeiterTupeltabelle,
    UNNEST(Sprachkenntnisse) s (Sprache)

     

    Tabelle „s“ mit
    einzigem Attribut
    „Sprache“
     

    Neue Typkonstruktoren
    Arraytyp – ARRAY  Konkatenation zweier Arrays
     

    Konkatenation zweier Arrays: ||
    ARRAY['Deutsch', Türkisch'] || ARRAY['Englisch']
    -- erzeugt ARRAY['Deutsch', Türkisch', 'Englisch']
     

    Neue Typkonstruktoren
    Arraytyp – ARRAY  Änderung eines einzelnen Elements
     

    Änderung eines einzelnen Elements
    UPDATE MitarbeiterTupeltabelle
    SET Sprachkenntnisse[1] = 'Türkisch';
     

    Neue Typkonstruktoren
    Arraytyp – ARRAY  Änderung des kompletten Arraywerts
     

    Änderung des kompletten Arraywerts
    UPDATE MitarbeiterTupeltabelle
    SET Sprachkenntnisse = ARRAY['Türkisch'];
     

    Neue Typkonstruktoren
    Arraytyp – ARRAY  Kardinalität – Anzahl der Arrayelemente
     

    Kardinalität – Anzahl der Arrayelemente
    CARDINALITY(ARRAY['Deutsch', Türkisch'])
    -- liefert den Wert 2
     

    Neue Typkonstruktoren
    Arraytyp – ARRAY   Vergleich zweier Arrays
     

    Vergleich zweier Arrays
    möglich g.d.w. ihre Elementtypen vergleichbar sind

     

    Zwei vergleichbare Arrays A1 und A2 sind gleich (A1=A2) g.d.w
    (1) sie die gleiche Kardinalität besitzen und
    (2) alle Elemente paarweise gleich sind
     

    Neue Typkonstruktoren
    Multimengentyp – MULTISET Konstruktor
     

    Ungeordnet, mit Duplikaten – Konstruktor:

    •  MULTISET(werteliste)
    •  Leere Multimenge
    •  Mit Werten initialisierte Multimenge

    MULTISET()

    MULTISET(17, 4, 7, 4)

     

    Neue Typkonstruktoren
    Multimengentyp – MULTISET Entschachtelung
     

    Entschachtelung

    UNNEST-Operator transformiert Multiset in Tabelle

    Aus einer Anfrage erzeugte Multimenge
     

    MULTISET(SELECT f.nichtAnwesend
    FROM MitarbeiterTupeltabelle,
    UNNEST(Fehltage) f (nichtAnwesend);
     

    Elementtyp wird durch Zeilentyp der Tabelle bestimmt

    •  Tabelle hat genau 1 Attribut A1: Elementtyp = Type(A1)
    •  Tabelle hat mehr Attribute: Elementtyp = ROW(Type(A1),...Type(An))
       

    Neue Typkonstruktoren
    Multimengentyp – MULTISET  Operatoren auflisten

    Duplikateliminierung, Elementtest, Mengenoperatoren, etc.
     

    Neue Typkonstruktoren
    Referenztyp – REF
     

    Zur Bildung eines Objekt-IDs (unveränderlich – OID)
    l = Referenz auf ein Objekt in einer Objekt-Tabelle 


    REF (strukturierter Typ)
    [SCOPE gültigkeitsbereich]
     

    Gültigkeitsbereich: bestimmte Tabelle(n) oder alle Tabellen
     

    Neue Typkonstruktoren
    Referenztyp – REF Dereferenzierung
     

    Dereferenzierung  -> Operator

    liefert EINZELNE Referenzattributwerte
     

    SELECT Abteilung->Name
    FROM MitarbeiterTupeltabelle;
     

    Neue Typkonstruktoren
    Referenztyp – REF Referenzauflösung
     

    Referenzauflösung DEREF-Operator
     liefert ALLE Attributwerte des referenzierte Objekts


    SELECT DEREF(Abteilung)
    FROM MitarbeiterTupeltabelle;
     

    Neue Typkonstruktoren
    Referenztyp – REF Referenzauflösung vs Dereferenzierung

    Referenzauflösung DEREF-Operator
     liefert ALLE Attributwerte des referenzierte Objekts

     

    Dereferenzierung  -> Operator

    liefert EINZELNE Referenzattributwerte

    Benutzerdefinierte Typen
    Zwei Arten
     

    Distinct-Typen
    l Kopie eines existierenden Datentyps mit neuem Namen
     

    Strukturierte Typen
    l Typkonstruktor für benannte, strukturierte Datentypen
     

    Distinct-Typen

    Kopie eines existierenden Datentyps mit neuem Namen

     

    Benutzerdefinierter Datentyp, der eine Kopie eines
    Basisdatentyps unter einem neuen Namen ablegt


    l Wiederverwendung


    l Strenge Typisierung (basiert auf Namensäquivalenz)


    l Obligates (!) Schlüsselwort FINAL schließt Subtypbildung aus


    l Systemdefinierte Vergleichsoperatoren basierend auf dem Quelltyp


    l Cast-Operatoren zur Konversion zwischen Distinct- und Quelltyp
     

    Strukturierte Typen

    Typkonstruktor für benannte, strukturierte Datentypen

    Benutzerdefinierte Typen

    Distinct-Typen Vergleich/Zuweisung ??

    Kein Vergleich/Zuweisung von Attributen verschiedener
    Distinct-Typen (auch wenn gleicher Basisdatentyp!)
     

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

     

    CREATE TABLE Konto (
    standAusland Dollar,
    standInland Euro)

    Attribute nicht vergleichbar – Typkonflikt!
     

     

    Benutzerdefinierte Typen

    Distinct- Typen – Cast-Funktionen

    Explizite Konvertierung zum gemeinsamen Quelltyp


    ELECT k.standDollar

    FROMKonto k

    WHERECAST(k.standDollar AS DECIMAL(12,2)) >
    CAST(k.standEuro AS DECIMAL(12,2));

     

     

    Benutzerdefinierte Cast-Funktion zur Wert-Konvertierung
    l Schritt 1:
    ¡ Stored Procedure definieren, die Konvertierung vornimmt
    l Schritt 2:
    ¡ CREATE CAST (Dollar AS Euro) WITH Name_of_stored_procedure
    l Schritt 3:
    ¡ Erneuter Vergleich auf Basis der benutzerdefinierten Cast-Funktion

     

    Impliziter Aufruf der Cast-Funktion bei Vergleichen möglich
    l Definition wie in Schritt 2 oben inkl. Schlüsselwort
    „AS ASSIGNMENT“
     

    Benutzerdefinierte Typen

    Distinct- Typen – Cast-Funktionen

     Impliziter Aufruf der Cast-Funktion bei Vergleichen

    Impliziter Aufruf der Cast-Funktion bei Vergleichen möglich
    l Definition wie in Schritt 2 oben inkl. Schlüsselwort
    „AS ASSIGNMENT“

    Benutzerdefinierte Typen

    Distinct- Typen – Cast-Funktionen

    Benutzerdefinierte Cast-Funktion zur Wert-Konvertierung

    l Schritt 1:
    ¡ Stored Procedure definieren, die Konvertierung vornimmt
    l Schritt 2:
    ¡ CREATE CAST (Dollar AS Euro) WITH Name_of_stored_procedure
    l Schritt 3:
    ¡ Erneuter Vergleich auf Basis der benutzerdefinierten Cast-Funktion

    Benutzerdefinierte Typen

    Distinct- Typen – Cast-Funktionen

    Explizite Konvertierung zum gemeinsamen Quelltyp

    ELECT k.standDollar

    FROMKonto k

    WHERECAST(k.standDollar AS DECIMAL(12,2)) >
    CAST(k.standEuro AS DECIMAL(12,2));

    Benutzerdefinierte Typen
    Strukturierte Typen
     

    Benutzerdefinierter Datentyp, der einem Objekttyp mit Attributen und Methoden entspricht

    CREATE TYPE <typname>
    AS (Attributdefinitionsliste)
    [[NOT] INSTANTIABLE]
    [NOT] FINAL
    [Referenzgenerierung [Referenzcasting]]
    [Methodendeklarationsliste]
     

    Ein strukturierter Typ heißt Wurzeltyp, wenn

    wenn er keinen Supertyp besitzt
     

    Welcher benutzerdefinierter Datentyp, entspricht einem Objekttyp mit Attributen und Methoden ?

    Strukturierte Typ

    Benutzerdefinierte Typen
    Strukturierte Typen
    Optionale Angaben
     

    Optionale Angaben
    Instanziierung verbieten (abstrakter Typ)
    l FINAL-Klausel erlaubt bzw. verbietet Subtypbildung
    l Bestimmen der Referenzgenerierung (OID-Erzeugung) –Angabe nur bei Wurzeltyp möglich – gilt für alle Subtypen!
    l Objektverhalten in Methoden kodieren
     

    Benutzerdefinierte Typen
    Strukturierte Typen – Referenzgenerierung
     

    REF IS oid USER GENERATED
     

    REF IS oid SYSTEM GENERATED
     

    REF IS oid DERIVED (attributliste)
    ID wird abgeleitet von anderen Attributen (z.B. PK)
     

    Benutzerdefinierte Typen
    Strukturierte Typen – Einsatzmöglichkeiten
     

    1. Attributtyp anderer strukturierter Typen
    2. Parametertyp von Methoden, Funktionen und Prozeduren
    3.  Typ von SQL-Variablen
    4.  Typ von Tabellenspalten
    5.  Typ einer gesamten Tabelle

     

    Benutzerdefinierte Typen
    Strukturierte Typen – Einsatzmöglichkeiten
     

    Basisdatentypen

    CREATE TYPE AdressTyp AS

    (

    • ​​​​​​​____
    • ____
    • ...

    )

    CREATE TYPE AdressTyp AS (
    strasse VARCHAR(30),
    nr DECIMAL(4),
    plz DECIMAL(5),
    ort VARCHAR(40),
    land VARCHAR(25)
    )
    NOT FINAL;

    Benutzerdefinierte Typen
    Strukturierte Typen – Einsatzmöglichkeiten


    Strukturierter Typ (Einbettung)
    Strukturierter Typ (ein- und mehrwertige Referenzen)

     

    CREATE TYPE AdressTyp AS (
    strasse VARCHAR(30),
    nr DECIMAL(4),
    plz DECIMAL(5),
    ort VARCHAR(40),
    land VARCHAR(25)
    )
    NOT FINAL;

     

    CREATE TYPE PersonTyp AS

    (name   ___      erzeuge einen Basisdatentyp
    anschrift  ___     Einbettung eines strukturierten Typs
    ehepartner ___  struk. Typ einwertige Referenzen
    kinder___  struk. Typ mehrwertige Referenzen
    )
    NOT FINAL

    REF IS SYSTEM GENERATED;

     

     

     

    CREATE TYPE PersonTyp AS(
    name VARCHAR30),
    anschrift AdressTyp
    ehepartner REF(PersonTyp),
    kinder REF(PersonTyp) ARRAY[10]
    )
    NOT FINAL
    REF IS SYSTEM GENERATED;

    Benutzerdefinierte Typen
    Strukturierte Typen – Instanzerzeugung

     

    1. Nutzung des DefaultKonstruktors Typname()
       
    2. Definition + Nutzung eines überladenen Konstruktors

     

    CREATE FUNCTION AdressTyp (s VARCHAR(30),

    n DECIMAL(4),
    p DECIMAL(5),

    o VARCHAR(40),
    l VARCHAR(25))
    RETURNS AdressTyp
    RETURN AdressTyp().Strasse(s).Nr(n).PLZ(p).Ort(o).Land(l);

     

    CREATE FUNCTION PersonTyp (n VARCHAR(30), a AdressTyp)
    RETURNS PersonTyp
    BEGIN
    DECLARE p PersonTyp;
    SET p = PersonTyp();
    SET p.Name = n;
    SET p.Anschrift = a;
    ...
    RETURN p;
    END;
     

    Benutzerdefinierte Typen
    Strukturierte Typen – Instanzerzeugung

    Definition + Nutzung eines überladenen Konstruktors

     

    Person

    • Name
    • Anschrift
       

    CREATE FUNCTION PersonTyp (n VARCHAR(30), a AdressTyp)
    RETURNS PersonTyp
    BEGIN
    DECLARE p PersonTyp;
    SET p = PersonTyp();
    SET p.Name = n;
    SET p.Anschrift = a;
    ...
    RETURN p;
    END;

    Benutzerdefinierte Typen
    Aufbau von Typhierarchien
     

    Subtypdefinition mittels
    UNDER-Klausel

    •  Subtyp hat einen direkten Supertyp
      • keine direkte Mehrfachvererbung
    •  Supertyp muss selbst ein strukturierter Typ sein
    •  Subtyp erbt alle Attribute und Methoden des Supertyps
    •  Subtyp kann geerbte Methoden überschreiben und überladen

    Benutzerdefinierte Typen
    Was sind Methoden ?
     

    Methoden sind Prozeduren, die zu einem strukturierten Typ gehören
     

    Benutzerdefinierte Typen

    Wo erfolgt die Deklaration einer Methode ? 

    Deklaration erfolgt innerhalb der Typdefinition
     

    Benutzerdefinierte Typen
    Methoden
    Overloading, Overriding und Late Binding
     

    • Überladen von Methodennamen
      •  mehrere gleichnamige Methoden mit unterschiedlichen Parametern
    • Dynamisches Binden von überschriebenen Methoden zur Laufzeit
      • Auswahl der Implementierung hängt vom strukturierten Typ ab

     

     Besonderheiten:

    •  impliziter SELF-Parameter (vergleichbar this in C++, Java)
    •  getrennte Spezifikation von Signatur und Implementierung
    •  automatisch generierte set/get-Methoden für alle Attribute eines Typs – Kapselung!
    • l Vergleichs- und Ordnungsoperatoren für Instanzen benutzerdefinierter Typen spezifizierbar

    Benutzerdefinierte Typen
    Methoden

    Getrennte Spezifikation von

    getrennte Spezifikation von Signatur und Implementierung
     

    Benutzerdefinierte Typen
    Methoden

    Welche Methoden werden automatisch generiert ? 

    automatisch generierte set/get-Methoden für alle Attribute
    eines Typs – Kapselung!
     

    Benutzerdefinierte Typen
    Methoden
    Overloading, Überladen von Methodennamen

    mehrere gleichnamige Methoden mit unterschiedlichen Parametern
     

    Benutzerdefinierte Typen

    Methodenimplementierung
     

    REATE TYPE PersonTyp AS (
    ...
    ) NOT FINAL
    METHOD AnzahlKinder() RETURNS INTEGER;

     

    CREATE METHOD AnzahlKinder()
    RETURNS INTEGER
    FOR PersonTyp
    BEGIN
    ...
    END;

     

    Benutzerdefinierte Typen
    Zusammenfassung

    Distinct-Typen
     

    Distinct-Typen als Kopien vorhandener Typen
    l Strenge Typisierung
    l Typkompatibilität über Namensäquivalenz
     

    Benutzerdefinierte Typen
    Zusammenfassung

    Strukturierte Typen
     

    Strukturierte Typen als abstrakte Objekttypen

    • l Objekteinbettung vs. Objektreferenzierung
      • ¡ Kopier- vs. Referenzsemantik
    • l Kapselung
      • ¡ Implizierte Observer- und Mutator-Methoden für alle Attribute
    • l Aggregationshierarchien
      • ¡ Strukturierte Typen zusammengesetzt aus anderen
    • l Typhierarchien
      • ¡ Subtypbildung
    • l Overloading / Overriding von Methoden plus dynamisches Binden
    • l Vergleichbarkeit und Ordnung
       

    Alternative zu Tupel-Tabellen

     

    Typisierte Tabellen

     

     

    Attribute von Tupel-Tabellen können ____?

     

    Attribute können nur Basisdatentypen sein und Tupel speichern
     

    „Typisierte Tabellen“ bzw. „Objekt-Tabellen“

    Tabellentyp wird durch ___________ festgelegt

     

    Tabellentyp wird durch strukturierten Typ festgelegt

     

     

    Attribute von „Typisierten Tabellen“ bzw. „Objekt-Tabellen“   können ____?

    Attribute können array-, multimengen-, tupel-, objekt- und 

    referenzwertig sein


     

    Attribute von „Typisierten Tabellen“ bzw. „Objekt-Tabellen“    vs 

    Attribute von Tupel-Tabellen

    Attribute von „Typisierten Tabellen“ können array-, multimengen-, tupel-, objekt- und referenzwertig sein

     

    Attribute von Tupel-Tabellen können nur Basisdatentypen sein und Tupel speichern

    Zeilen von „Typisierten Tabellen“ bzw. „Objekt-Tabellen“    vs 

    Zeilen von Tupel-Tabellen

    Zeilen von „Typisierten Tabellen“ bzw. „Objekt-Tabellen“

    • Zeilen entsprechen Objekten (Instanzen) des festgelegten Typs
    • Zeilen haben OID-Spalte und sind referenzierbar
    • Methoden können über
      Dereferenzierung von OIDs auf Zeilen aufgerufen werden
    • Integritätsbedingungen spezifizierbar
    • Tabellenhierarchien (Subtabellen) sind möglich
    • Entsprechen in etwa dem Konzept einer Klasse
       

     

    Zeilen von Tupel-Tabellen

    sind Tupeln

    Auch Tupel-Tabellen können seit SQL:1999 nicht-atomare Attribute aufweisen
     Allerdings werden weiterhin nur Tupel gespeichert, keine Objekte  D.h. kein OID, keine Methoden, keine Subtabellen, etc.
     

    Methoden können über __________________ von ____ auf Zeilen aufgerufen werden
     

    Methoden können über
    Dereferenzierung von OIDs auf Zeilen aufgerufen werden
     

    Können Tupel-Tabellen können nicht-atomare Attribute aufweisen ?

    Ja

    Auch Tupel-Tabellen können seit SQL:1999 nicht-atomare Attribute aufweisen

    Typisierte Tabellen
    Subtabellen
    Subtabellendefinition
     

    Subtabellendefinition mittels UNDER-Klausel
     

    CREATE TABLE SubTabName OF TypName
    UNDER SuperTabName
    [(SpaltenName WITH OPTIONS Options)];

     

    SCOPE TypisierteTabelle
    | DEFAULT Wert
    | Integritätsbedingung
     

     

    Subtabelle hat ______ Supertabelle/n
     

    Subtabelle hat genau eine direkte Supertabelle
     

    Typ der Subtabelle muss _____

     

    Typ der Subtabelle muss ein direkter Subtyp
    des Typs der Supertabelle sein

     

    (Tiefe) Extension der Subtabelle muss _______
     

    immer eine Untermenge der (tiefen) Extension der
    Supertabelle sein

    Alle Zeilen der Subtabelle sind in der Supertabelle sichtbar
     

    Ja

    allerdings nur supertypspezifische Spalten
     

    Typisierte Tabellen
    Subtabellen

    • Subtabelle hat genau eine direkte Supertabelle
      • l keine direkte Mehrfachspezialisierung
      • l Typ der Subtabelle muss ein direkter Subtyp des Typs der Supertabelle sein
    •  (Tiefe) Extension der Subtabelle muss imme eine Untermenge der (tiefen) Extension der Supertabelle sein
      • l Instanzen der Subtabelle sind auch Mitglieder der zugehörigen Supertabellen
      • l Alle Zeilen der Subtabelle sind in der Supertabelle sichtbar
      • l allerdings nur supertypspezifische Spalten

    ypisierte Tabellen
    Tiefe und flache Extensionen
     

    Tiefe Extension
    l alle Objekte einer Tabelle inkl. der Objekte der Subtabellen


    Flache Extension
    l ohne Objekte der Subtabellen

     

    SELECT * FROM ONLY(<supertabelle>);