Prof. Dr. Stephan Kleuker Hochschule Osnabrück Fakultät Ing.-Wissenschaften und Informatik - Software-Entwicklung - Datenbanksysteme Wintersemester 2012/13 5. Aufgabenblatt Wichtig! Damit Sie an den folgenden Übungen überhaupt teilnehmen können, müssen Sie die Daten von Mondial in Ihren Datenbankbereich einspielen, siehe Aufgabe 17. Bei allen Abnahmen ab diesem Aufgabenblatt wird davon ausgegangen, dass Sie individuell diese an Ihrer HS-Datenbank vorführen. Lesen Sie das Dokument zur Nutzung des SQL-Developers von der Veranstaltungs-WebSeite durch. Schreiben Sie Primär- und Fremdschlüssel immer als Constraints mit eigenem Namen. Aufgabe 15 (4 Punkte) Geben Sie folgende Tabellen Besteller, Anruf, Pizza, Bestellung, in Oracle ein (Hinweis: Schreiben Sie ein einzulesendes SQL-Skript in eine Datei, verwenden Sie als Datentypen nur NUMBER und VARCHAR, damit ist das Datum und die Zeit auch ein VARCHAR). Am Anfang Ihres Skriptes sollten Sie die Tabellen löschen, so dass Sie leicht neu erzeugt werden können. Teile der folgenden Aufgabenstellung können gelöst werden, in dem Sie einzelne Skriptzeilen auskommentieren. Bestellung Besteller TELEFON -----------04321 03456 02345 NAME ---------Ronny Bonny Johnny ORT -------Itzehoe Elmshorn Horst ANUMMER PNUMMER MENGE -------- -------- ----1 1 2 1 2 3 2 2 4 3 1 1 4 1 2 4 2 3 Anruf NUMMER -----1 2 3 4 TELEFON -------04321 03456 03456 04321 DATUM ---------01.11.2006 01.11.2006 01.11.2006 01.11.2006 UHRZEIT ----16:45 16:50 18:30 18:45 Pizza NUMMER ------1 2 3 NAME PREIS -------- -------Mafiosa 6.5 Tofu 5.5 Western 8.3 a) Erstellen Sie die Tabellen zunächst ohne die Nutzung von PRIMARY und FOREIGN KEYS, führen Sie folgende Schritte aus und notieren Sie die Ergebnisse. i) Versuchen Sie Daten (also eine Zeile) doppelt in eine Tabelle einzutragen ii) Versuchen Sie in Anruf einen Eintrag für eine nicht in Besteller eingetragene Telefonnummer zu machen iii) Versuchen Sie in Anruf einen Eintrag zu machen, dabei ist die Telefonnummer unbekannt (NULL) iv) Versuchen Sie eine Zeile der Tabelle Besteller zu löschen v) Versuchen Sie eine Zeile der Tabelle Bestellung zu löschen vi) Versuchen Sie die Telefonnummer eines Bestellers zu ändern vii) Versuchen Sie den Namen einer Pizza zu ändern viii) Versuchen Sie die Tabelle Besteller mit CASCADE ... zu löschen ix) Versuchen Sie die Tabelle Pizza mit CASCADE ... zu löschen Hinweise: Überprüfen Sie Ihr Ergebnis mit DESCR <Tabellenname>; und den Inhalt von Tabellen mit SELECT * FROM <Tabellenname>; b) Überlegen Sie, welche Abhängigkeiten in den Tabellen stehen. Führen Sie die gleichen Schritte wie vorher mit der Nutzung von PRIMARY und FOREIGN KEYS aus und notieren Sie die Ergebnisse. Seite 1 von 2 Prof. Dr. Stephan Kleuker Hochschule Osnabrück Fakultät Ing.-Wissenschaften und Informatik - Software-Entwicklung - Datenbanksysteme Wintersemester 2012/13 5. Aufgabenblatt Aufgabe 16 (3 Punkte) a) Schreiben Sie die SQL-Statements, um folgende Tabellen in eine SQL-Datenbank einzufügen. Als weitere Randbedingungen sollen beachtet werden: - Keine Einträge dürfen leer sein. - Die Matrikelnummern der ING-Studis liegen zwischen 1000 und 2000, der BWLStudis zwischen 2000 und 3000 und die der INF-Studis zwischen 3000 und 4000 - Wenn ein Student mit Nachnamen „Cash“ heißt, muss er BWL studieren - Der Name des Fachs soll in der Bereichstabelle eindeutig sein Studi Bereich Matrikel- Fach VorNachFach Kürzel Leiter nummer name name 1001 2013 3014 ING BWL INF Lisa Willi Bert Lustig Wichtig Bartlos Ingenieurwesen Wirtschaftslehre Informatik ING BWL INF Karl Knuffig Gert Genau Norbert Nett b) Leiten Sie aus folgender Beschreibung ein ER-Diagramm ab, übersetzen Sie dies in Tabellen, bringen Sie diese in 3NF und geben sie die Tabellen in die Datenbank ein. „Jede Tabelle wird durch einen eindeutigen Tabellennamen identifiziert und beinhaltet mehrere Spalten. Jede Spalte gehört zu genau einer Tabelle und hat (vereinfacht) einen identifizierenden Spaltennamen und einen Typen. Zu jeder Tabelle gehört maximal ein Primärschlüssel, der durch seinen Namen eindeutig ist. Jeder Primärschlüssel gehört zu genau einer Tabelle und umfasst eine oder mehrere Spalten, die jeweils nur zu maximal einem Primärschlüssel gehören können. Füllen Sie die entstehenden Tabellen mit den zu diesen Tabellen gehörenden Informationen, also tragen sie die Informationen über Tabellen, Spalten und Primärschlüssel ein. Sie werden wahrscheinlich in eine Tabelle mit der Spalte „Tabellenname“ eine Zeile „Tabelle“ eintragen. Eventuell müssen Sie Ihre Spaltennamen leicht anpassen. Aufgabe 17 (1 Punkt) Kopieren Sie die SQL-Files (*.sql) zu Mondial von der Veranstaltungswebseite in ein lokales Verzeichnis des Arbeitsrechners. Laden Sie das Datenbankschema (mondial-schema.sql) mit den Tabellendefinitionen und danach die Daten (mondial-inputs.sql) in Ihren Oracle-Account, d.h. in den Editor (typischerweise auf der rechten Seite) und führen Sie das Skript aus. Tippen Sie „SELECT * FROM Country;“ in das obere rechte Fenster und führen sie die Anfrage aus, Sie sollten einige Datensätze angezeigt bekommen. Hinweis: Bearbeiten Sie diese Aufgabe möglichst nicht gleichzeitig mit vielen anderen Studierenden, also z. B. nicht im Praktikum. Seite 2 von 2