prev up next


Aufgabe 6.4 (25 Punkte)

Gegeben seien die folgenden Relationen:

Praktika: {[PraktNr, Titel, SWS, betreutVon]}
Teilnahme: {[MatrNr, PraktNr]}
Praktikumsräume : {[RaumNr, AnzPlaetze]}
Zugangberechtigung: {[MatrNr, RaumNr]}
Belegung: {[PersNr, RaumNr]}

Diese Relationen sollen Ihre Datenbank user_[loginname]_Uni ergänzen. Erstellen Sie für die fünf Relationen create table-Anweisungen, die neben den Attributen bereits die Fremdschlüsselangaben mit sinnvollen cascade-Angaben enthalten. Erstellen Sie außerdem ein SQL-Skript, um einige Tupel einzufügen. Ändern und löschen Sie einige Tupel in Ihrer Ausprägung, um die Fremdschlüssel-Überprüfung zu testen. Geben Sie zusätzlich an, welche Änderungen sich in Ihrer Datenbank-Ausprägung bei welcher Operation ergeben.

Musterlösung vom 08.06.2008:

-- Tabellenstruktur fuer Tabelle 'Praktikumsraeume'

DROP TABLE IF EXISTS Praktikumsraeume;
CREATE TABLE Praktikumsraeume (
RaumNr int(11) NOT NULL,
AnzPlaetze int(11) NOT NULL,
PRIMARY KEY  (RaumNr)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Tabellenstruktur fuer Tabelle 'Praktika'

DROP TABLE IF EXISTS Praktika;
CREATE TABLE Praktika (
PraktNr int(11) NOT NULL,
Titel varchar(20) default NULL,
SWS int(11) default NULL,
PersNr int(11) default NULL,
PRIMARY KEY  (PraktNr),
FOREIGN KEY (PersNr) REFERENCES Professoren (PersNr)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
-- Tabellenstruktur fuer Tabelle 'Teilnahme'

DROP TABLE IF EXISTS Teilnahme;
CREATE TABLE Teilnahme (
MatrNr int(11) NOT NULL,
PraktNr int(11) NOT NULL,
PRIMARY KEY  (MatrNr,PraktNr),
FOREIGN KEY (MatrNr) REFERENCES Studenten (MatrNr) 
  ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (PraktNr) REFERENCES Praktika (PraktNr) 
  ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Tabellenstruktur fuer Tabelle 'Belegung'

DROP TABLE IF EXISTS Belegung;
CREATE TABLE Belegung (
PersNr int(11) NOT NULL,
RaumNr int(11) NOT NULL,
PRIMARY KEY  (PersNr,RaumNr),
FOREIGN KEY (RaumNr) REFERENCES Praktikumsraeume (RaumNr) 
  ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (PersNr) REFERENCES Professoren (PersNr) 
  ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Tabellenstruktur fuer Tabelle 'Zugangsberechtigung'

DROP TABLE IF EXISTS Zugangsberechtigung;
CREATE TABLE Zugangsberechtigung (
MatrNr int(11) NOT NULL,
RaumNr int(11) NOT NULL,
PRIMARY KEY  (MatrNr,RaumNr),
FOREIGN KEY (RaumNr) REFERENCES Praktikumsraeume (RaumNr)
  ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (MatrNr) REFERENCES Studenten (MatrNr)
  ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


prev up next