Aufgabenstellung zum Informatikpraktikum Teil 2

Werbung
Universität Hannover
21.04.1998
Institut für Informatik
FG Datenbanken und Informationssysteme
Prof. Dr. Udo Lipeck / Dipl.-Math. Thomas Esser
Informatikpraktikum Teil 2, SS 1998
Aufgabenstellung zum
Informatikpraktikum Teil 2:
Relationales Datenbanksystem
1
Anforderungen
Bei dem zu erstellenden Software-Produkt handelt es sich um ein Datenbanksystem mit einem Anwendungsprogramm. Daten sollen in Form von Tabellen (auch Relationen genannt) abgespeichert und manipuliert (d. h. geändert
oder gelöscht) werden und es sollen Anfragen an den Datenbestand ausgewertet werden können.
EmpNo EName
Job
MgrNo Sal
7369
SMITH
CLERK
7902
800
7499
ALLEN
SALESMAN
7698
1600
7521
WARD
SALESMAN
7698
1250
7566
JONES
MANAGER
7839
2975
7654
MARTIN SALESMAN
7698
1250
7698
BLAKE
MANAGER
7839
2850
7782
CLARK
MANAGER
7839
2450
7788
SCOTT
ANALYST
7566
3000
7839
KING
PRESIDENT
5000
7934
MILLER
CLERK
7782
1300
DeptNo
20
30
30
20
30
30
10
20
10
10
Beispiel: EMP – Angestelltendaten
Dabei soll eine an die Standard-Datenbanksprache SQL ( structured que”
ry language“) angelehnte Sprache als Schnittstelle zwischen dem System und
dem Benutzer bzw. dem Anwendungsprogramm dienen. Die Größe der Tabellen soll nicht durch den verfügbaren Hauptspeicher (bzw. virtuellen Speicher)
begrenzt sein, d. h. es ist davon auszugehen, daß Tabellen nicht komplett
1
im Speicher gehalten werden können. Zur Beschleunigung der Anfrageauswertung soll es möglich sein, Indexe auf (häufig angefragten) Spalten von
Tabellen zu verlangen; ein Index soll es dem System ermöglichen, zu einem
Spaltenwert direkt auf die zugehörigen Zeilen einer Tabelle zuzugreifen. Vorhandene Indexe sollen bei der Anfrageauswertung automatisch berücksichtigt
werden, ohne daß dies bei der Anfrageformulierung angegeben wird.
Zur Aufgabe gehört die Erstellung eines allgemeinen Programms ( dabsy“
”
genannt) zur Verarbeitung von Datenbankbefehlen in der unten beschriebenen Datenbanksprache. Daneben gibt es für jede Gruppe eine unterschiedliche Anwendung, zu der ein Anwendungsprogramm und zwei typische Datenbankanfragen erstellt werden sollen. Das Anwendungsprogramm nutzt entweder das Programm dabsy oder Funktionen daraus.
2
Beschreibung der Datenbank-Sprache
Die Datenbanksprache soll nachstehende Operationen anbieten. In ihrem Anfrageteil ist die Sprache ergebnis- und mengenorientiert, d. h. eine Anfrage
beschreibt, welches Ergebnis (eine Menge von Tabellenzeilen) gewünscht wird
und nicht, wie es berechnet wird.
• Anlegen einer Tabelle:
create table <TABELLE>(<SPALTE1> <Typ1>,
<SPALTE2> <Typ2>, ...);
• Löschen einer Tabelle:
drop table <TABELLE>;
• Einfügen einer Zeile in eine Tabelle durch Angabe von Werten:
insert into <TABELLE> values (<Wert1>, <Wert2>, ...);
• Einfügen eines Anfrageergebnisses in eine Tabelle:
insert into <TABELLE> (hier steht eine passende Anfrage, s. u.);
• Löschen in einer Tabelle:
delete from <TABELLE> <ALIAS> [ where Bedingungen ];
delete from <TABELLE> (hier steht eine passende Anfrage, s. u.);
• Ändern von Zeilen einer Tabelle:
update <TABELLE> <ALIAS>
set <ALIAS>.<SPALTE> = <Zeichenkettenkonstante>
[ where Bedingungen ];
• Anfragen:
select <ALIASx>.<SPALTE1>, <ALIASy>.<SPALTE2>, ...
from <TABELLE1> <ALIAS1>, <TABELLE2> <ALIAS2>, ...
[ where Bedingungen ]
[ order by <ALIASz>.<SPALTEn> [(asc|desc)]];
2
• Anlegen eines Indexes:
create index <TABELLE>.<SPALTE>;
• Löschen eines Indexes:
drop index <TABELLE>.<SPALTE>;
Als einziger Datentyp <Typ> ist char(N) zur Darstellung von Zeichenketten mit maximal N Zeichen zu implementieren (1 ≤ N ≤ 255). Für diesen
Datentyp sollen mindestens die Vergleichsoperatoren =, <> und < ( gleich“,
”
ungleich“ und kleiner“) verfügbar sein. Zeichenkettenkonstanten werden in
”
”
einfache Hochkommata eingeschlossen, wie z. B. in ’Eine Zeichenkette’.
Bezeichner für Tabellennamen, Spaltennamen und Aliases beginnen mit einem Buchstaben und bestehen aus Buchstaben, Ziffern und dem Unterstrich
_“. Jeder Spaltenbezeichnung wird der Alias der zugehörigen Tabelle vor”
angestellt; zwischen dem Alias und der Spaltenbezeichnung steht ein Punkt.
Als einfache Bedingungen sind Vergleiche zwischen zwei Spalten oder zwischen einer Spalte und einer Konstanten zulässig. Einfache Bedingungen
können durch das Schlüsselwort and zu einer Bedingung verbunden werden.
Bei der Sortierung (order by) bedeutet asc eine aufsteigende und desc eine
absteigende Sortierreihenfolge. Ohne explizite Angabe der Sortierreihenfolge
soll eine aufsteigende Sortierung gemeint sein.
3
Beispielanweisungen
Zusätzlich zur Tabelle 1 (Angestelltendaten) sei folgende Tabelle mit Abteilungsdaten gegeben:
DeptNo
DName
Loc
10
ACCOUNTING NEW YORK
20
RESEARCH
DALLAS
30
SALES
CHICAGO
40
OPERATIONS
BOSTON
Beispiel: DEPT – Abteilungsdaten
Folgende Beispiele sollen die Benutzung der Datenbanksprache veranschaulichen:
• Erzeuge Tabelle DEPT:
create table DEPT
(DeptNo char(2), DName char(14), Loc char(13));
• Lösche Tabelle DEPT:
drop table DEPT;
3
• Füge Zeile in DEPT Tabelle ein:
insert into DEPT values (’50’, ’MARKETING’, ’NEW YORK’);
• Erzeuge Hilfstabelle und füge Informationen über Verkäufer ein:
create table SALES INFO (EmpNo char(4), EName char(20));
insert into SALES INFO
(select E.EmpNo, E.EName from EMP E
where E.Sal = ’SALESMAN’);
• Löschen des Angestellten mit Nummer ’7788’:
delete from EMP E where E.EmpNo = ’7788’;
• Löschen der wenig verdienenden Verkäufer aus der Hilfstabelle:
delete from SALES INFO
(select E.EmpNo, E.EName from EMP E
where E.Sal < ’1500’);
• Gehalt aller Ladenverkäufer auf ’1400’ setzen:
update EMP E set E.Sal = ’1400’ where E.Job = ’CLERK’;
• Beispielanfrage: Wie heißen die Angestellten und in welchen Abteilun”
gen arbeiten sie?“ (Ausgabe nach Namen sortiert):
select E.EName, D.DName
from EMP E, DEPT D
where E.DeptNo = D.DeptNo
order by E.EName;
• Index auf Tabelle DEPT nach der Spalte DeptNo anlegen:
create index DEPT.DeptNo;
• Index löschen:
drop index DEPT.DeptNo;
4
Anwendungen
Im folgenden werden vier Anwendungsdatenbanken beschrieben. Jeder Praktikumsgruppe ist eine dieser Anwendungsdatenbanken zugeordnet. Für diese
ist ein Anwendungsprogramm mit den angegebenen Anforderungen zu erstellen, das dem Benutzer durch eine Menüsteuerung ermöglicht, Daten einzugeben oder anzufragen, ohne daß dieser Kenntnisse der Datenbanksprache
benötigt. Daneben sind zu zwei vorgegebenen Anfragen an die Anwendungsdatenbank Lösungen in der Datenbanksprache zu erarbeiten.
Daten für die beschriebenen Anwendungsdatenbanken sind unter http://
www-b.informatik.uni-hannover.de/dbis/lehre/sopra98/material/
im WWW abrufbar.
4
4.1
Die Bibliotheks-Datenbank (Gruppe 1)
Die Bibliotheks-Datenbank enthält Informationen zu Dokumenten einer Institutsbibliothek und zugehörigen Schlagworten.
Tabellenschema
DOKUMENT (DokNr, Titel, Jahr, Monat, DokTyp, DokTypErg,
Kuerzel, Herausgegeben, Zeitschrreihe, Band, Nummer,
Seite, Verlag, Ort, Auflage, InDok, InstOrg, Anzahl,
Sprache, Autoren, ErfDatum, InventarNr, IsbnNr);
SCHLAGWORT(DokNr, Schlagwort, Gewicht);
Die Tabelle DOKUMENT enthält zahlreiche Angaben zu Dokumenten, die jeweils durch eine DokNr identifiziert werden. In der Tabelle SCHLAGWORT werden Schlagwörter zu Dokumenten gespeichert, die jeweils mit einem Gewicht
versehen sind, das die Relevanz des Schlagwortes für das Dokument angibt.
Anwendungsprogramm
• Einfügen von (ggf. mehreren) Schlagworten zu einem Dokument.
• Suche zu einem Schlagwort nach zugehörigen Dokumenten.
• Suche zu einem Titel nach zugehörigen Dokumenten.
• Löschen eines Dokumentes samt Schlagworten.
• Sortierte Ausgabe aller Schlagwörter zu einem Dokument.
Anfragen
• Welche Dokumente (Titel, Autoren) haben das Schlagwort
’SQL standard’ ?
• Zu welchen Dokumenten sind keine Schlagworte angegeben?
4.2
Die CD-Datenbank (Gruppe 2)
Die CD-Datenbank enthält Informationen zu Musik-CDs und ihren Musikstücken.
Tabellenschema
CD (CDNr, Bezeichnung, Hersteller, Anz, Min);
KOMPONIST (KNr, KName, Vorname, von, bis);
STUECK (StNr, KNr, Titel, Tonart, TonGeschlecht);
AUFNAHME (CDNr, StNr, Orchester, Leitung);
In der Tabelle CD sind alle CDs mit ihrer Bezeichnung, dem Hersteller, der
Gesamtlaufzeit (Min) und einer Angabe, um wieviele CDs es sich handelt,
5
verzeichnet (normalerweise ’1’, abweichende Angaben bei Mehrfach-CDs).
Komponisten sind mit ihrem Namen, Vornamen und Angaben zum Geburtsund Todesjahr in der Tabelle KOMPONIST erfaßt. In der Tabelle STUECK ist
zu jedem Musikstück (StNr) Komponist (KNr), Titel, Tonart (z. B. ’C-Dur’)
und Tongeschlecht (’Dur’ oder ’Moll’) vermerkt. In der Tabelle AUFNAHME ist
verzeichnet, welches Stück (StNr) auf welcher CD (CDNr) aufgenommen ist,
zusammen mit der Information, welches Orchester unter welcher Leitung die
Aufnahme gespielt hat.
Anwendungsprogramm
• Eingabe einer CD mit allen Angaben zu den Stücken, Komponisten
und Aufnahmen in die Datenbank. Das Anwendungsprogramm soll für
neue Einträge automatisch Nummern vergeben und nur bei neu aufgenommen Komponisten und Stücken die weiteren Angaben erfragen.
• Suche zu Titeln von Stücken nach CDs.
• Sortierte Ausgabe (nach Titel) aller Stücke einer CD.
Anfragen
• Welche Stücke sind in der Tonart ’D-Dur’ geschrieben? Geben Sie die
Nachnamen des Komponisten und die Titel aus.
• Welcher Komponist (KName, Vorname) hat nur Stücke in ’Dur’ geschrieben?
4.3
Die Olympia-Datenbank (Gruppe 3)
In der Olympia-Datenbank sind Daten zu Wettkämpfen bei Olympischen
Spielen abgelegt.
Tabellenschema
LAND (LKurz, LName, AF, AM);
TEILNEHMER (TNr, Name, VName, Land);
LAUFW (WNr, WName, Ort, WRekord);
FELDW (WNr, WName, Ort, WRekord);
TEILN_LAUF (WNr, TNr, Zeit);
TEILN_FELD (WNr, TNr, Meter);
Länder sind mit Kurz- und Langbezeichnung (LKurz bzw. LName) zusammen mit der Anzahl der weiblichen (AF) und männlichen (AM) Teilnehmer in
der Tabelle LAND gespeichert. Angaben zu den Teilnehmern befinden sich in
der Tabelle TEILNEHMER; dort ist in der Spalte Land die Kurzbezeichnung des
Landes angegeben. Zu Wettkämpfen sind Wettkampfnummer, Wettkampfname, Ort und Weltrekord in LAUFW (Laufwettkämpfe; dies sind Wettkämpfe,
in denen eine Zeit gemessen wird) bzw. FELDW (Feldwettkämpfe; hier geht
6
es um möglichst große Höhen bzw. Weiten) angegeben. Die Wettkampfergebnisse zu den Lauf- und Feldwettkämpfen sind mit Wettkampfnummer,
Teilnehmernummer und dem erzielten Ergebnis in den Tabellen TEILN LAUF
und TEILN FELD gespeichert. Ein Ergebnis von 0 s bzw. 0 m bedeutet, daß
der Teilnehmer in dem Wettkampf bei der Qualifikation gescheitert ist.
Anwendungsprogramm
• Einfügen von Wettkampfergebnissen durch Angabe von: Wettkampfname, Teilnehmername und Ergebnis.
• Suche zu einem Wettkampf nach den Medaillengewinnern.
• Suche zu einem Wettkampf nach dem besten, schlechtesten und mittleren Ergebnis.
• Sortierte Ausgabe (nach Ergebnis) aller Ergebnisse zu einem Wettkampf.
Anfragen
• Welche Teilnehmer (Name, VName) aus Deutschland (’GER’) haben
am Wettkampf ’800M Herren’ teilgenommen?
• Ausgabe aller Goldmedaillengewinner (LName, Name, Wname) nach
Ländern sortiert.
4.4
Die TEX-Live-Datenbank (Gruppe 4)
In der TEX-Live-Datenbank sind Informationen zu den Dateien der CD-ROM
T X-Live 3“ abgelegt.
” E
Tabellenschema
DATEI (DName, Verzeichnis, PName, Groesse);
PAKET (Serie, Prio, PName);
Zu jeder Datei sind der Dateiname (ohne Verzeichnisangabe), das Verzeichnis
und die Dateigröße in der Tabelle DATEI abgespeichert. Zusätzlich werden
Dateien in Pakete (Spalte PName in den Tabellen DATEI und PAKET) und
Pakete in Serien gruppiert. In der Tabelle PAKET ist zu jedem Paket noch eine
Priorität angegeben. Durch die Angabe einer Priorität bei der Paketauswahl
kann während der Installation z. B. festgelegt werden, daß nur Pakete mit
Priorität ’1’ oder ’2’ zur Installation auf eine Festplatte ausgewählt werden.
Anwendungsprogramm
• Einfügen von neuen Dateien zu einem vorhandenen Paket.
• Löschen aller Datei- und Paketinformationen zu einem Paket.
7
• Zu einer Serie und Priorität sollen folgende Werte berechnet werden:
Anzahl der Pakete, Anzahl der Dateien, Gesamtplatzbedarf. Zu berücksichtigen sind dabei alle Pakete der gegebenen Serie, deren Priorität
kleiner oder gleich der gegebenen Priorität ist.
• Sortierte Ausgabe (nach Dateiname) aller Dateien eines Pakets.
Anfragen
• Welche Dateien (DName) gehören zur Serie ’bibtex’ ? Die Ausgabe soll
aufsteigend sortiert sein.
• Welche Dateinamen (DName) kommen in mehr als einem Paket vor?
Geben Sie die Dateinamen zusammen mit den Paketnamen aus (also
DName, PName), sortiert nach DName.
5
Rahmenbedingungen
• Das Programm dabsy soll mindestens Anweisungen in der beschriebenen Datenbank-Sprache von der Eingabe (stdin) lesen, Fehlermeldungen und Statusmeldungen (z. B. über Erfolg/Mißerfolg einer Operation) auf der Diagnose-Ausgabe (stderr) sowie Anfrageergebnisse auf
der Standard-Ausgabe (stdout) ausgeben.
• Es kann davon ausgegangen werden, daß das sowohl das Programm
dabsy als auch das Anwendungsprogramm zu einem Zeitpunkt immer
nur von einem Benutzer gebraucht wird; der gleichzeitige Zugriff durch
mehrere Benutzer braucht nicht berücksichtigt zu werden.
• Als Zugangskontrolle genügen die UNIX-Dateiberechtigungen.
• Das Softwarepaket soll in ANSI-C (oder C++) verfaßt sein und auf
den Rechnern des SUN Workstation Pools des Instituts für Informatik
lauffähig sein (Hardware: Ultra Sparc, Betriebssystem: Solaris 2.6).
• Alle abzugebenden Dokumente sollen mit dem Textsatzsystem LATEX
gesetzt werden.
• Die Beispielanfragen zur Anwendungsdatenbank sollen auch auf den
Implementierungen der anderen Gruppen laufen.
6
Zeitplan
• Abgabe Definitionsphase (06.05, 900 Uhr):
8
Pflichtenheft (für dabsy + Anwendungsprogramm):
1)
2)
3)
4)
5)
6)
Inhaltsverzeichnis
Einführung
Produktumgebung
Produktmodell (Datenflußdiagramme und Datenlexika)
Funktionelle Anforderungen
Qualitätsanforderungen
Entwicklungsumgebung
Bzgl. dabsy ist in 4) und 5) nur auf Erweiterungen bzw. Präzisierungen
der Aufgabenstellung einzugehen. In 4) ist u. a. die Datenbanksprache
exakt festzulegen. Zu 5) sollen Angaben zu den benötigten zentralen
Algorithmen gemacht werden.
• Abgabe Entwurfsphase (25.05, 1400 Uhr):
Entwurfskonzept:
Inhaltsverzeichnis
1) Systemübersicht (Zerlegung in Module und deren besteht
”
aus“ / benutzt“ Abhängigkeiten)
”
2) Modulbeschreibungen (Aufgaben, Schnittstellen)
3) Arbeitsplan (Arbeitsaufteilung innerhalb der Gruppe, Zeitplanung, insbes. für Tests und Integration)
4) Entwurf der Anwendung. (4.1) Abgabe der Anfragen (Listings), (4.2) Datenbankanbindung des Anwendungsprogramms (SQL-Texte / Pseudocode)
• Abgabe Implementierungsphase (14.07, 1400 Uhr):
Benutzer- und Installationshandbuch
Inhaltsverzeichnis
1) Einführung
2) Systemvoraussetzungen
3) Installation
. . . Beschreibung der Programmbenutzung . . .
Realisierung:
Inhaltsverzeichnis
1) Systemübersicht, endgültige Fassung
2) Protokollierung aller Änderungen gegenüber dem Entwurf
3) Modulbeschreibungen (je Modul: Aufgabe, Schnittstellen, Erklärung der wesentlichen Algorithmen, kommentierte Quelltexte), endgültige Fassung
• Vorführung der Programme (17.07)
9
7
Teilnahmeregeln für das InformatikPraktikum, Teil II
1. Teil 2 des Informatik-Praktikums besteht aus einem Software-Projekt.
Ziel ist die Erstellung eines relativ umfangreichen (mehrstufigen und
mehrfunktionalen) Programmsystems im Team nach den Regeln des
Software Engineering (vergl. Begleitmaterial).
2. Voraussetzung zur Teilnahme an diesem Projekt für Studierende, die
gemäß ihrer Prüfungsordnung sowohl Teil I als auch Teil II nachweisen müssen, ist die erfolgreiche Bearbeitung der im Praktikum Teil I
vorausgegangenen Programmierversuche.
Hinweis: Für Studierende der Mathematik mit Studienrichtung Informatik ist Teil II Zulassungsvoraussetzung zum Vordiplom, für Studierende der Mathematik mit Nebenfach Informatik erst zum Diplom.
3. Jede Projektgruppe, die aus 6-10 Studierenden besteht, hat die Aufgabe, ein Programmsystem, das den Anforderungen der Aufgabenstellung
genügt, zu spezifizieren, zu planen, zu realisieren, zu testen und zu dokumentieren. Die Aufgabenstellung ist so angelegt, daß zwar einzelne
Module von Untergruppen zu jeweils ca. 1-2 Studierenden erstellt werden können, für das Gesamtsystem (Festlegung der äußeren und inneren
Schnittstellen, Integration der Module zum Gesamtsystem, Gesamttest
und Dokumentation) aber eine Zusammenarbeit in der Gesamtgruppe
erforderlich ist.
Die reguläre Bearbeitungszeit endet spätestens 1 Woche vor Ende der
Lehrveranstaltungszeit; die genauen Termine für Teil- und Endabgaben werden mit der Aufgabenstellung bekanntgegeben. Alle Gruppen
arbeiten parallel. Als Basismaschinen für das Programmsystem sind
SUN-Rechner mit dem Betriebssystem UNIX und der Programmiersprache C vorgesehen.
4. Jede Projektgruppe trifft sich zu Absprachen und zur Klärung aufgetretener Probleme wöchentlich unter Betreuung eines Tutors in der
Spezifikationsphase 2x2 Std., dann in der Regel 1x2 Std.; die Ausarbeitung von Texten und Programmen erfolgt ohne Betreuung außerhalb
dieser Gruppensitzungen.
5. Zum Abschluß des Projektes findet ein Fachgespräch ( Kolloquium“)
”
eines Mitarbeiters des IfI mit der Gruppe (im Beisein des Tutors) über
Aufbau, Arbeitsweise und Implementierung des Programmsystems statt;
dazu gehört insbesondere eine Vorführung des Programms.
6. Die Feststellung der erfolgreichen Bearbeitung des Projekts hängt von
folgenden Bedingungen ab:
10
(1) Termingerechte Fertigstellung entsprechend der Aufgabenstellung:
Dabei wird besonderes Gewicht auf einen hohen Gebrauchswert der Dokumentation und eine saubere Strukturierung des Programmsystems
gelegt. Zum Termin sollte eine Lösung abgegeben sein, die es gestattet, anhand der Dokumentation ohne große Mühe den Code und die
durchgeführten Tests zu prüfen.
(2) Kontinuierliche und gleichgewichtige Mitarbeit der Teilnehmer am
gesamten Projekt.
(3) Hinreichende Kenntnisse der bearbeiteten Aufgaben und der verwendeten Konzepte.
Ggfs. können der gesamten Projektgruppe oder einzelnen Mitgliedern
Auflagen für eine Nachbearbeitung erteilt werden. Kann ein Teilnehmer
ohne eigenes Verschulden obige Bedingungen zum Teil nicht erfüllen
(z. B. weil der Leistungsstand seiner Gruppe unverhältnismäßig niedrig
ist), so kann die Feststellung der erfolgreichen Bearbeitung dennoch
erfolgen.
11
Herunterladen