Sie befinden sich hier: Termine » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 6 » Prüfung OODB/MMDB April 2016   (Übersicht)

Prüfung OODB/MMDB April 2016

  • Prüfer: Prof. Dr-Ing. Klaus Mayer-Wegener
  • Atmosphäre: relativ entspannt
  • Vorbereitung: Skript stichpunktartig verfassen und lernen, Prüfungsprotokolle anschauen 8-)
  • Vorbereitungszeit: 1,5 bis 2 Wochen

OODB

1. Was ist ODMG?

ODMG ist :

  • Object Database Management Group. Zusammenschluss mehrerer Firmen, die ihre objektorientierten Datenbanksysteme normieren wollten.
  • Norm (Portabilität)

Bestandteile:

  • Objektmodell
  • Datenanfragesprache: OQL
  • Datendefinitionssprache: ODL
  • Anbindung an OO-Sprache
  • kein OML (wird per OO-Sprache gemacht)

2. Was wurde denn normalisiert?

Hier wollte er vor allem Persistenz hören. Möglichkeiten bei der Normalisierung:

Persistenzdefinition:

  • typabhängig (bspw. durch Erben von d_Object)
  • typunabhängig (=objektabhängig)

Persistierung:

  • statisch
  • dynamisch

Persistenzpropagierung:

  • automatisch (Viel Müll wird persistent gespeichert!)
  • explizit
  • (Zwischenfrage: Wie hat es ODMG gemacht? → explizite Propagierung)

Persistente Klassenextention:

  • implizit (für jede persistente Klasse)
  • explizit (z.B. durch Schlüsselwort „extent“)

3. Definieren Sie einen Datentyp ihrer Wahl in ODL

interface Person (extent Personen key PIN) {
	//Zwischenfrage: Hier musste man das Konzept der Extention erklären.
	attribute int PIN;
	attribute string Name;
	attribute date Geburtsdatum;
	relationship Set<Person> _Eltern inverse Person::_Kinder;
	relationship Set<Person> _Kinder inverse Person::_Eltern;
	//Erwähnt habe ich noch die Bidirektionalität der Relationships.
}

4. Was gehört noch dazu?

Verhalten: Funktionen

5. Wieso hat man sich für bidirektrionale Beziehungen entschieden:

referenzielle Integrität, Anwendungsneutralität

MMDB

1. Modellieren Sie einen Datentyp ihrer Wahl:

Via Java: Image

interface Image {
	//Aufbau nur mündlich erwähnt.
}
public class ImageClass implements Image {
	//Aufbau nicht weiter erwähnt, nur dass hier die Attribute gespeichert werden.
}	

Aufbau des Mediums:

  • Rohdaten
  • Registrierungsdaten
  • Beschreibugsdaten

Methoden zum Interface (mündlich):

  • height, width, window (zur Änderung), replaceColorMap, replacePixrect, compareHistogram

2. Wie komme ich denn an den Inhalt heran?

  • getPixrect()
  • asJPG()
  • asGIF()

3. Motivation von asJPG

= Erläuterung von Datenunabhängigkeit

4. Geben Sie ein RDB-Schema an um den Typ zu speichern.

Fotos(
	FID integer PRIMARY KEY AUTOINCREMENT,
	Foto Image
)

5. Speichern Sie ein Bild:

INSERT INTO Fotos (Foto) VALUES (ImageClass(:pr, :cm));

pr steht für eine Variable, in der ein Pixrect abgelegt ist.<br> cm = ColorMap

6. Was macht die compareHistogram Methode?

  • Vergleicht das Aktuelle Histogramm mit dem eines anderen Bildes.
  • Auf X-Achse: Pixelwert, auf Y-Achse: Häufigkeit.
  • Differenz Histogramm: Werte einzeln voneinander abziehen und Betrag bilden.
  • Danach Beträge der Differenzen zu einem Wert aufaddieren.
  • Auf Basis dessen ein Ähnlichkeitsmaß errechnen.

7. Formulieren Sie eine lesende Anfrage. Benutzen Sie dabei compareHistogram().

SELECT FID, Foto.asJPG() FROM Fotos WHERE Foto.compareHistogram(ImageClass('a.JPG')) >= 0.7