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