MARTIN-LUTHER-UNIVERSITÄT HALLE-WITTENBERG
Institut für Informatik
Prof. Dr. Stefan Brass
Datenbanken IIA (Datenbank-Entwurf)
Informationen über mündliche Prüfungen
Die folgenden Informationen sind selbstverständlich
nicht eine vollständige Liste aller möglichen
Prüfungsfragen, sollten aber schon einen guten
Anhaltspunkt für Ihre Vorbereitung geben.
Diese Seite hat ein striktes Copyright (C) 2007 von Stefan Brass.
Sie dürfen sie keinesfalls an anderer Stelle ins Netz stellen.
Ich behalte mir vor,
sie jederzeit wieder aus dem Netz heraus zu nehmen.
Links auf diese Seite sind natürlich zulässig.
Beispiele für Prüfungsfragen
Allgemeines
- Was sind die klassischen drei Phasen des Datenbank-Entwurfs?
- Warum macht es Sinn,
in mehreren Phasen vorzugeben,
und nicht gleich die fertigen CREATE TABLE Anweisungen
in der Syntax des jeweiligen Systems zu schreiben?
- Wie kann man Fehler im Datenbank-Schema klassifizieren?
- Nennen Sie Qualitätskriterien für Datenbank-Schemata.
- Wie ist die Beziehung zwischen der Spezifikation von Anwendungsprogrammen
und Datenbank-Schema?
- Erklären Sie die CRUD-Matrix.
Oracle Designer
- Nennen Sie einige Vorteile von CASE-Werkzeugen
(wie z.B. Oracle Designer)
gegenüber der Verwendung von Word und Zeichenprogrammen.
- Beschreiben Sie,
in welchen Schritten man mit Oracle Designer ein Datenbank-Schema erstellt.
Was sind die wesentlichen Teilwerkzeuge von Oracle Designer,
die wir in der Vorlesung betrachtet haben?
- Was ist ein Repository?
- Erklären Sie,
wie man bei großen Schemata mehrere Diagramme haben kann.
- Nennen Sie einige Daten,
die bei Oracle Designer noch über Entities erfasst werden,
außer dem Namen.
Sie können natürlich auch gern eigene Vorschläge machen,
was sinnvoll wäre,
selbst wenn es bei Oracle Designer nicht vorgesehen ist.
- Sie müssen selbstverständlich NICHT auswendig lernen,
wo man bei Oracle Designer in welcher Situation klickt,
oder welche Felder es genau in welcher Dialogbox gibt.
Ich werde manchmal gefragt,
ob es sinnvoll ist,
noch viel praktisch mit Oracle Designer vor der Prüfung zu üben.
Das hängt sicher am Lernstil des Einzelnen,
und ob Sie in der Vorlesung an den praktischen Übungen auch teilgenommen
haben.
Aber wenn Sie über eine gewisse Erfahrung mit Oracle Designer
grundsätzlich verfügen,
würde ich vermuten,
daß es effizienter wäre,
möglichst viele Datenbank-Entwürfe auf dem Papier zu üben
(so wie es dann ja auch in der Prüfung vorkommt).
In der Prüfung werden Sie NICHT an einen Rechner gesetzt,
und müssen Oracle Designer bedienen.
Es geht in der Vorlesung ja allgemein um Datenbankentwurf,
und einen gewissen Eindruck von CASE-Werkzeugen,
aber nicht um Fertigkeiten in der Bedienung eines konkreten Produktes
(wenn das auch ein Nebeneffekt der Übung sein sollte,
der für die Prüfung jetzt aber keine wesentliche Rolle mehr spielt).
- Dagegen sollten Sie die ER-Notation von Oracle Designer sehr genau kennen.
Für den Datenbank-Entwurf muß man sich ja irgendwie auf eine
Notation einigen,
und dies war die Notation,
die wir in Datenbanken IIA am meisten verwendet haben.
Die Notation ist in meinem Skript sehr detailliert erklärt.
Falls die Benutzung des konkreten Produktes Ihnen aber hilft,
um die Möglichkeiten dieser Notation zu verstehen,
dann verwenden Sie es.
Datenbank-Entwurf in Oracle-Designer Notation
- Bisher kam in jeder Prüfung ein ER-Entwurf
in der Oracle Designer Notation dran.
Ich schildere Ihnen eine Anwendung,
und Sie sollen das ER-Diagramm zeichnen.
- Naturgemäß kann das Diagramm nicht sehr groß
sein (z.B. 2-3 Entity-Typen, 1-2 Relationships).
- Ich würde vermutlich versuchen,
ein Beispiel zu wählen,
in dem man gut Subklassen verwenden kann.
Allerdings fällt mir nicht immer ein gutes und neues Beispiel ein,
so daß es auch manchmal nur Beipiele mit schwachen Entities
oder Association Entities oder rekursiven Relationships gibt.
Eines dieser fortgeschrittenen Konstrukte würde in der Lösung,
die ich im Kopf habe,
wohl vorkommen.
Das heißt aber nicht,
daß es nicht auch andere gute Lösungen gibt,
die ganz ohne diese Konstrukte auskommen.
- Es gibt oft keine eindeutig beste Lösung,
und eventuell könnten wir auch über Alternativen diskutieren.
Es wäre aber gut,
wenn Sie relativ schnell eine Alternative skizzieren würden.
Gelegentlich können sich Studenten nicht zwischen zwei Möglichkeiten
entscheiden,
und blockieren sich dann irgendwie selbst.
Wenn es längere Zeit überhaupt nicht weiter geht,
und Sie auch nichts sagen,
ist das natürlich ungünstig für das Prüfungsergebnis.
Fragen können Sie natürlich stellen.
Es ist beim Datenbank-Entwurf ja normal,
daß der Kunde (das wäre ich) am Anfang nicht alle wichtigen Details
sagt,
selbst wenn er sich um Vollständigkeit bemüht
(ich lasse nicht bewußt etwas Wichtiges weg).
Gewisse Pausen zum Denken sind natürlich auch in Ordnung
und nicht zensurverschlechternd.
Im Gegenteil wäre es schlecht,
wenn Sie lauter Unsinn reden,
nur um überhaupt zu reden.
Aber nach einer gewissen Zeit müssen Sie in der Lage sein,
Ihr Problem auf den Punkt zu bringen.
- Tatsächlich beginnen die meisten Prüfungen mit einem
Datenbank-Entwurf,
und häufig dauert es sehr lange,
und endet recht unbefriedigend.
Wenn Sie sich auf diesen Punkt besser vorbereiten könnten
als die meisten der bisherigen Prüfungskandidaten,
wäre das sicher von Vorteil.
Wir haben uns ein ganzes Semester mit dem Datenbankentwurf beschäftigt,
und ich erwarte dann,
daß Sie ein kleines, aber irgendwie interessantes Beispiel
auch zügig als ER-Diagramm skizzieren können.
Häufig enthält die Aufgabenstellung
ja auch sehr konkrete Hinweise:
"Für einen Teil der X müssen noch Eigenschaften A und B abgespeichert
werden." Da liegt doch eine Subklasse sehr nahe.
Oder "Der Wert A hängt von X und Y ab."
Wenn X und Y Entities sind,
wäre das doch ein typischer Fall für ein Association Entity.
- Beispiel: Ich betreibe einen Webserver
und möchte die Zugriffe auf Webseiten speichern.
Webseiten sind durch ihre URL identifiziert.
Außerdem möchte ich über jede Webseite
den Titel speichern und optional eine kurze Beschreibung zum Inhalt.
Zugriffe sind über eine eindeutige Nummer identifiziert,
außerdem möchte ich einen Zeitstempel
und die zugegriffene Seite speichern.
Bei den Zugriffen erfahre ich meistens auch die URL von der Seite,
von der aus einem Link auf die zugegriffene Seite gefolgt wurde
(Feld "referer" in HTTP).
Wenn also die Seite X einen Link auf die Seite Y enthält,
und der Benutzer klickt auf diesen Link,
dann registriert mein Webserver einen Zugriff auf die Seite Y,
aber bekommt in diesem Zugriff auch die URL von X mitgeteilt,
und ich möchte in meinem Zugriffs-Datensatz
dann beide URLs speichern (gewissermaßen entspricht
mein Zugriff also einem Link "von" Webseite X,
"zu" Webseite~Y).
Die Seite Y (auf die zugegriffen wird)
ist immer eine eigene Seite,
aber die Seite X könnte auch eine fremde Seite sein.
Für eigene Seiten möchte ich noch zusätzlich
(zu den oben angegebenen allgemeinen Daten über Webseiten)
die Größe der Seite in Bytes speichern,
für fremde Seiten zus"atzlich
die EMail-Adresse des Betreibers/Webmasters
(falls bekannt).
- Dieses Beispiel war bisher wohl das komplizierteste
(jetzt kann ich es nicht mehr verwenden,
weil es auf dieser Webseite steht).
Aber Sie sollten etwas in dieser Komplexität auch in
ca. 10-15 Minuten der Prüfungszeit lösen können.
Falls Sie bisher überhaupt nichts mit Webseiten zu tun hatten,
und Ihnen diese Dinge völlig fremd sind,
könnten Sie natürlich versuchen,
das zu sagen, und um ein anderes Beispiel zu bitten.
Dann aber bitte möglichst schnell
- wenn wir schon lange daran gearbeitet haben,
kann man das Beispiel schlecht noch wechseln.
Tatsächlich kann man den Datenbankentwurf auch mit recht wenig Wissen
von der konkreten Anwendung machen,
Sie könnten ja alles relevante Anwendungswissen von mir abfragen
und das würde nicht zu Ihren Ungunsten zählen
(wenn wir nicht gleichzeitig "Grundlagen des World Wide Web" prüfen).
- Da wir den ER-Entwurf für die nächste Aufgabe
(Übersetzung ins relationale Modell) benötigen,
werden wir uns am Ende da gemeinsam irgendwie durchkämpfen.
Ich werde Ihnen mehr und mehr Hinweise geben,
und am Ende die Lösung mehr oder weniger diktieren.
Aber das wirkt sich natürlich schlecht auf die Zensur aus.
- Möglicherweise sind meine Hinweise auch eher verwirrend,
wenn Sie eigentlich über eine andere Lösung nachdenken.
Ich bin hier immer im Zwiespalt,
ob ich die Stille in der Prüfung noch länger ertragen soll,
oder ob ich einen Hinweis geben soll,
der Sie möglicherweise aus Ihrem Denken reisst.
Besser ist es,
wenn Sie nach angemessener Zeit Signale geben,
wo Sie gerade sind,
oder eben schon mal anfangen,
etwas zu skizzieren.
- Es ist normal,
wenn am Ende auch mal etwas durchgestrichen ist,
oder es aus anderen Gründen nicht besonders hübsch aussieht.
Man muß nur klar verstehen,
was gemeint ist.
Mehr über ER-Notationen
- Sie sollten wissen,
daß man Spezialisierung in zwei "Dimensionen"
unterteilen kann,
einerseits nach partiell/total,
und andererseits nach disjunkt/überlappend.
(Wenn Sie aus der Literatur noch weitere Arten der Klassifizierung
kennen,
schadet das auch nichts.)
Oracle Designer unterstützt mehr oder weniger nur
total+disjunkt.
Sie können beim Database Design Transformer
eine Option wählen,
die Ihnen effektiv partielle+disjunkte Spezialisierung gibt,
aber es ist sehr merkwürdig,
daß das an der Stelle passiert
und nicht beim ER-Entwurf.
- Sie sollten die Notation aus Datenbanken I nicht vergessen haben.
Zum Beispiel könnte man dort ein Relationship-Attribut verwenden,
und Sie müssten das ohne langes Nachdenken
in ein Association Entity in der Oracle Designer Notation
übersetzen können.
- Sie sollten wissen,
daß es auch ternäre (und allgemein n-äre)
Relationships gibt
(und wieder die Abbildung in ein Association Entity kennen).
Logischer Entwurf, Integritätsbedingungen
- Nachdem der ER-Entwurf fertig ist,
müssen Sie Ihr ER-Diagramm in das relationale Modell
übersetzen,
und dabei Schlüssel und Fremdschlüssel angeben.
- Welche Notation Sie für das relationale Schema verwenden,
ist relativ egal
(Sie müssen natürlich auch die Fremdschlüssel
klar festlegen/erklären).
Datentypen möchte ich an dieser Stelle normalerweise nicht
sehen,
wir haben ja relativ wenig Zeit und wollen noch zu interessanteren
Dingen kommen.
- CHECK-Constraints möchte ich manchmal exakt in SQL
aufgeschrieben haben.
Bei der Übersetzung von Subklassen sind ja teilweise
recht interessante Constraints nötig.
- Für die Übersetzung von Subklassen
gibt es ja mehrere Möglichkeiten,
meistens sollen Sie selbst eine wählen.
Sie brauchen aber nicht sehr lange darüber nachzudenken,
welche Möglichkeit in diesem speziellen Fall nun die beste ist
(ein bißchen wäre natürlich nicht schlecht).
Wir wollen ja weiterkommen und lange Pausen in den Prüfungen
machen mich immer nervös.
Also wählen Sie eine plausibele Möglichkeit
und wir diskutieren dann hinterher über die Nachteile dieser
Möglichkeit,
bzw. ob es bessere Alternativen gegeben hätte.
Jede Möglichkeit hat ja irgendwelche Probleme.
Natürlich habe ich auch nichts dagegen,
wenn Sie mir vorher erklären,
warum eine bestimmte Möglichkeit Ihnen für das konkrete
Beispiel gut scheint,
oder welche Kriterien Sie dazu heranziehen.
Für eine ausführliche vollständige Erläuterung
aller Übersetzungsmöglichkeiten werden wir in den meisten
Fällen keine Zeit haben.
- Sie sollten in diesem Zusammenhang auch den Trick kennen,
daß man Subklasseninformation in künstliche Schlüssel
hineincodieren kann,
und so in Fremdschlüsseln nutzen.
- Vielleicht ist Ihr relationales Schema
z.B. aufgrund der Subklassen
oder aufgrund bestimmter Kardinalitätsangaben
nicht genau äquivalent zum gegebenen ER-Schema.
Sie sollten diese Einschränkungen erklären können
und auch sagen können,
wie man die dann notwendigen allgemeinen Integritätsbedingungen
überwachen kann.
- In diesem Zusammenhang kann es auch sein,
daß Sie eine SQL-Anfrage aufschreiben müssen,
die die Verletzungen der Integritätsbedingung findet,
etwa Rechnungen ohne Rechnungspositionen.
Wenn SQL auch eigentlich nur in Datenbanken I gelehrt wurde,
ist es doch bei Datenbanken IIA auch Voraussetzung,
und kann auch in Prüfungen drankommen
(selbst wenn nicht gleichzeitig Datenbanken I geprüft wird).
Eigentlich ist das ja ziemlich selbstverständlich,
daß man so elementare Dinge wie SQL in einer fortgeschrittenen
Datenbank-Prüfung nicht schon vergessen haben darf.
- Der logische Entwurf ist eigentlich doch sehr schematisch.
Auf die Anwendung kommt es jetzt gar nicht mehr an,
es müsste auch mit X und Y gehen.
Falls wir vorher ein Beispiel ohne Subklassen hatten,
wäre es möglich,
daß ich Ihnen jetzt ein Beispiel mit Subklassen
mit abstrakten Bezeichnern skizziere.
- Da logischer Entwurf bisher in jeder Prüfung drangekommen ist,
wäre es unklug,
diesen Algorithmus nicht zu beherrschen.
Normalformen (bis BCNF)
- Definition von funktionalen Abhängigkeiten.
Wann erfüllt ein Zustand eine funktionale Abhängigkeit?
(bitte mathematisch formale Definition.)
- Schreiben Sie eine SQL-Anfrage,
die prüft,
ob eine bestimmte funktionale Abhängigkeit erfüllt ist.
- Implikation. Attribut-Hülle. Triviale Funktionale Abhängigkeiten.
- Kann man funktionale Abhängigkeiten aus einem
Beispielzustand automatisch ermitteln?
- Definition von BCNF.
(Bitte mathematisch-präzise Definition
und praktisches Vorgehen zur Überprüfung.)
Warum ist die Definition gerade so?
Zusammenhang mit Redundanzen/Anomalien.
- Prüfung eines Beispiels auf BCNF.
- Was müssen Sie machen,
wenn eine Tabelle nicht in BCNF ist?
- Sie müssen auch abstrakte Beispiele mit Attributen A, B, C
behandeln können.
- Was bedeutet Verlustlosigkeit?
(bitte mathematisch formale Definition.)
- Was ist der Aufspaltungssatz (Decomposition Theorem)?
Ist diese Bedingung für die Verlustlosigkeit der Aufspaltung
hinreichend und notwendig?
- Ist jede verlustlose Aufspaltung sinnvoll?
- Was bedeutet Erhaltung der funktionalen Abhängigkeiten?
- Definition von 3NF.
- Warum halten viele Leute (ich nicht)
3NF für wichtiger als BCNF?
Was sind die Vorteile von 3NF?
- Vergleichen Sie 3NF und BCNF.
Unterscheiden sie sich häufig?
Nennen Sie ein Beispiel,
in dem sie sich unterscheiden.
Was sind hier die Probleme?
- Synthesealgorithmus für 3NF,
Berechnung der kanonischen Überdeckung.
Normalformen (ab 4NF)
- Definition von mehrwertigen Abhängigkeiten.
Wann erfüllt ein Zustand eine mehrwertige Abhängigkeit?
(bitte mathematisch formale Definition.)
- Warum treten mehrwertige Abhängigkeiten immer in Paaren auf?
- Wann ist eine mehrwertige Abhängigkeit trivial?
- Was ist die Beziehung zwischen mehrwertigen Abhängigkeiten
und Verlustlosigkeit.
- Definieren Sie 4NF.
- Was ist die Motivation für 5NF?
- Was ist allgemein der Zweck der Normalisierung?
UML
- Wenn in Ihrem Semester UML Klassendiagramme dran waren,
wäre es möglich,
daß Sie Ihr Schema nochmal als UML Klassendiagramm zeigen sollen,
oder wir uns allgemein über diese Notation unterhalten.
- Bisher war dafür meist wenig Zeit,
aber das könnte sich natürlich ändern.
Power Designer
- Wenn in Ihrem Semester in den Übungen der Sybase Power Designer
vorgestellt und ausprobiert wurde,
und Sie die Übungen einbringen,
wäre es möglich,
daß Sie Ihr Schema nochmal in der Power Designer-Notation
aufschreiben müssen,
oder wir uns allgemein über diese Notation unterhalten.
- Bisher war dafür meist wenig Zeit,
aber das könnte sich natürlich ändern.
Bemerkungen zur Bewertung
- Siehe meine Prüfungshinweise zu
Datenbanken I.
- Praktische Fähigkeiten im Datenbankentwurf
(konzeptioneller und logischer Entwurf)
sind sehr wichtig.
Sie sollten die Oracle Designer Notation genau kennen
und problemlos anwenden können.
- Es gibt in dieser Vorlesung (leider) nicht viele Dinge,
die mathematisch formalisiert wurden,
aber wenigstens bei der Normalformtheorie sollten Sie zeigen,
daß Sie formale Definitionen und Sätze zumindest
wiedergeben und erklären können.
- Mindestens für eine Eins ist es natürlich günstig
oder eigentlich sogar wichtig,
noch weitere Literatur außer dem Skript zu lesen.
Ich würde von Ihnen dann schon erwarten,
daß Sie sich selbständig mit der Materie
auseinander gesetzt haben,
Dinge kritisch hinterfragt haben,
und eigene (begründete) Ansichten entwickelt haben.
Wenn Ihre Ansichten natürlich allzu revolutionär sind,
oder sich von meinen aus Skript und Vorlesung bekannten Ansichten
extrem unterscheiden,
wäre es wohl klug,
rechtzeitig vor der Prüfung in meine Sprechstunde zu kommen.
- Ich wundere mich aber immer,
wenn Studierende nicht die Definition von BCNF,
die in meinem Skript steht,
kennen,
sondern nur irgendwelche anderen Definitionen
(die z.B. 3NF voraussetzen).
Wie gesagt,
es ist sehr positiv,
wenn Sie mehr wissen,
als im Skript steht,
aber ein Professor erkennt natürlich
am leichtesten die eigenen Worte
wieder (was Ihnen dann wegen "nur auswendig gelernt" auch negativ
angerechnet werden kann, aber im Fall von BCNF werden wir das ja
dann gleich am praktischen Beispiel testen).
Außerdem hat sich der Professor vielleicht etwas dabei gedacht,
warum er gerade diese Definition für besonders einfach,
intuitiv, und praktisch anwendbar gehalten hat.
- Bei Beispielen bin ich dagegen für neue Beispiele dankbar.
Wenn Sie mir z.B. mehrwertige Abhängigkeiten erklären,
könnten Sie natürlich das Beispiel aus dem Skript verwenden,
aber wenn Sie ein anderes Beispiel verwenden,
zeigen Sie damit,
daß Sie noch eine andere Literaturstelle gelesen haben,
oder selbst darüber nachgedacht haben.
Das wäre ein Pluspunkt.
- Falls ich etwas fragen sollte,
von dem Sie meinen,
daß es nicht dran war,
oder von dem wir abgesprochen haben,
daß ich das nicht prüfen werde,
machen Sie mich bitte darauf aufmerksam.
Ich bin ziemlich vergesslich und habe recht viele Prüfungen,
eventuell weiß ich auch nicht mehr ganz genau,
was ich in welchem Semester genau geschafft habe.
Ich will aber ganz sicher keine bösen Tricks machen.
Empfehlungen zur Prüfungsvorbereitung
- Nehmen Sie sich alte Klausuren oder Aufgaben aus Büchern
und machen Sie relativ viele Datenbankentwürfe auf Papier.
Sie können sich natürlich auch selbst Aufgaben ausdenken.
Übersetzen Sie Ihre Entwürfe anschließend
ins relationale Modell.
- Siehe meine Prüfungshinweise zu
Datenbanken I.
Stefan Brass
(brass@acm.org),
27. Juli 2007
Original URL:
http://www.informatik.uni-halle.de/~brass/pruef_dbIIA.html
[HTML 3.2 Checked]
[Links Geprüft]