Übungsblatt 03 - Institut für Informatik

Werbung
Universität Augsburg, Institut für Informatik
Prof. Dr. W. Kießling
Dr. M. Endres, Dr.-Ing. S. Mandl
SS 2011
20. Mai. 2011
Übungsblatt 3
Datenbankprogrammierung (Oracle)
Aufgabe 1: Systemtabellen
Finden Sie heraus, welche User zur Rolle STUDENT ROLE gehören.
Welche Rechte werden durch die Rolle STUDENT ROLE bereitgestellt?
Zeigen Sie alle Data Dictionary und Dynamic Performance Views an, z.B. mit
select * from DBA_views where view_name like ’V$%’
In der Vorlesung waren das viel mehr! Was ist die Ursache? Wie kommen Sie doch noch zu einem Ergebnis?
Aufgabe 2: Modellierung eines öffentlichen Verkehrsbetriebes
Überlegen Sie sich eine ER-Modellierung für eine Fahrzeugeinsatzplanung eines öffentlichen Verkehrsbetriebes (z.B.
für die VGA in Augsburg). Erstellen Sie das Entity-Relationship Diagramm mit Hilfe des Oracle Data Modeler.
Hinweis: Ihr Modell sollte dabei insbesondere Entitäten für Fahrer, Fahrzeuge und Fahrten beinhalten.
Aufgabe 3: SQL Puzzle
In dieser Aufgabe sollen Sie ein CREATE TALBE Statement schreiben, welches so “vollständig wie möglich” ist. Die
Tabelle ist gegeben als
CREATE TABLE FiscalYearTable1 (
fiscalyear SMALLINT,
startdate DATE,
enddate
DATE
);
Die Tabelle speichert Datums-Bereiche. Damit kann festgestellt werden, zu welchem Geschäftsjahr (fiscalyear)
ein beliebiges Datum gehört. Das Geschäftsjahr bei Oracle geht z.B. vom 1. Juni bis zum 31. Mai.
Fügen Sie alle denkbaren, sinnvollen, notwendigen, ... Constraints hinzu, so dass sichergestellt wird, dass die Tabelle
nur “korrekte Informationen” enthält.
Sie können dabei alle SQL92 Funktionen sowie die “Zeit”-Funktion
EXTRACT [YEAR | MONTH | DAY] FROM <date expression>
verwenden.
Aufgabe 4: Reverse Engineering
Überführen Sie nachstehende SQL-DDL Anweisungen in ein Entity-Relationship-Modell. Verwenden Sie dazu den
Oracle Data Modeler. Generieren Sie anschließend aus Ihrem ER-Modell die SQL-DDL Statements. Stimmen diese
mit den unten aufgeführten überein? Wenn nein, warum nicht?
CREATE TABLE Studenten
(MatrNr
INTEGER PRIMARY KEY,
Name
VARCHAR(30) NOT NULL,
Semester
INTEGER);
CREATE TABLE Professoren
(PersNr
INTEGER PRIMARY KEY,
Name
VARCHAR(30) NOT NULL,
Rang
CHAR(2) CHECK (Rang in (’C2’, ’C3’, ’C4’)),
Raum
INTEGER UNIQUE);
CREATE TABLE Assistenten
(PersNr
INTEGER PRIMARY KEY,
Name
VARCHAR(30) NOT NULL,
Fachgebiet
VARCHAR(30),
Boss
INTEGER,
FOREIGN KEY
(Boss) REFERENCES Professoren);
CREATE TABLE Vorlesungen
(VorlNr
INTEGER PRIMARY KEY,
Titel
VARCHAR(30),
SWS
INTEGER,
gelesenVon
INTEGER REFERENCES Professoren);
CREATE TABLE hoeren
(MatrNr
VorlNr
PRIMARY KEY
INTEGER REFERENCES Studenten ON DELETE CASCADE,
INTEGER REFERENCES Vorlesungen ON DELETE CASCADE,
(MatrNr, VorlNr));
CREATE TABLE voraussetzen
(Vorgaenger
INTEGER REFERENCES Vorlesungen ON DELETE CASCADE,
Nachfolger
INTEGER REFERENCES Vorlesungen ON DELETE CASCADE,
PRIMARY KEY
(Vorgänger, Nachfolger));
CREATE TABLE pruefen
(MatrNr
VorlNr
PersNr
Note
PRIMARY KEY
INTEGER REFERENCES
INTEGER REFERENCES
INTEGER REFERENCES
NUMERIC(2,1) CHECK
(MatrNr, VorlNr));
Studenten ON DELETE CASCADE,
Vorlesungen,
Professoren,
(Note between 0.7 and 5.0),
Herunterladen