Übungen Datenbanken IM-B 1 ----------------------------------------------------------------------------------------------------------------------------------------------- 1. Dateiorganisation Gegeben sind folgende Datensätze: Buch (BNr, Titel, Autor, Gebiet, Verlag, Preis) BNr Titel Autor Gebiet Verlag Preis b15 Oracle8i Eickler DB b17 Java Welter Programmierung M+T 34.90 b25 Projektmanagem Hansen ent SW-Engineering Springer 52.50 b18 C++ Beck Programmierung Wiley 19.90 b20 Access Beck DB M+T 35.50 b16 WLAN Heller Netze Springer 49.90 …… …… …… …… …… …… …… …… …… …… …… …… 59.90 Annahmen: Von einem Buch sei jeweils nur 1 Exemplar vorhanden Zu jedem Buch wird nur jeweils 1 Autor gespeichert Primärschlüssel: BNr (eindeutig); Umfang: etwa 5000 Datensätze Auf eine Seite (Block) soll 1 Datensatz bzw. 50 Indextabelleneinträge passen 1.1 Skizzieren Sie den Dateiaufbau plus Indexdatei für die angegebenen 6 Sätze: a) serielle Datei mit unsortierter Indextabelle für den Primärschlüssel b) serielle Datei mit sortierter Indextabelle für den Primärschlüssel c) Nehmen Sie an, „Autor“ wäre als 2.Schlüsselfeld vereinbart (i.a. kann man bei einer Dateiorganisation nur 1 Schlüsseleld vereinbaren). Wie würde die (zusätzliche) Indextabelle hierfür aussehen? 1.2 Die mögliche Dateiverarbeitung umfasst: fortlaufendes Lesen, sortiertes fortlaufendes Lesen, wahlfreies Lesen, aufnehmen neuer Sätze, ändern e. bestimmten Satzes, löschen e. best. Satzes. Vergleichen Sie dafür qualitativ (++ , + , 0, - , --) die Eignung der folgenden Dateiorganisationen fortlaufendes fortlaufendes wahlfreies aufnehmen ändern e. löschen e. lesen lesen, sortiert lesen neuer Sätze best. Satzes best. Satzes serielle Datei serielle Datei mit unsortierter Indextabelle Serielle Datei mit sortierter Indextabelle 1.3 Erklären Sie anhand dieses Beispiels, weshalb eine zusätzliche Indextabelle i.a. zu einer geringeren Anzahl von Plattenzugriffen beim wahlfreien Zugriff führt. 1.4 Ein Programm soll Kunden und ihre Aufträge bearbeiten. Dazu werden je eine Kundendatei und eine Auftragsdatei angelegt. a) Legen Sie den Satzaufbau für die Kundendatei und für die Auftragsdatei fest (je 5-6 Felder). b) Tragen Sie in „Kunde“ 3 Kundendatensätze und in „Auftrag“ 7 Auftragsdatensätze ein. c) Wie könnte der prinzipielle Programmablauf aussehen, um alle Kunden und zu jedem Kunden seine Auftragssätze zu bearbeiten (z.B. ausgeben einer entsprechenden Liste)? Wie könnte man die Daten organisieren, damit die Bearbeitung möglichst schnell abläuft? ----------------------------------------------------------------------------------------------------------------------------------------------Prof.Dr.Kühn / Fak. W 2008 IMB-Ueb-SS08.doc Übungen Datenbanken IM-B 2 ----------------------------------------------------------------------------------------------------------------------------------------------- 2. Datenbanken / SQL (DML) Rechnerübung Gegeben sind folgende Relationen Buch Entleiher ENr Name Ort Inhalte: R1: BUCH BNr Titel b15 Oracle8i b17 Java b25 Projektmanagement b18 C++ b20 Access b16 WLAN …… …… BNr Titel Autor Gebiet Verlag Preis Autor Eickler Welter Hansen Beck Beck Heller …… Gebiet DB Programmierung SW-Engineering Programmierung DB Netze …… Verlag M+T Springer Wiley M+T Springer …… Preis 59.90 34.90 52.50 19.90 35.50 49.90 …… R2: ENTLEIHER ENR NAME ORT e1 Zendt Karlsruhe e2 Bauer Karlsruhe e3 Becker Karlsruhe e4 Schmidt Stuttgart e5 Knauer Karlsruhe 2.1 Datenwiedergewinnung: Formulieren Sie die folgenden Aufgaben in SQL: a) Lassen Sie sich den vollständigen Inhalt der beiden Tabellen anzeigen b) Gesucht ist jeweils die Information über alle Entleiher, die in Karlsruhe wohnen. c) Gesucht sind die Namen und Wohnorte aller Entleiher, aufsteigend sortiert nach dem Wohnort d) Hat der Verlag „M+T“ im Gebiet „DB“ Bücher mit einem Preis unter 40 (€) ? Gesucht: Titel, Verlag, Preis. e) Lassen Sie Titel und Preis aller Bücher zum Gebiet „DB“ anzeigen, absteigend nach dem Preis sortiert f) Lassen Sie Autor und Titel für alle Bücher anzeigen, bei denen der Autor mit „H“ beginnt g) Wieviele Bücher des Autors „Hansen“ sind in der Buchtabelle vorhanden? Ausgabe: Autor, Anzahl Bücher h) Wie hoch ist der Durchschnittspreis aller Bücher? Ausgabe: Durchschnittspreis i) Wie hoch ist der Durchschnittspreis aller Bücher der verschiedenen Verlage? Ausgabe: Verlag, Durchschnittspreis 2.2 Datenänderung Kopieren Sie die Relationen BUCH und ENTLEIHER in entsprechende Tabellen unter Ihrer Kennung. a) Nehmen Sie einen neuen „passenden“ Datensatz in die Tabelle Buch auf. b) Erhöhen Sie die Preise aller Bücher um 10%. Lassen Sie den Inhalt der Tabelle Buch anzeigen c) Entfernen Sie das Buch „C++“ des Autors „Beck“ aus der Datenbank. d) Wenn Sie den Anfangszustand der Tabelle Buch wieder herstellen wollen, geben Sie folgenden SQLBefehl: ROLLBACK; Dies funktioniert aber NUR in der laufenden Sitzung! ----------------------------------------------------------------------------------------------------------------------------------------------Prof.Dr.Kühn / Fak. W 2008 IMB-Ueb-SS08.doc Übungen Datenbanken IM-B 3 ----------------------------------------------------------------------------------------------------------------------------------------------- 3. SQL: Rechnerübung Benutzer entleihen Bücher (jedes Buch sei nur in 1 Exemplar vorhanden). Dies lässt sich folgendermaßen darstellen (s.Vorlesung) Entleiher Buch Ausleihe 1 n 1 1 Erstellen Sie die Tabelle AUSLEIHE (Ausnr, ENr, BNr, Rueckdat) Vereinbaren Sie das Feld Ausnr als Primärschlüssel. Verwenden Sie die References Klausel NICHT. Beachten Sie: Datensätze für zurückgegebene Bücher werden in AUSLEIHE gelöscht. 3.1 Füllen Sie die Tabelle AUSLEIHE mit mindestens 10 Zeilen (auch mit bereits überschrittenem Rückgabedatum). Lassen Sie den Inhalt der Tabelle anzeigen Um die neuen Inhalte festzuschreiben geben Sie den Befehl Commit; 3.2 Welche Ergebnistabelle liefert a) ein „kartesisches Produkt“ der beiden Tabellen Entleiher und Ausleihe b) ein (inner) Join der beiden Tabellen Entleiher und Ausleihe mit der Verbundbedingung: Entleiher.Enr=Ausleihe.Enr 3.3 Geben Sie die Entleiherinformationen zu allen Entleihern aus, welche Bücher ausgeliehen haben, deren Rückgabedatum überschritten ist (Ausgabe: Enr, Name, Ort; keine Duplikate in der Ausgabe). 3.4 Stellen Sie fest, wieviele Bücher jeder Benutzer jeweils ausgeliehen hat. Anzeige: Enr, Name, Anzahl_entliehene_Bücher (verwenden Sie COUNT und GROUP BY). 3.5 Löschen Sie jetzt einen (irgendeinen!) Entleiher aus der Tabelle Entleiher, welcher auch in der Tabelle Ausleihe eingetragen ist. Lassen Sie den Inhalt der Tabelle Entleiher anzeigen. 3.6 Geben Sie folgenden SQL-Befehl: ROLLBACK; Lassen Sie den Inhalt der Tabelle Entleiher anzeigen. 3.7 Vereinbaren Sie mit Hilfe des ALTER TABLE Befehls a) ENr als Promärschlüssel in der Tabelle Entleiher b) ENr als Fremdschlüsssel in der Tabelle Ausleihe, bezogen auf die Tabelle Entleiher 3.8 Versuchen Sie jetzt irgendeinen Entleiher aus der Tabelle Entleiher zu löschen, welcher auch in der Tabelle Ausleihe eingetragen ist. Was passiert? 3.9 Verändern Sie die Struktur der Tabelle AUSLEIHE. Es soll nun auch festgehalten werden, ob ein Entleiher gemahnt worden ist. Fügen Sie ein Attribut Mahnkennz hinzu: numerisch, erlaubte Werte: 0, 1, 2; Voreinstellung 0, 3.10 Setzen Sie für alle Ausleihdatensätze, bei denen das Rückgabedatum um mehr als 6 Tage überschritten is,t das Mahnkennz auf 1. 3.11 Erstellen Sie eine View MAHNUNG die folgende Informationen anzeigt: Entleihernummer, Name, Ort, Buchnummer, Titel und Rückgabedatum für alle Bücher, deren Mahnkennzeichen auf 1 steht 3.12 Bei Fristüberschreitung der Ausleihe sollen Gebühren berechnet werden. Derzeit betragen die Gebühren 50 cent pro Buch und Überschreitungstag plus 2 € für die Mahnung. Lassen Sie die fällige Gebühr für alle Bücher anzeigen (BenNr, BuchNr, Gebühr), deren Ausleihdatum überschritten ist 3.13 Allgemeine Fragen: Wäre es sinnvoll, bestimmte Felder in den Tabellen als NOT NULL zu vereinbaren? Welche? Wurde vom System für Tabellen automatisch eine Indextabelle als Zugriffshilfe angelegt? Wäre es sinnvoll, für bestimmte Felder zusätzlich Indextabellen als Zugriffhilfen zu vereinbaren? Für welche Felder und warum? ----------------------------------------------------------------------------------------------------------------------------------------------Prof.Dr.Kühn / Fak. W 2008 IMB-Ueb-SS08.doc Übungen Datenbanken IM-B 4 ----------------------------------------------------------------------------------------------------------------------------------------------- 4. DB-Entwurf 4.1 Auftragsbearbeitung Ausgehend vom Ausdruck einer Auftragsbestätigung soll eine Datenbank entworfen werden, die die für diese Auftragsbestätigung (und darüber hinaus für die Auftragsbearbeitung generell) benötigten Daten bereitstellt. 4.2 Diplomarbeits-DB Eine Professorin betreut Diplomarbeiten verschiedener Studenten bei unterschiedlichen Firmen. Sie möchte sich eine Datenbank anlegen, um einen besseren Überblick über aktuelle und abgeschlossene Arbeiten zu erhalten. Gespeichert werden sollen Informationen über - die Arbeiten: Titel, Autor, wer betreut die Arbeit in der.Firma - die Firmen: Name, Adresse - die Diplomanden: Name, Adresse - und über die mit den Diplomanden geführten Gespräche: Datum, Dauer, Thema,... In einer Firma können mehrere Diplomanden arbeiten, doch kann eine Diplomarbeit immer nur in einer Firma durchgeführt werden. Ein Firmenbetreuer kann bis zu 3 Arbeiten betreuen, aber einem Diplomanden ist stets nur ein Betreuer zugeordnet.. In der Datenbank sollen z.B. folgende Auswertungen möglich sein: - Wann muß die Arbeit des Studenten „X“ abgegeben werden - Hat Student „Y“ eine Verlängerung beantragt und wie lange - Wann war das letzte Gespräch mit Studentin „Z“ - Welche Note erhielt Studentin „A“ für ihre Arbeit - Wie heißt der Firmenbetreuer für die Arbeit „C" und wie ist seine Telefonnummer Entwerfen Sie zu dieser Aufgabenstellung ein entity-relationship Diagramm. 4.3 Bibliotheks-Datenbank Der auf Seite 3 verwendete Mini-Entwurf für eine Bibliotheks-DB soll erweitert werden. Folgende Aufgaben sind zu erledigen: a) Es soll festgehalten werden, dass Bücher in mehreren Exemplaren vorhanden sein können und dass unterschiedliche Exemplare zu unterschiedlichen Auflagen gehören können. Die Ausleihe bezieht sich dann natürlich auf die Exemplare. b) Ein Buch kann mehrere Autoren, ein Autor mehrere Bücher geschrieben haben. Entsprechende Abfragen sollen möglich sein, also z.B.: „von welchen Autoren ist das Buch X“ oder „welche Bücher hat Autor Y geschrieben“ c) Es soll eine Verlängerung der Ausleihzeit möglich sein (max.2x) Verändern Sie den Datenbankenentwurf so, dass obige Zusatzanforderungen erfüllt sind. 4.4 Überlegen Sie sich einen Entwurf für eine „Vorlesungsdatenbank“ aus der hervorgeht: Inhalt der einzalnen Vorlesungen. Wer hält welche Vorleung in welchem Semester , in welchem Hörsaal, um welche Zeit. Wieviele Plätze hat der Hörsaal. Welche Studierenden nehmen teil. Wer könnte diese Vorlesung noch halten. Wann und wo findet die zugehörige Prüfung statt. Was sind die Ergebnisse. (Welche weiteren Fragen fallen Ihnen ein?) ----------------------------------------------------------------------------------------------------------------------------------------------Prof.Dr.Kühn / Fak. W 2008 IMB-Ueb-SS08.doc Übungen Datenbanken IM-B 5 ----------------------------------------------------------------------------------------------------------------------------------------------- Normalisierung 5.1 Auftragsverwaltung Gegeben ist folgende Tabelle: AUFTRAG (Auf-Nr,K-Nr,Dat,Ges-Betr,Art-Nr,Art-Bez,Anzahl,Einzelpreis,Preis) Inhalt: AufNr KNr Dat GesBetrag ArtNr ArtBez Anzahl Einzelpreis 027 2789 020901 155 0039 Schraube 500 .15 027 2789 020901 155 0415 Dübel 300 .10 027 2789 020901 155 0027 Winkel 100 .20 027 2789 020901 155 0123 Nagel 250 .12 028 1413 020901 xx 0217 Bohrer 20 1.60 028 1413 020901 xx 0039 Schraube 1500 .15 .......... .......... .......... ............ ............ ......... ............. .......... Preis 75.00 30.00 20.00 30.00 32.00 ......... ........ • In welcher Normalform befindet sich diese Tabelle? Gibt es Attribute, die man auch weglassen könnte? • Erstellen Sie aus obigerTabelle Tabellen in 3.Normalform (lassen Sie keine Attribute weg). 5.2 Rechnungsüberwachung In einer DB sollen die verschickten Rechnungen gespeichert und der Zahlungseingang überwacht werden. Für Werbezwecke wird außerdem festgehalten, welcher Kunde wann von welchem Vertreter besucht (Kontakt=B) oder angerufen (Kontakt=Tel) wurde. Es wurden folgende 2 Tabellen angelegt: VERKAUF (KdNr, KdName, KdAdresse, RNr, RDat, RBetrag, ZahlDat, Mahnkennz) KONTAKTE (KdNr, KdName, VertrNr, Datum, Kontakt, VertrNr, Datum, Kontakt,...) • • In welcher Normalform befindet sich diese Tabellen? Erstellen Sie daraus Tabellen in 3.Normalform. 5.3 Mitarbeiter-DB In einer Mitarbeiter-Tabelle wird festgehalten, welche Sprachen und welche Programmiersprachen ein Mitarbeiter wie gut beherrscht und an welchen Projekten er mit welchem Prozentsatz seiner Arbeitszeit beteiligt ist: Mitarbeitertabelle ( MANr, Name, Sprache, wiegut, Sprache, wiegut, Sprache, wiegut, ..., Programmiersprache, wiegut, Programmiersprache, wiegut,..., Projektbezeichnung, AnteilArbeitszeit, Projektbezeichnung, AnteilArbeitszeit,.....) • Erstellen Sie daraus Tabellen in 3.Normalform. Kommerzielle Systeme 5.4 Nutzwertanalyse Sie möchten das Datenbanksystem Access besser kennen lernen. Es gibt nun verschiedene Arten, wie Sie diese Kenntnisse erwerben können und für diese verschiedenen Vorgehensweisen sollen sie eine Nutzwertanalyse durchführen. Die Alternativen sind: 1. Access wird in 4 Vorlesungsstunden überblicksweise gelehrt, dafür entfällt anderer Stoff. 2. Sie lernen Access parallel zur Vorlesung selbst anhand eines Buchs/CD/ Internet-Anleitungen 3. An der Hochschule wird ausserhalb der Vorlesungen (z.B. an 3 Samstagen) ein ausführlicher Kurs zu Access angeboten 4. Sie lernen Access dann selbst, wenn Sie es beruflich brauchen Führen Sie hierfür für sich eine Nutzwertanalyse durch. ----------------------------------------------------------------------------------------------------------------------------------------------Prof.Dr.Kühn / Fak. W 2008 IMB-Ueb-SS08.doc Übungen Datenbanken IM-B 6 ----------------------------------------------------------------------------------------------------------------------------------------------- Noch: Kommerzielle Systeme 6.1 File-Server und Datenbank-Server Sie haben einen PC und arbeiten im Mehrbenutzerbetrieb über ein Netz mit 2 verschiedenen Datenbanken (I) und (II), die jeweils auf einem Serverrechner installiert sind. (I) Access auf dem PC, Access zur Datenhaltung auf einem File-Server (II) Access auf dem PC, SQL-Server zur Datenhaltung (Datenbankserver) Jede Serverdatenbank enthält eine Tabelle KUNDE (KdNr, Name, Ort, BetreuerNr,...) a) zeichnen Sie schematisch den Aufbau der beiden Varianten b) Sie lassen sich in beiden Fällen aus KUNDE alle Kunden mit Ort=Stuttgart anzeigen: welche Daten werden jeweils übers Netz übertragen? c) Sie ändern in beiden Fällen in der Tabelle KUNDE die BetreuerNr von 1234 auf 1352: - welche Daten werden jeweils übers Netz übertragen? - auf welchem Rechner wird die Änderung des Tabelleninhalts jeweils durchgeführt? 6.2 Anwendungsarchitekturen In einer Firma gege es folgende Rechnerstruktur Arbeitsplatzrechner stärker ausgebauter Rechner, kann als Server dienen Netz Skizzieren Sie jeweils in einer eigenen Zeichnung, auf welchen Rechnern welche Software installiert ist (DBMS, Daten, Anwendungsprogramm, Oberfläche, evt. web-Server, web-Browser) für folgende Fälle: a) Unterschiedliche Benutzer arbeiten mit gleichen oder unterschiedlichen Anwendungen jeweils mit einem desktop-Datenbanksystem b) Unterschiedliche Benutzer arbeiten mit gleichen oder unterschiedlichen Anwendungen mit einer zentralen Datenbank im File-Server-Betrieb c) Unterschiedliche Benutzer arbeiten mit gleichen oder unterschiedlichen Anwendungen mit einer zentralen Datenbank im client-Server-Betrieb d) Unterschiedliche Benutzer greifen mit derselben Anwendung über einen web-Browser auf eine zentrale Datenbank zu 6.3 ACCESS a) Skizzieren Sie, wie die grafische Darstellung der Tabellen Benutzer, Ausleihe, Buch und ihrer Beziehungen in ACCESS aussieht. b) Skizzieren Sie die Bildschirmoberfläche, wenn Sie in der Entwurfsansicht eine Abfrage mit dem Namen „Mahnabfrage“ erzeugen wollen, die folgende Informationen liefert: Benutzernummer, Name, Ort, Buchnummer und Rückgabedatum für alle Bücher,deren Rückgabedatum vor dem 20.12.07 liegt c) Was wäre das entsprechende Vorgehen in SQL, um dieselbe Abfrage zu formulieren und mit einem Namen zu versehen, so dass man sie bei späterem Bedarf über diesen Namen aufrufen kann? ----------------------------------------------------------------------------------------------------------------------------------------------Prof.Dr.Kühn / Fak. W 2008 IMB-Ueb-SS08.doc