Flugschule - Die Datenbank
In diesem Übungsteil sollten Sie das Erstellen von SQL-Anfragen
üben.
Dazu wird unter http://websql.dbai.tuwien.ac.at (SS08 FIXED) ein
Interface zum Zugriff auf eine Postgres Datenbank (v.8.1) zur
Verfügung gestellt. Falls Sie lieber auf Ihrer eigenen Datenbank arbeiten, können Sie die Testdaten für dieses Beispiel auf der Webseite als daten.zip herunterladen.
Bitte versuchen Sie nach Möglichkeit die Beispiele eigenständig zu
lösen, denn in der Praxis (und bei der Prüfung) sind Sie auch auf sich
alleine gestellt.
- Sie müssen sich über den LVAManager zu einem Abgabegespräch
anmelden. Für jede Person steht maximal ein Abgabetermin zur Verfügung.
- Sie müssen die ersten zwölf der untenstehenden Anfragen
lösen. Weiters müssen Sie fünf weitere Anfragen lösen, die Sie
frei wählen können.
- Sie kommen mit Studentenausweis und den Unterlagen auf USB Stick
im Informatiklabor zu der von Ihnen reservierten Zeit vorbei,
und absolvieren das Abgabegespräch. (Achtung: Wir akzeptieren als Format nur eine Textdatei mit plain Text im ASCII Format.)
- Sie haben maximal 20 Minuten für Ihre Abgabe.
- Sie können maximal 15 Punkte bei der Abgabe erreichen. Sie
werden dabei zu drei von Ihren siebzehn Anfragen befragt. Dabei
können Sie jeweils maximal fünf Punkte erreichen, wobei nicht nur
die Korrektheit der Abfrage überprüft wird, sondern Sie müssen die
Abfragen auch erklären und modifizieren können. Weiters wird
erwartet, dass Sie wissen, was die von Ihnen in einem SQL Statement
verwendeten Ausdrücke bedeuten bzw. was sie bewirken.
- Die Tutoren tragen ein Protokoll des Abgabegesprächs ein. Die
erreichte Gesamtpunktezahl ist im LVAManager für Sie ersichtlich.
Sie erhalten den Auftrag für eine kleine Flugschule folgende Datenbank zu implementieren.
Personen haben eine eindeutige Nummer sowie einen Namen und ein Gebutsdatum. Die Personen werden in Lehrer, Schüler und Mechaniker eingeteilt. Bei Lehrern ist die bisher geflogene Stundenanzahl als Erfahrung bekannt.
Die Flugzeuge der Schule sind ebenfalls in der Datenbank vermerkt: Jedes Flugzeug hat eine eindeutige ID und es sind Name, Modell, Hersteller und die Flügelspannweite bekannt. Die Flugzeuge werden in Motor- und Segelflugzeuge eingeteilt, wobei bei Motorflugzeugen auch die PS-Leistung der Motoren bekannt ist.
Pro Schüler werden die genommenen Flugeinheiten gespeichert, welche durch die Kombination der Nummer des Schülers und dem Datum der Einheit eindeutig sind. Zu jeder Flugeinheit wird die Dauer und der vermittelte Lehrinhalt gespeichert. Genau ein Lehrer gibt bei einer solchen Flugeinheit Unterricht. Außerdem wird die Flugeinheit mit genau einem Flugzeug geflogen.
Die Lehrer der Schule besitzen beliebig viele Flugzeuge, ein Flugzeug gehört entweder genau einem Lehrer oder der Flugschule (Es wird also kein Besitzer in der Datenbank eingetragen).
Zur Wartung der Flugzeuge besitzt die Schule mehrere Hangar. Diese werden durch einen Namen identifiziert und weiters ist die Fläche bekannt. Jedem Hangar sind beliebig viele Mechaniker zur Verwaltung zugeteilt und ein Mechaniker verwaltet beliebig viele Hangar. Ein Flugzeug kann, muss aber nicht, in einem Hangar abgestellt werden, in jedem Hangar ist Platz für bis zu acht Flugzeuge. Mechaniker betreuen jene Flugzeuge, die in dem Hangar stehen, welchen sie verwalten.
Die Lehrer der Flugschule nehmen immer wieder an Wettbewerben Teil, um ihr Können unter Beweis zu stellen. Ein Wettbewerb ist eindeutig identifiziert durch das Datum und den Namen der Veranstaltung. Weiters sind Austragungsort und Land bekannt. Es wird gespeichert, welcher Lehrer bei welchem Wettbewerb welches Flugzeug geflogen hat und welche Platzierung er dabei erreichte.
ER - Diagramm
Person(Nummer, Name, Geburtsdatum)
Mechaniker(Person.Nummer)
Schueler(Person.Nummer)
Lehrer(Person.Nummer, Erfahrung)
Flugzeug(Id, Name, Modell, Hersteller, Spannweite)
Segelflugzeug(Flugzeug.Id)
Motorflugzeug(Flugzeug.Id, Leistung)
besitzt(Flugzeug.Id, Lehrer.Nummer)
Hangar(Name, Fläche)
verwaltet (Hangar.Name, Mechaniker.Nummer)
abgestellt (Flugzeug.Id, Hangar.Name)
Flugeinheit(Schueler.Nummer, Datum, Dauer, Lehrinhalt,
Lehrer.Nummer, Flugzeug.Id)
Wettbewerb(Datum, Name, Ort, Land)
fliegt(Lehrer.Nummer, Flugzeug.Id, Wettbewerb.Datum,
Wettbewerb.Name, Platz)
Person(nummer, name, geburtsdatum)
Mechaniker(nummer)
Schueler(nummer)
Lehrer(nummer, erfahrung)
Flugzeug(id, name, modell, hersteller, spannweite)
Segelflugzeug(id)
Motorflugzeug(id, leistung)
besitzt(id, nummer)
Hangar(name, flaeche)
verwaltet (name, nummer)
abgestellt (id, name)
Flugeinheit(snummer, datum, dauer, lehrinhalt, lnummer, id)
Wettbewerb(datum, name, ort, land)
fliegt(nummer, id, datum, name, platz)
- Geben Sie den Namen, das Modell, den Hersteller und die Spannweite aller Flugzeuge aus.
- Geben Sie den Namen das Modell, den Hersteller und die Leistung aller Motorflugzeuge sortiert nach Leistung aus.
- Geben Sie jene Hersteller aus, die Motorflugzeuge mit einer Leistung größer als 100 PS im Programm haben. Vermeiden Sie dabei, dass ein Hersteller in Ihrer Liste doppelt angeführt wird.
- Wieviele Flugeinheiten wurden seit dem 1.1.2008 abgehalten?
- Welche Mechaniker (Nummer) betreuen das Flugzeug mit der ID 1.
- Geben Sie die Flugzeuge (ID und Name) und deren Besitzer (Nummer) aus.
- Geben Sie eine Liste ALLER Flugzeuge (ID und Name) aus und dazu,
sofern vorhanden, die Nummer des Besitzers. Wenn kein Besitzer
existiert, soll stattdessen die Nummer '999' ausgegeben werden
(keyword coalesce).
- Geben Sie eine Liste ALLER Flugzeuge (ID und Name) aus und dazu,
sofern vorhanden, den Namen des Besitzers. Wenn kein Besitzer
existiert, soll stattdessen 'kein Besitzer' ausgegeben werden.
- Geben Sie eine Liste ALLER Flugzeuge aus und wenn der Besitzer
schon erfahren genug ist (mehr als 1000h Erfahrung), auch den Namen
des Besitzers, ansonsten: 'kein erfahrener Besitzer'.
- Geben Sie den Namen und das Geburtsdatum der jüngsten Schüler aus.
- Gesucht sind jene Personen (Name und Geburtsdatum) die sowohl Lehrer als auch Mechaniker sind und mindestens eine Erfahrung von 1000 Stunden haben.
- Geben Sie die Namen der besten Schüler (jene Schüler mit der meisten Flugzeit), die gesamte Flugzeit und die Anzahl der Flugeinheiten aus.
- Geben Sie eine Liste aller Personen aus die entweder Mechaniker oder Lehrer, aber nicht beides sind und vermerken Sie in der Liste ob es sich um einen Mechaniker oder Lehrer handelt.
- Gesucht sind die Namen jener Lehrer, die an allen Wettbewerben in den USA Teil genommen haben.
- Bei wievielen Wettbewerben war Herr Stefan Brunner unter den ersten drei Plätzen?
- Geben Sie eine Liste von Plätzen aus, die die Flugschule bei Wettbewerben mit dem Namen 'Kunstflugschau' gemacht hat, und dazu die Anzahl der Plätze, sortiert nach Plätze.
- Gesucht sind jene Segelflugzeuge mit der größten Spannweite, die noch nie in einem Wettbewerb mitgeflogen sind.
- Geben Sie eine Liste ALLER Hangar aus und die Anzahl der Flugzeuge die dem Hangar zugeteilt sind.
- Um wieviel Leistung bringen durchschnittlich die Flugzeuge des Herstellers 'Flug und Trug' mehr als alle anderen Hersteller?
- Geben Sie für statistische Zwecke eine Liste ALLER Lehrer
(Namen) und deren Erfahrung aus, sowie die Anzahl der Flugeinheiten, die der Lehrer unterrichtet hat, und die durchschnittliche Dauer dieser Flugeinheiten.
- Geben Sie den Namen und das Geburtsdatum jener Lehrer aus, die mindestens 20% aller Schüler unterrichtet haben, die schon Flugeinheiten absolviert haben.
- Welche Schüler sind älter als der jüngste Lehrer?
- Gesucht sind die Namen jener Lehrer die schon Start und/oder Landung unterrichtet haben jedoch noch nicht Perfektionsflug.
- Geben Sie für Wettbewerbe (Datum, Name) den Namen des Gewinners (jene Person mit dem ersten Platz) aus.
- Geben Sie für jeden Lehrer, Name, Geburtsdatum, und die Anzahl der
von ihm unterrichteten Schüler aus.
- Geben Sie eine Liste ALLER Lehrer (Namen) aus und wieviele andere Lehrer es gibt, die mehr Erfahrung haben.
- Geben Sie eine Liste ALLER Schüler aus und das Datum der
letzten von ihnen absolvierten Flugeinheit.
Markus Pichlmair
2008-05-05