Kapitel 13: Objektorientierte Datenbanken Flashcards

1
Q

Was sind Nachteile relationaler Modelierung?

A
  • Segmentierung: z.b. Kann ein Buch mehrere Verlage haben, welche mehrere Niederlassungen haben (niedrige Performance bei komplexen Suchanfragen)
  • Künstliche Schlüsselattribute: z.b. haben Kante und Fläche keine sinnvollen Schlüssel bei Polyeder
  • Fehlendes Verhalten: z.b. gegenstand um x% rotiert ausgeben lassen nicht möglich
  • Externe Programmierschnittstelle:
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was ist der Impendance Match?

A

Problem ist, dass Programm und DB zwei unterschiedliche Vorstellungen haben wie die Wirklichkeit aussieht. Alles ist Tabelle vs Objekte.
Programmiersprache passt nicht zur Datenbank

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Vorteile objektorientierter Datenmodellierung?

A
  • Objektkapselung: Information hiding
  • Wiederverwendbarkeit
  • Operationen sind direkt in der Sprache des Objektmodells realisiert (kein Impedance Mismatch)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wie sieht der Standard der objektorientierten DB Haltung aus - was sind die Motivationen?

A
  1. Objektmodell: Wie tickt die DB
  2. Object Definition Language (ODL): Schema
  3. Object Query Language (OQL): Wie SQL nur schöner
  4. C++ Anbindung
  5. Smalltalk Anbindung
  6. Java Anbindung

Motivation:

  • Portabilitäts-Standards
  • Kein interoperabilität-standard
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wie kann ODMG implementiert werden (Skizze)?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wie könnte eine 1:1 Beziehung in ODMG aussehen?

A

class Professor {

attribute long PersNr;

relationship Raeume residiertIn; //Wie foreign Key. Stellt integrität sicher. So ist kein Zeiger ins nirgendwo möglich wie bei attribute

};

class Raeume {

attribute long RaumNr;

attribute short Groesse;

relationship Professor beherbergt;

}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Welche Ergänzung ist bei einer 1:n Beziehung notwendig?

A

//Inverse: System stellt sicher, dass DB konsistent ist und zeiger paarweise aufeinander zeigen

class Professoren {
attribute long PersNr;

relationship Räume residiertIn inverse Räume::beherbergt;

};
class Räume {

attribute long RaumNr; attribute short Größe;

relationship Professoren beherbergt inverse Professoren::residiertIn };

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Beispiel einer n:m Beziehung?

A

//hört und hörer = sets prüft auch automatisch konsistenz

class Professoren {
attribute long PersNr;

relationship Räume residiertIn inverse Räume::beherbergt;

};
class Räume {

attribute long RaumNr; attribute short Größe;

relationship Professoren beherbergt inverse Professoren::residiertIn };

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wie könnte eine Ternäre Beziehung aussehen?

A

//Für ternäre Beziehunen muss ein objekt angelegt werden. Z.b. Prüfung. dies hält dann eine Menge von binären Beziehungen

class Prüfungen { attribute struct Datum

{ short Tag; short Monat; short Jahr} Prüfdatum; attribute float Note;
relationship Professoren Prüfer inverse

Professoren::hatGeprüft; relationship Studenten Prüfling inverse

Studenten::wurdeGeprüft; relationship Vorlesungen Inhalt inverse

Vorlesungen::wurdeAbgeprüft; };

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Beispiel aus dem Universitäts-Schema: Beziehungen erklären

A

class Professoren {
attribute long PersNr;
attribute string Name;
attribute string Rang; //Attribute
relationship Räume residiertIn inverse Räume::beherbergt; relationship set(Vorlesungen) liest inverse Vorlesungen::gelesenVon relationship set(Prüfungen) hatGeprüft inverse Prüfungen::Prüfer; //Beziehungen

};
class Vorlesungen {

attribute long VorlNr;
attribute string Titel;
attribute short SWS;
relationship Professoren gelesenVon
inverse Professoren::liest;
relationship set(Studenten) Hörer inverse Studenten::hört;
relationship set(Vorlesungen) Nachfolger inverse Vorlesungen::Vorgänger; relationship set(Vorlesungen) Vorgänger inverse Vorlesungen::Nachfolger; relationship set(Prüfungen) wurdeAbgeprüft inverse Prüfungen::Inhalt;

};
class Studenten {

relationship set(Prüfungen) wurdeGeprüft inverse Prüfungen::Prüfling; };

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Welche Eigenschaften hat ein Objekt im objektbasierten Modell?

A
  • Identität: Relational: Tupel kann ausschießlich über Werte identifiziert werden (z.B. Tupel löschen und wieder einfügen. Man kann dann nicht herausfinden, dass es mal gelöscht wrude)
    Objektorientiert:
    Haben zusätzlich zu jeder Spalte noch eine ObjektID - diese wird nach dem löschen neu (Jedes Tupel hat eigene ID).
  • Typ: Objekte haben eine Intentität + Typ + Attributwerte
  • Wert / Zustand
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Genaurer Beschreibung der Objekt-Identität:

A
  • Gilt als wesentliches Charakteristikum objektorientierter Datenmodellierung
  • Verweise werden über OIDs realisiert (OID ist pointer auf Objekt)
    • Physische OID:
      • Enthalten Speicherort des Objekts
      • Entsprechen den Tupel IDs relationaler DBs
      • Vorteil: Billiger Objektzugriff, da ich direkt von Objekt zu Objekt springen kann
      • Nachteil: Wird Objekt verschoben, muss ich alle Zeiger anpassen.
    • Logische OID:
      • Unabhängig vom Speicherort des Objekts
      • Objekte können verschoben werden
      • Indirektion über “Mapping” Struktur
      • Vorteil: Verschieben möglich
      • Nachteil: Indirektion teuer, da ich schreiben muss
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was bedeuten die Typeigenschaften Extension und Schlüssel

A

class Studenten (extent AlleStudenten key MatrNr) { attribute long MatrNr;

//extent: Sicht die alle Objekte eines Datentyps liefert

//**key:** Schlüssel können eindeutig über OID identifiziert werden 
attribute string Name;
attribute short Semester;

relationship set(Vorlesungen) hört inverse Vorlesungen::Hörer;

relationship set(Prüfungen) wurdeGeprüft inverse Prüfungen::Prüfling;

};

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Erkläre die drei Klassen zur Modellierung des Verhaltens:

A
  • Beobachter: (z.b. Volumenberechnung)
    • oft auch Funktionen genannt
    • Erfragen “Objektzustand”
    • Keine Objektändernden Effekte
  • Mutatoren (Verändert das Objekt - z.b. Rotate / permantent)
    • Änderung des Zustands
    • Objekttyp mit mindestens einem Mutator = mutierbar
    • Objekttyp ohne Mutator = immutable
  • Konstruktoren / Destruktoren
    • Verwendet um neue Objekte zu erzeugen oder zu zerstören
    • Destruktor eine Art von Mutator
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Wie sieht die Klassendefinition in ODL aus?

A
  • den Namen der Operation;
  • die Anzahl und die Typen der Parameter; ! den Typ des Rückgabewerts der Operation;
  • eine eventuell durch die Operationsausführung ausgelöste Ausnahmebehandlung (engl. exception handling).

class Professoren {

//exception handling

exception hatNochNichtGeprüft {};
exception schonHöchsteStufe {};

//observer
float wieHartAlsPrüfer() raises (hatNochNichtGeprüft);

//mutator

void befördert() raises (schonHöchsteStufe);

};

Aufruf der Operation: meinLieblingsProf→befördert()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Erkläre das Vererbungsprinzip in ODL

A
  • Man unterscheidet zwischen Ober/ und Untertypen
  • Instanz eines Untertyps gehört auch zur extension des Obertyps
  • Vererbung der Eigenschaften eines Obertyps an den Untertyp
  • Nur einfach Vererbung möglich

Codebeispiel:

class Angestellte (extent AlleAngestellte) { attribute long PersNr;
attribute string Name;
attribute date GebDatum;

short Alter();

long Gehalt(); };

class Assistenten extends Angestellte (extent AlleAssistenten) { attribute string Fachgebiet;

};

class Professoren extends Angestellte (extent AlleProfessoren) { attribute string Rang;
relationship Räume residiertIn inverse Räume::beherbergt; relationship set(Vorlesungen) liest inverse Vorlesungen::gelesenVon; relationship set(Prüfungen) hatGeprüft inverse Prüfungen::Prüfer;

}

17
Q

Erkläre das Prinzip der späten Bindung

A
  • Angestellte erhalten: 2000 + (Alter() – 21) * 100
  • Assistenten bekommen: 2500 + (Alter() – 21) * 125
  • Professoren erhalten: 3000 + (Alter() – 21) * 150
  • //Durch späte Bindung ruft er die jeweils richtige Funktion auf (Prüft Datentyp und Funktion
    • select sum(a.Gehalt())
    • from a in AlleAngestellten
  • ! für das Objekt id1 wird die Professoren-spezifische Gehalts- Berechnung durchgeführt,
  • ! für das Objekt id11 die Assistenten-spezifische und
  • ! für das Objekt id7 die allgemeinste, also Angestellten- spezifische Realisierung der Operation Gehalt gebu
18
Q

Wie kann die Programmiersprachen-Anbindung realisiert werden?

A
  • Entwurf einer neuen Sprache
    • hoher Realisierungsaufwand
    • eleganteste Methode
  • Erweiterung einer bestehenden Sprache
    • manchmal unnatürlich wirkende Erweiterung der Basissprache
    • muss keine neue Sprache lernen
  • Datenbankfähigkeit durch Typbibliothek
    • Einfachste Möglichkeit zur Erreichung von Persistenz
    • höchster Reibungsverlust
    • ODMG Ansatz
19
Q

Wie sehen Transaktionen in ODMG aus?

A
  • Schachtelung von Transaktionen
  • notwendig um Operationen, die TAs repräsentieren, geschachtelt aufrufen zu können.

void Professoren::Umziehen(Ref 〈Räume〉 neuerRaum) { Transaction TAumziehen;
TAumziehen.start();

if ( /*Fehler? */ ) TAumziehen.abort();

TAumziehen.commit(); };

20
Q

Wie kann man ODMG modellieren? TEchnik

A

UML: Kombination von Booch Notation und Raumbaugh Notation

21
Q

Zusammenfassung Objektrelationale Datenbanken

A
  • Mengenwertige Attribute
  • Typdeklarationen
  • Referenzen
  • Objektidentität
  • Pfadausdrücke
  • Vererbung
  • Operationen
22
Q

Wie unterscheidet sich das Konzept eines Objekt im Objekt-Orientierten Modell von dem einer Entität im Entity-Relationship Modell?

A

Eine Entität ist ein einfacher Datenwert oder auch eine Sammlung von Datenwer-
ten. Ein Objekt hat auch zugeordnete Datenwerte (Zustand) aber zusätzlich noch Methoden (Verhalten) und eine fest Identität. Je nach Implementierung kann der Daten-zugriff und insbesondere auch -Veränderung nur über eine vordefinierte Menge

von Methoden erfolgen.

23
Q

Sie müssen als Berater ein Datenbanksystem für einen Kunden auswählen. Ent- scheiden sie für jeden der folgenden Anwendungsbereiche welche Art von Datenbanksystem am Besten passen würde (Relational, Objekt-Orientierte Datenbank, Objekt-Relationale Datenbanken). Begründen Sie ihre Entscheidung.

  1. Eine CAD Anwendung für einen Flugzeugbauer
  2. Eine Spendendatenbank um die Spenden an Bundestagsmitglieder zu verfolgen
  3. Ein Anwendung zur Unterstützung des Filmmarketings
A
  • CAD Anwendung: Ein OODB System scheint hier am geeignetsten. Ein CAD System arbeitet oft mit komplexen Datentypen und ist auch inhärent Objekt- Orientiert. Die hierarchischen Strukturen in Modellen lässt sich besonders gut durch Objekte abbilden.
  • Spendendatenbank: Ein relationales Datenbanksystem müsste für diesen Fall ausreichend sein. Die erwarteten Datentypen sind einfach strukturiert. Der wich- tigste Aspekt wird eine mächtige Anfragesprache sein.
  • Filmmarketing: In diesem Szenario werden wahrscheinlich oft auch Multimedia oder ähnlich komplexe Datentypen verwendet werden. Der Aufbau der Daten- bank wird aber relativ einfach sein und sollte gut in einer Objekt-Relationalen Datenbank umsetzbar sein.
24
Q

Was ist der Unterschied zwischen extent und extends in ODL?

A
  • Mit extends wird Vererbung realisiert. Mit diesem Keyword wird angegeben dass die aktuelle Klasse eine Spezialisierung einer anderen Klasse ist. Als Unterklasse hat Sie auch Zugriff auf die Schnittstellen der Oberklasse.
    Syntax: class Assistent extends Angestellter …
  • Mit extent wird der Menge aller Objekte die zu dieser Klasse gehören ein Name gege- ben. Der extent einer Klasse entspricht ungefähr einer Relation in einer Relationalen Datenbank. Diesem Vergleich folgenden, wäre dann ein Objekt ein Tupel.
    Syntax: class Assistent (extent Assistenten) ..
25
Q

Sie wollen ein Onlineverzeichnis für Bars erstellen. Für jede Bar soll das Menü inklusive Preise gespeichert werden. Erstellen Sie ein ODL Schema fu ̈r die Klassen in Abbildung 1.

A

class Bar (extent Bars) {
attribute string name;
attribute string addr;
relationship Set(Verkauf) verkaufteBiere inverse Verkauf::bar;

}
class Bier (extent Biere) {

attribute string name;
attribute string hersteller;
relationship Set(Verkauf) verkauftBei inverse Verkauf::bier;

}
class Verkauf (extent Verkaeufe) {

attribute float preis;
relationship Bar bar inverse Bar::verkaufteBiere; relationship Bier bier inverse Bier::verkauftBei;

}

26
Q

Schreiben sie folgende Anfragen basierend auf dem Schema für das Onlinebarverzeichnis in der OQL (Object Query Language).

  1. Geben Sie ein Menü der Bar Joe’s aus.
  2. Finden Sie den Namen und Preis aller Biere bei Joe’s die mit B anfangen.
  3. Geben Sie die Liste aller Hersteller von Bieren aus, die bei Joe’s verkauft werden
  4. Ermitteln Sie den Durchschnittspreis der Biere in allen Bars
  5. Ermitteln Sie die Durchschnittspreise der Biere jeweils pro Bar
A

1: Variante A

SELECT v.bier.name, v.preis FROM v in Verkaeufe
WHERE v.bar.name = “Joe’s”

1: Variante B

SELECT v.bier.name, v.preis
FROM b in Bars, v in b.verkaufteBiere WHERE b.name = “Joe’s”

2:

SELECT v.bier.name, v.preis
FROM b in Bars, v in b.verkaufteBiere WHERE b.name = “Joe’s” AND

v. bier.name LIKE “B*”
2: Variante B

SELECT v.bier.name, v.preis FROM v in Verkaeufe
WHERE v.bar.name = “Joe’s” AND

v.bier.name LIKE “B*”

3:

SELECT DISTINCT v.bier.hersteller FROM v in Verkaeufe
WHERE v.bar.name = “Joe’s”

4:

AVG(SELECT v.preis
FROM v in Verkaeufe );

5:

SELECT bar.name, AVG(preis) FROM Verkaeufe
GROUP BY bar;