Klausur Datenbanksysteme

Werbung
Prüfung Datenbanksysteme, 10. Juli 2004
S. 1
Klausur Datenbanksysteme
Name:
Matrikel-Nr.:
Studiengang:
† AI
† IK
† TM
† WI
Aufgabenblatt nicht vor Beginn der Prüfung umdrehen!
Prüfer:
Dauer:
Datum:
Hilfsmittel:
Kennzahlen:
Prof. Dr. Martin Hulin
90 Minuten gesamt
10. Juli 2004
Alle auf dem Prüfungsplan angegebenen Hilfsmittel B - K
1813, 1891, 2117, 4017
Rückseiten sind bedruckt!
Lösen Sie die Aufgaben auf den ausgegebenen Aufgabenblättern!
Ersatz-Aufgabenblätter sind auf Anfrage erhältlich.
Bewertung:
Aufg.
Punkte
1 (27) 2 (13) 3 (4)
4 (8)
5 (14) 6 (5)
7 (7)
8 (22) Σ (100)
Aufgaben
(Punkte ohne Gewähr)
Aufgabe 1: Erstellen eines Entity-Relationship-Diagramms
(27)
Für eine chemische Fabrik, soll eine Datenbank erstellt werden. Zeichnen Sie dazu Entity-Sets,
Attribute und Relationen, wie Sie der unten stehenden Beschreibung entsprechen, in ein EntityRelationship-Diagramm. Verwenden Sie dazu das ausgeteilte Extrablatt. Achten sie darauf, ...
•
dass Sie ein ER-Diagramm erstellen sollen und nicht ein Diagramm einer relationalen
Tabellenstruktur, d.h. M:N-Relationen sind noch nicht in Verbindungstabellen umgewandelt, es
gibt mehrwertige Attribute, und eine Strukturierung in Unterentities ist möglich.
•
dass Sie Anomalien und Redundanzen vermeiden.
•
dass Sie die Art der Relationen in der ausführlichen (min, max)-Schreibweise kennzeichnen.
Beschreibung der Datenbank für die chemische Fabrik
Unten stehende Informationen sollen in der Datenbank enthalten sein und effizient abgefragt werden
können. Informationen, die hier nicht genannt sind, brauchen auch nicht ins ER-Diagramm, selbst
wenn Sie sie für eine Datenbank einer chemischen Fabrik für sinnvoll erachten.
•
Die Fabrik benötigt verschiedene Chemikalien oder stellt sie her, z. B. Acetaldehyd oder
Brenztraubensäure. Für jede Chemikalie soll ihr Name und ihre chemische Formel (als String) in
der Datenbank abrufbar sein.
•
Die Chemikalien werden in Behältern gelagert. Folgende Abfragen sollen möglich sein
•
•
-
Nummer, Standort, Art, Herstellerfirma, Datum der Inbetriebnahme, nächster
Inspektionstermin, Kapazität eines Behälters und momentane Füllmenge.
-
Suche nach der Chemikalie, die in einem bestimmten Behälter aufbewahrt wird. Pro Behälter
wird nur eine Chemikalie gelagert, nicht mehrere zusammen.
-
Suche nach allen Behältern, in der eine bestimmte Chemikalie aufbewahrt wird.
In chemischen Reaktionen werden aus Chemikalien andere Chemikalien erzeugt, z. B. aus
Caciumphosphat, Schwefelsäure und Wasser wird Calciumhydrogenphosphat und Gips erzeugt.
1 Ca3(PO4)2 + 2 H2SO4 + 4 H2O → 1 Ca(H2PO4)2 + 2 CaSO4⋅2 H2O
Folgende Abfragen sollen möglich sein:
-
Die sogenannte Reaktionsenthalpie, das ist die aufgewendete oder entstehende Energiemenge
bei der Reaktion in kJoule/mol. Bei exothermen Reaktionen (Energie wird freigesetzt) wird
die Energiemenge negativ angegeben, bei endothermen Reaktionen (Energie wird verbraucht)
positiv.
-
Suche nach allen Chemikalien, die an der Reaktion beteiligt sind, seien es Ausgangsstoffe
oder Reaktionsprodukte
-
Für jede beteiligte Chemikalie die Art (Ausgangsstoff oder Reaktionsprodukt) und die
benötigte Menge (Anzahl Moleküle, z. B. 2 bei Schwefelsäure im Beispiel oben). Dabei kann
ein und dieselbe Chemikalie bei der einen Reaktion Ausgangsstoff sein und bei einer anderen
Reaktionsprodukt.
-
Suche nach allen Reaktoren (siehe unten), in der diese Reaktion abläuft.
-
Besondere Hinweise für die Reaktion, z. B. "Temperatur von 580° muss bereits vor
Reaktionsbeginn erreicht werden" oder "Nach Ende der Reaktion Reaktor sofort mit Wasser
ausspülen". Dabei kann es zu einer Reaktion mehrere besondere Hinweise geben.
Die chemischen Reaktionen finden in Reaktoren statt, wobei jeder Reaktor nur für eine
bestimmte Reaktion verwendet wird. Folgende Abfragen sollen möglich sein
-
Nummer, Standort, Art, Herstellerfirma, Datum der Inbetriebnahme, nächster
Inspektionstermin, maximaler Druck und maximale Temperatur eines Reaktors.
Prüfung Datenbanksysteme 10.7.2004, Name:
MatrikelNr:
S. 3
•
Bei Reaktoren und Behältern werden viele gleichartige Daten erfasst, z. B. Standort oder
Herstellerfirma, d. h. auf einem hohen Abstraktionsniveau sind beides Geräte für die chemische
Produktion. Drücken Sie dies in Ihrem Entity-Relationship-Diagramm aus.
•
Alle anderen Aspekte einer chemischen Fabrik, wie Transport von Chemikalien, Mitarbeiter,
Betriebsschichten, Kunden, Aufträge, Lieferfirmen, Laboranalysen, Sicherheitsrichtlinien usw.
brauchen in diesem Ausschnitt der Datenbank für eine chemische Fabrik nicht berücksichtigt
werden.
Aufgabe 2: Relationale Tabellenstruktur der Datenbank für die chemische Fabrik mit SQL (13)
Wandeln Sie die Entity-Sets Reaktionen und Chemikalien aus Aufgabe 1: und eventuell vorhandene
Relationen zwischen diesen beiden Entity-Sets in relationale Tabellen um. Verwenden Sie SQL zur
Definition von Tabellen, Primärschlüsseln und Fremdschlüsseln. Die anderen Entity-Sets wie z. B.
Reaktoren, Behälter oder Prozessketten und Relationen zu ihnen brauchen Sie nicht in Tabellen
umwandeln.
Schreiben Sie Ihre Lösung auf die Rückseite des Extrablattes.
Wenn Sie die Aufgaben 1 und 2 gelöst haben, geben Sie bitte das Extrablatt mit Ihrer Lösung
ab. Sie erhalten dafür die Musterlösung, um die folgenden Aufgaben lösen zu können.
Aufgabe 3: SQL-Abfrage
(4)
Geben Sie eine SQL-Abfrage an, die die Nummern und die Standorte aller Behälter ermittelt, die vor
dem "20.08.2005" zur nächsten Inspektion müssen und die von der Art Edelstahlbehälter sind.
Aufgabe 4: SQL-Abfrage
Geben Sie eine SQL-Abfrage an, die für jede Chemikalie die derzeit in der Fabrik vorhandene
Vorratsmenge in allen Behältern ermittelt.
(8)
Aufgabe 5: SQL-Anweisungen
(14)
Eine neue chemische Reaktion wird in die Datenbank aufgenommen: Ethen und Brom reagieren zu
Dibrommethan (1 C2H4 + 1 Br2 → 1 C2H4Br2). Die Chemikalien sind bereits in der Datenbank
enthalten und haben die Nummern 1030, 390 bzw. 2480. Die Reaktion findet im Reaktor mit der
Nummer 172 statt, der ebenfalls schon in der Datenbank ist. Als besonderer Hinweis ist einzutragen:
"Brom in Wasser gelöst". Die Reaktionsenthalpie beträgt – 120,4 kJ/mol. Die neue Reaktion
bekommt die Nummer 2000.
Aufgabe 6: Ablaufsteuerung
(5)
Auf welche Weise könnte in der Datenbank eine inkonsistente Datenmenge entstehen, wenn die
Verbindung zwischen Client und Server ausfällt, während die Anweisungen von Aufgabe 5:
durchgeführt werden? Mit welchem Konzept verhindern Datenbankmanagementsysteme einen solchen
inkonsistenten Datenbestand?
Prüfung Datenbanksysteme 10.7.2004, Name:
MatrikelNr:
S. 5
Aufgabe 7: B*-Bäume
(7)
Für die Namen der Chemikalien sei ein B*-Baum aufgebaut. Dazu folgende Informationen:
-
Ein interner Knoten hat einen Verteilungsgrad von p = 50, d. h. maximal 50 Sohnknoten.
-
Pro Blattknoten gibt es 50 Pointer auf Datensätze (bzw. ihre Blöcke)
Wie viele Blockzugriffe benötigt man maximal, um auf eine bestimmte Chemikalie mittels ihres
Namens zuzugreifen bei
a)
1000 Chemikalien?
b)
1000 mal so viel Chemikalien, also 1.000.000 Chemikalien?
Kommentieren Sie (auf der nächsten Seite) das Ergebnis Ihrer Berechnung ganz kurz bezüglich der
Eignung von Datenbanken für große Datenmengen.
Aufgabe 8: Embedded SQL
(22)
Bei dieser Aufgabe soll eine C-Funktion Reaktionsformel mit Embedded SQL erstellt werden, die die
Reaktionsformel einer chemischen Reaktion ausdruckt.
void Reaktionsformel (int rnr)
Als Parameter rnr bekommt die Funktion die Nummer der Reaktion in der Datenbank übergeben. Die
Funktion ermittelt zu der Reaktion alle beteiligten Chemikalien mit ihrer Formel und mit Ihrer Menge
bei der Reaktion. Dann wird die Reaktionsformel ausgedruckt, wobei die verschiedenen Chemikalien
mit " + " getrennt werden und Ausgangsstoffe und Reaktionsprodukte durch einen Pfeil "->". Für
diese Aufgabe in der Klausur brauchen Sie nur den Teil programmieren, der die Ausgangsstoffe
druckt, d. h. den ersten Teil der Formel bis zum Pfeil. Die Zahlen für die Anzahl von Atomen eines
Elements in einem Molekül werden nicht tiefgestellt.
Beispiel: Für die Reaktion aus dem Beispiel beim Entity-Set Reaktionen wird folgende Formel
ausgedruckt: "1 Ca3(PO4)2 + 2 H2SO4 + 4 H2O". Der Rest der Formel wird (für die Aufgabe) nicht
mehr gedruckt: "-> 1 Ca(H2PO4)2 + 2 CaSO4⋅2 H2O"
a) Geben Sie eine Cursordeklaration an, die für die Reaktion mit der Reaktionsnummer :rnr die
Formel und die Menge für jede beteiligte Chemikalie ermittelt, die bei dieser Reaktion
Ausgangsstoff ist.
b) Geben Sie nun die C-Funktion Reaktionsformel an. Die Cursordeklaration von a) brauchen Sie
nicht zu wiederholen, sondern nur durch das Symbol ♦ zu kennzeichnen. Gehen Sie davon aus,
dass die Verbindung zur Datenbank bei Aufruf der Funktion bereits hergestellt ist.
void Reaktionsformel (int rnr)
{
/* Ausdruck des Rests der Formel nach dem Reaktionspfeil
braucht in dieser Aufgabe nicht mehr programmiert werden */
}
Prüfung Datenbanksysteme 10.7.2004, Name:
MatrikelNr:
Chemikalien
Behälter
Nr
Nr
Name
Formel
ChemikalienNr
Standort
Art
Hersteller
Inbetriebnahme
Inspektion
Kapazität
Füllmenge
beteiligt_an
ChemikalienNr
ReaktionNr
Art
Menge
Hinweise
ReaktionNr
Hinweistext
Reaktoren
Nr
Reaktionen
Nr
Enthalpie
Abbildung 1: Tabellenstruktur der Datenbank für eine chemische Fabrik
ReaktionNr
Standort
Art
Hersteller
Inbetriebnahme
Inspektion
maxDruck
maxTemp
S. 7
Nr
Name
Chemikalien
Art
Menge
Nr
Gefahrstoffklassen
Formel
(1,N)
gelagert_in →
(1,1)
(1,N)
beteiligt_an ↓
(1,N)
Reaktionen
Enthalpie
Hinweise
(1,N)
läuft_ab_in ↓
(1,1)
⊃
GNr
Standort
Art
Geräte
d
Reaktoren
maxDruck
maxTemp
Hersteller
Inbetriebnahme
⊃
Behälter
Inspektionstermin
Kapazität
Füllmenge
Abbildung 2: Entity-Relationship-Diagramm der Datenbank für die chemische Fabrik
Herunterladen