Prüfungsfach: Datenbanken Arbeitszeit: 120 Minuten Zugelassene Hilfsmittel: Skript Name:
Prüfungstermin: 25.01.2002 Vorname: Sem.:
Aufgabensteller: Prof. Dr. A. Tsakpinis Bitte deutlich schreiben!
Wenn du Fehler findest, oder eine bessere Lösung hast!
Zurück an eike@ehringer.de Aufgabe 1 3-Schichten-Modell
1. Geben Sie den grundsätzlichen Aufbau eines Datenbanksystems nach dem 3-Schichten-Modell an!
Aufbau nach ANSI-SPARC:
a. Externes Schema:
Beschreibung der Daten und deren Beziehungen – insb. Konsistenzbedingungen.
b. Konzeptionelles Schema:
Hier sind die Einzelheiten der Implementierung angegeben:
- Aufteilung der DB auf verschiedene Platten, - Plattenspiegelung / Striping (RAID-Level),
- Anlegen von Indizes um Zugriff zu beschleunigen,
Konfiguration der Verwendung von Speicher zur Datenpufferung.
c. Internes Schema:
Definition der verschiedenen Schichten. Es vermittelt zwischen den Programmen, die von außen auf die DB zugreifen und den Strukturen in denen die Daten gespeichert werden.
2. Welcher der drei Schichten ordnen Sie die folgende Maßnahme zu?
„Die Daten einer Applikation werden so auf die Platten des Plattensystems verteilt, dass sich möglichst viele parallele Zugriffe ergeben“.
Internes Schema
Aufgabe 2 Relationenmodell
1. Erläutern Sie anhand eines Beispiels den Unterschied zwischen einem Primärschlüssel und einem Schlüsselkandidaten!
Ein Primärschlüssel ist ein ausgezeichneter Schlüsselkandidat.
Jedoch mit besonderen – zusätzlichen – Eigenschaften:
- Keine Nullwerte,
- Über ihn ist der direkte Zugriff auf genau eine Zeile der Tabelle möglich.
z.B. Tabelle: Kunde
ID Name URL
Primärschlüssel Wert Eindeutig/Schlüsselkandidat
2. Erläutern Sie anhand eines Beispiels den Unterschied zwischen einem Schlüsselkandidaten und einem Sekundärschlüssel!
Ein Sekundärschlüssel kann aus Performance gründen eingeführt werden, um in Kombination mit dem Primärschlüssel eine schnellere Suche zu erreichen.
3. Was spricht für die Verwendung von Sekundärschlüsseln, was dagegen?
Dafür: Höhere Such-Performance bei großen Datenbanken.
Dagegen: Aufwand an Rechenzeit & Speicherbedarf da Indextabellen immer aktualisiert werden müssen.
4. Geben Sie ein Beispiel an (Tabelle, Kardinalität(=Anzahl der Zeilen der Tabelle), Sekundärschlüssel) und erläutern Sie anhand des Beispiels die Effektivität des Sekundärschlüssels!
Es bedeutet, das 5% als Erbegnis von allen Daten kommt.
Aufgabe 3 Relationale Operatoren, SQL
Einem Flugbuchungssystem liegen u.a. folgende Tabellen zugrunde:
SPFLI: Flugverbindungen
SFLIGHT: Flugplan
Betrachten Sie bitte die folgenden Ausdrücke:
T1 := PRODUKT (SPFLI, SFLIGHT).
T2 := REST (T1, (seatsocc = seatsmax)).
T3 := PROJ (T2, CARRID, CONNID, CITYFROM, CITYTO, FLDATE).
1. Formulieren Sie eine dafür passende Aufgabenstellung!
Es soll eine Liste ( Fluggesellschafts ID, Verbindungs ID, Abflugort, Ankunftsort, Datum ) aller Verbindungen ausgegeben werden, die ausgebucht sind.
2. Geben Sie eine semantisch äquivalente SQL-Anweisung an!
SELECT SF.CARRID, SF.CONNID, SP.CITYFROM, SP.CITYTO, SF.FLDATE FROM SFLIGHT AS SF INNER JOIN SPFLI AS SP
ON ( SF.CONNID=SP.CONNID AND SF.CARRID=SP.CARRID ) WHERE SF.SEATSOCC=SF.SEATSMAX ;
Aufgabe 4 Relationale Operatoren, SQL
Bitte verwenden Sie für diese Aufgabe die Tabellen aus der Aufgabe 3 und zusätzlich noch folgende Tabellen:
SBOOK: Flugbuchung
SCARR: Fluggesellschaft
1. Geben Sie mit Hilfe einer SQL-Anweisung eine Liste der Buchungen aus sortiert nach Fluggesellschaft mit Angabe der Kundennummer, des Abflugorts und des Abflugdatums. In der Ausgabe sollte der Name der Fluggesellschaft enthalten sein.
SELECT SC.CARRNAME, SB.CUSTOMID, SP.CITYFROM, SB.FLDATE
2. Formulieren Sie Ihre Lösung auch mit Hilfe von relationalen Operatoren!
T1 := JOIN ( SBOOK, SBOOK.CONNID=SPFLI.CONNID AND SBOOK.CARRID=SPFLI.CARRID, SPFLI )
T2 := JOIN ( T1, SBOOK.CARRID=SCARR.CARRID, SCARR ) T3 := PROJ ( T2, CARRNAME, CUSTOMID, CITYFROM, FLDATE )
??? Wie bekommt man das ORDER BY rein ???
Aufgabe 5 SQL
Dieser Aufgabe liegen folgende Tabellen zugrunde:
Personal Auftrag
1. Bitte berechnen Sie das Ergebnis der folgenden Anweisungen:
SELECT COUNT(*) FROM Personal; = 9 SELECT COUNT(Ort) FROM Personal; = 9 SELECT COUNT(Vorgesetzt) FROM Personal; = 7 SELECT COUNT(DISTINCT Ort) FROM Personal; = 6 SELECT COUNT(DISTINCT PersNr) FROM Auftrag; = 2
2. Bitte finden Sie mit Hilfe einer SQL-Anweisung alle Mitarbeiter mit Namen und Adresse, die Aufträge geholt haben. Bitte geben Sie die Ergebnistabelle an!
SELECT P.Name, P.Ort
FROM Personal AS P INNER JOIN Auftrag AS A ON ( P.Persnr=A.Persnr ) WHERE A.AuftrNr > 0;
??????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????
Aufgabe 6 Normalformenlehre
1. Sie müssen eine Datenbank aufbauen, die Studenten und Prüfungsdaten verwaltet. Im ersten Entwurf haben Sie sich für folgende Tabelle entschieden:
Prüfungsgeschehen
PNR Fach Prüfer MatrNr Name GebDatum Adresse Fachbereich FBName Dekan Note
3 Inf Reis 123456 Huber 111169 .... 11 Ing.-Wiss. Walter 3
321 Mathe Wurm 876543 Schmidt 201165 .... 11 Ing.-Wiss. Walter 2
Erläutern Sie anhand dieser Tabelle die Probleme, die bei redundanter Datenhaltung vorkommen können!
2. Bitte überführen Sie die folgende Excel-Tabelle in die dritte Normalform!
Entwerfen Sie anschließend ein Entity-Relationship-Diagramm!
carrid Name Sitz Niederlassung Flugzeug Typ #Sitze Hersteller Wartung in Wartungstermine LH Lufthansa München München 123 B 737 137 Boing Hamburg alle vier Monate am 1.
des Monats
Berlin 124 B 737 137 Boing München alle vier Monate am 2.
des Monats
Hamburg 125 A310 145 Airbus Berlin alle vier Monate am 3.
des Monats
126 A320 167 Airbus Hamburg alle vier Monate am 3.
des Monats
Bemerkung
In der Tabelle sehen Sie Einträge zu einer Fluggesellschaft. Selbstverständlich sind in der Tabelle Einträge zu weiteren Fluggesellschaften enthalten, die alle analog aufgebaut sind.
Aufgabe 7 Datenmodellierung
Sie müssen für die Bibliothek der Hochschule eine Datenbank entwerfen, in der die Ausgabe der Bücher verwaltet wird. Bücher können Studenten, Mitarbeiter aber auch Fachbereiche für ihren „Handapparat“ ausleihen. Studenten werden mit ihrer Matrikelnummer registriert, Mitarbeiter mit ihrer Personalnummer und Fachbereiche mit der hochschulweit eindeutigen Identifikation des Fachbereichs. Darüber hinaus wird eine Telefonnummer hinterlassen. Jeder Ausleiher kann mehrere Bücher ausleihen. Ein Buch kann zeitlich nicht überlappend von mehreren Ausleihern
ausgeliehen werden. Jeder Ausleihvorgang wird zeitlich terminiert. Um das Auffinden von Büchern zu erleichtern, werden Büchern Schlagwörter zugeordnet. Ein Buch kann unter mehreren Schlagwörtern registriert werden. Zu einem Schlagwort kann es mehrere Bücher geben. Ihre Datenbank muss darüber hinaus den Standort der Bücher in der Bibliothek selbst enthalten. Ist ein Buch nicht am Standort vorhanden, kann aber über Fernleihe von einem anderen Standort ausgeliehen werden, so verwaltet die Datenbank alle Bibliotheken, über die das Buch ausgeliehen werden kann.
1. Bitte entwerfen Sie ein ER-Diagramm für diese Aufgabenstellung!
2. Entwerfen Sie mit Hilfe des ER-Diagramms Ihre Tabellen!
3. Formulieren Sie eine SQL-Anweisung, die Ihnen bereits überfällige
Abgabetermine ermittelt mit Angabe des Ausleihers, seiner Telefonnummer, des vereinbarten Rückgabetermins und des Buchtitels!