NF 1, SS 1997: Übungsblatt 11: Datenbanken
Ausgegeben am:24. Juni 1997
Abzugeben bis:1. Juli 1997
Lösungen dazu
Aufgabe 1: Abfragen mit logischen Konnektoren
Die Geschäftsleitung ist an sehr speziellen Informationen interessiert.
Benutzen Sie die Datenbank xamtrup, um die Antworten auf die Anfragen
zu erzeugen. (Rentenalter Frauen: 62, Männer: 65)
- Welche männlichen Mitarbeiter der Abteilung U2 bekommen ein Gehalt,
das über 80000 DM liegt?
- Wieviele dieser Mitarbeiter sind unter 30 oder gehen in den nächsten
5 Jahren in Rente?
- Welche Mitarbeiter der Abteilungen K3 und A2 sind unter 25 oder gehen
dieses oder nächstes Jahr in Rente?
Aufgabe 2: Erweiterung der Anwendung
Erstellen Sie eine Abteilungstabelle, die folgende Informationen enthält:
- Abteilungskürzel
- Funktion der Abteilung
- Abteilungsleiter. (Hier ist es zweckmäßig, die Mitarbeiternummer
zu verwenden)
Füllen Sie die neu erstellte Tabelle mit den notwendigen Daten.
Die modellierte Firma plant einen Betriebsausflug. Erstellen Sie die
dazu notwendige Tabelle der Teilnehmer, die u.a. folgende Informationen
enthalten kann:
- Mitarbeiter
- Bezahlt oder nicht
- Nimmt am Ruderausflug teil oder nicht
- Will am Volleyballturnier teilnehmen oder nicht
- Fährt mit Bus oder Auto
Füllen Sie die neu erstellte Tabelle mit einigen Daten.
Aufgabe 3: Mehrtabellenabfragen
Zur Durchführung der folgenden Teilaufgaben können Sie (außer
Ihren eigenen) auch folgende Tabellen der Datenbank xamtrup verwenden:
- Mitarbeiterdaten: ma
- Abteilungsdaten: ab
- Betriebsausflug: ba
Hier die zu lösenden Anfragen:
- Geben Sie eine Liste der Abteilungsleiter aus.
- Geben Sie eine Liste der Mitarbeiter aus, die mindestens soviel verdienen
wie ihr Abteilungsleiter. Achten Sie darauf, daß die Abteilungsleiter
selbst nicht Bestandteil der Liste sein sollen.
- In der vorigen Teilaufgabe ist es notwendig, drei Tabellen in die Abfrage
zu integrieren. Sie werden dabei u.U. feststellen, daß die Durchführung
der Abfrage einige Zeit benötigt. Woran kann das liegen? Gibt es eine
bezüglich der Ausführungszeit optimale Art, die Anfrage zu stellen?
- Welche Abteilungsleiter kommen mit auf den Betriebsausflug?
- Welche Mitarbeiter kommen zwar mit, sind aber offensichtlich "Vergnügungsmuffel",
da sie an keiner Aktivität teilnehmen und separat anreisen?
- Auf dem Betriebsausflug wird ein Volleyballturnier der Abteilungen
geplant. Sind dazu genügend Mitarbeiter (Sechs und zwei Ersatzspieler
pro Abteilung) vorhanden?
Da msql die Funktion count() nicht kennt, geben Sie bitte zwei Lösungen
an:
- Eine Trockenübung, in der Sie davon ausgehen, daß count()
implementiert ist. Zusätzlich ist eine Teilklausel der select-Anweisung
sinnvoll, mit der selektierte Zeilen gruppiert (zusammengefaßt) werden
können:
select count(*) from ma group by abt
gibt z.B. die Anzahl der Mitarbeiter jeder Abteilung aus.
Eine Lösung, die eine Liste der Mitarbeiter ausgibt.
Alternativ können Sie auch xmsql benutzen, um mit Hilfe von Unix-Kommandos
die Anzahlen zu ermitteln