Prof. Dr. Heide Faeskorn–Woyke – Prof. Dr. Birgit Bertelsmeier Fakultät 10, Institut für Informatik, Fachhochschule Köln - Campus Gummersbach 2. Praktikum WS 2005/06 Fach Datenbanken und Informationssysteme Aufgabe 1: Relationale Algebra im „Reisebüro“ Ein Reisebüro verwendet das folgende Datenbankschema: Stadt (Stadt, Land, Flughafen) Reisezeit (Flughafen1, Flughafen2, Zeit) Hotel (Hotel, Stadt, Klasse, Adresse, AnzahlEZ, AnzahlDZ, PreisEZ, PreisDZ) Buchung (BuchungsNr, Hotel, Stadt, Anreisedatum, Abreisedatum, KundenNr, GebuchteEZ, GebuchteDZ) Kunde (KundenNr, Name, Vorname, Adresse) Dabei liegen folgende Vereinbarungen vor : Wir gehen dabei davon aus, dass die von den Hotels angegebenen Zimmer ausschließlich von unserem Reisebüro belegt werden können. - Ein Kunde wird festgehalten mit Kundennummer, Name, Vorname und Adresse. - Ein Hotel hat eine eindeutige Adresse in einer Stadt, außerdem eine Klasse. Jedes Hotel hat eine festgelegte Zahl von Einzel- und Doppelzimmer mit festgelegten Preisen pro Übernachtung im Einzel- und Doppelzimmer. - Eine Stadt liegt in genau einem Land und hat genau einen Flughafen in ihrer Nähe. - Eine Buchung besteht aus der Buchungsnummer, Name und Stadt des gebuchten Hotel, An- und Abreisedatum, der Kundennummer desjenigen Kunden, der den Aufenthalt bucht und der Zahl der von ihm gebuchten Einzel- und Doppelzimmer und der Zeit. Die Zeit ist die Reisezeit insgesamt zwischen zwei Flughäfen, also den Start – und Landeflughäfen ohne Zwischenlandung Beantworten Sie die folgenden Fragen in der relationalen Algebra und zeichnen Sie einen Operatorbaum! Falls sich die Frage nicht mittels der relationalen Algebra beantworten lässt, begründen Sie bitte, wieso! a) Bestimmen Sie alle Städte (mit Land und allen Flughäfen), in denen es ein Hotel mit dem Namen 'Tiziano' gibt. Projektion Stadt, Land, Flughafen * Stadt Selektion Hotelname = 'Tiziano' Hotel Prof. Dr. Heide Faeskorn–Woyke – Prof. Dr. Birgit Bertelsmeier Fakultät 10, Institut für Informatik, Fachhochschule Köln - Campus Gummersbach b) Welche Hotelketten haben in allen erfassten Städten Filialen? (d.h. welche Hotels mit der gleichen Bezeichnung kommen in allen erfassten Städten vor)? Division Projektion Projektion Stadt Stadtname, Hotelname Hotel Hotel c ) Nennen Sie Name, Vorname und Adresse aller Kunden, die ein Hotel gebucht haben, welches über mehr Einzelzimmer als Doppelzimmer verfügt. Projektion Name, Vorname, Adresse * * Kunde Selektion Buchung AnzahlEZ >AnzahlDZ Hotel d) Nennen Sie alle Hotels und die Städte, in denen sie liegen, für die keine Buchung vorliegt! Differenz Projektion Projektion Hotel, Stadt Hotel Hotel, Stadt Buchung Prof. Dr. Heide Faeskorn–Woyke – Prof. Dr. Birgit Bertelsmeier Fakultät 10, Institut für Informatik, Fachhochschule Köln - Campus Gummersbach Aufgabe 2: Relationale Algebra „Weinhändler“ Betrachten Sie die folgende Mini-Wein-Datenbank. Die Primärschlüssel sind unterstrichen. Rebsorte Sorte 1 2 3 Wein Name Merlot Riesling Spätburgunder Farbe rot weiss rot Jahr 2003 2004 2001 2004 Preis 20 14 50 10 Wein_ID 1 2 3 Name Meerling Vom Feld Baldere Rebsorte 1 2 3 Jahrgang Wein_ID 2 2 3 1 Qualität 1 2 1 2 Beantworten Sie die folgenden Fragen in der relationalen Algebra und zeichnen Sie einen Operatorbaum! Falls sich die Frage nicht mittels der relationalen Algebra beantworten lässt, begründen Sie bitte, wieso! Falls Sie einen Operatorbaum zeichnen, geben Sie bitte das Ergebnis der Anfrage an. a) Geben Sie für alle Weine des Jahrgangs 2004, die mehr als 13 Euro kosten, neben ihrem Namen auch den Namen der zugehörigen Rebsorte an. Projektion Name, Rebsorte Selektion Jahr = 2004 AND preis >= 13 * * Jahrgang Ergebnis NAME Vom Feld Rebsorte Wein Rebsorte Riesling b) Welche Weine (Name, durchschnittliche Qualität, durchschnittlicher Preis, maximaler Preis, minimaler Preis) haben eine durchschnittliche Qualität über alle ihre Jahrgänge von 2 und besser (also 1)? Geht nicht, da der Durchschnitt in der relationalen Algebra nicht enthalten ist! Prof. Dr. Heide Faeskorn–Woyke – Prof. Dr. Birgit Bertelsmeier Fakultät 10, Institut für Informatik, Fachhochschule Köln - Campus Gummersbach c) Welche Riesling-Weine (Wein_id, Name) haben in keinem (!) Jahrgang die Qualitätsstufe 3 besessen? Projektion Wein_Id, Name * Wein Differenz Projektion Projektion Wein_Id Wein_Id Selektion Selektion Rebsorte = 'Riesling' Qualitaet = 3 Jahrgang Wein Ergebnis NAME Vom Feld d) Welche Burgunder-Weine (Name, Jahrgang, Qualität, Preis) haben einen höheren Preis als der Durchschnittspreis der Merlot-Weine? Geht nicht, da der Durchschnitt in der relationalen Algebra nicht enthalten ist! e) Für welchem Jahrgang (Zeile in Tabelle „Jahrgang“) sind keine Rotweine (Farbe = ‚rot’) mehr vorrätig? Projektion Wein_Id, Name * Wein Differenz Projektion Projektion Jahrgang Jahrgang Selektion Jahrgang Farbe = 'rot' * Rebsorte * Jahrgang Ergebnis JAHR 2003 Wein Prof. Dr. Heide Faeskorn–Woyke – Prof. Dr. Birgit Bertelsmeier Fakultät 10, Institut für Informatik, Fachhochschule Köln - Campus Gummersbach Aufgabe 3: Datenbankschema „Brumm & Brüder“ Generieren Sie für Ihr eigenes Brumm& Brüder-Datenmodell (physisches Modell) „per Knopfdruck“ aus ERwin heraus ausführbare SQL-Scripte zur Implementierung Ihres Schemas in der Datenbank. (Wenigstens fünf Tabellen Ihres Modells sollten in dem ausführbaren Script enthalten sein.) Ihr Datenmodell sollte enthalten: 1. Relationen, Attribute mit Oracle-Datentypen (!), Primärschlüsseln, Fremdschlüsseln 2. Domänen: mindestens drei selbst definierte Domänen erstellen, die auf Validation-Rules in ERWIN beruhen und sich als CONSTRAINTS in der Datenbank erzeugen lassen 3. Zwei in ERWIN selbst definierte Benutzersichten (Views) 4. Mindestens zwei zusätzliche Sequenzen und drei Zweitschlüssel (Indizes) 5. eine Übersicht über Benutzerrechte 6. und zwei Integritätsregeln, die sich nicht als CONSTRAINTS darstellen lassen 7. Fügen Sie in jede Ihrer Tabellen im Datenbankschema Brumm& Brüder mindesten einen Datensatz ein Bis auf die Benutzerrechte und komplexe Integritätsbedingungen können Sie die für das Datenbankschema notwendigen Informationen komplett in ERwin erstellen. Dazu das physische Modell vollständig mit Informationen versorgen. Benutzerrechte und Integritätsbedingungen, die sich nicht mit ERwin beschreiben lassen, bitte in einer separaten Text-Datei ablegen. Aufgabe 4: Constraints „Brumm & Brüder“ Führen Sie auf Ihrer Datenbank Brumm& Brüder folgende Erweiterungen durch: - - Erweitern Sie die Fahrzeug-Tabelle um die Spalte ’status’, die nur die Zustände ’V’ für ’vorbestellt’, ’A’ für ’ausgeliehen’ , ’T’ für ’Tag-Reinigung’, ’N’ für ’Nacht-Reinigung’ und ’S’ für ’sauber und entleihbar’ annehmen kann. Programmieren Sie die Integritätsbedingung so, dass sie erst zum Transaktionsende geprüft wird Default-Status soll ‚S’ sein. Groß-/Kleinschreibung soll bei der Erfassung der Statuskürzel keine Rolle spielen. Erstellen Sie Testfälle und demonstrieren Sie sie bei der Abnahme. Hinweis: Verwenden Sie den Prüfungszeitpunkt INITIALLY DEFERRED Lösung: ALTER TABLE fahrzeuge DROP (status); ALTER TABLE fahrzeuge ADD ( status VARCHAR2(1) DEFAULT ‘S’ CONSTRAINT ic_status CHECK (UPPER(status) IN (‘V’,’A’,’T’,’N’,’S’)) INITIALLY DEFERRED); -- alte Daten anpassen UPDATE fahrzeuge SET status = ’S’; NSERT INTO fahrzeuge VALUES (999888770, 3, 66, 15800, ‘GM-ZX 89’, SYSDATE+100, SYSDATE+100, ‘rot’, ‘j’, SYSDATE-60, NULL, ‘V’); INSERT INTO fahrzeuge VALUES (999888771, 3, 66, 15800, ‘GM-ZX 89’, SYSDATE+100, SYSDATE+100, ‘rot’, ‘j’, SYSDATE-60, NULL, ‘A’); INSERT INTO fahrzeuge VALUES (999888772, 3, 66, 15800, ‘GM-ZX 89’, SYSDATE+100, SYSDATE+100, ‘rot’, ‘j’, SYSDATE-60, NULL, ‘t’); INSERT INTO fahrzeuge VALUES (999888773, 3, 66, 15800, ‘GM-ZX 89’, SYSDATE+100, SYSDATE+100, ‘rot’, ‘j’, SYSDATE-60, NULL, ‘N’); INSERT INTO fahrzeuge VALUES (999888774, 3, 66, 15800, ‘GM-ZX 89’, SYSDATE+100, SYSDATE+100, ‘rot’, ‘j’, SYSDATE-60, NULL, ‘s’); -- IC-Fehler INSERT INTO fahrzeuge VALUES (999888775, 3, 66, 15800, ‘GM-ZX 89’, SYSDATE+100, SYSDATE+100, ‘rot’, ‘j’, SYSDATE-60, NULL, ‘X’); -- ohne COMMIT-Befehl akzeptiert das DBMS den fehlerhaften Datensatz vorerst und fügt ihn ungeprüft Prof. Dr. Heide Faeskorn–Woyke – Prof. Dr. Birgit Bertelsmeier Fakultät 10, Institut für Informatik, Fachhochschule Köln - Campus Gummersbach -- in den Datenbestand ein. COMMIT; * FEHLER in Zeile 1: ORA-02091: Transaktion wurde zurückgesetzt ORA-02290: Verstoß gegen CHECK-Regel (SCOTT.IC_STATUS) -- auch die 5 ersten richtigen Datensätze wurden zurückgerollt, da sie zu der gesamten Transaktion gehörten; die ’neue’ Datenbasis hat den gleichen Zustand wie vor Beginn der Transaktion
© Copyright 2024 ExpyDoc