/*
      Dieses Script für MySQL ist nahezu identisch zu dem Originalscript
      für den Microsoft SQL Server 2000 (siehe
      http://www-lehre.inf.uos.de/~dbs/2005/skript/SQL-Server/sql-script.txt.html).
      Allerdings ist in MySQL das Datumsformat anders: Während in Microsoft SQL
      ein Datum in der Form 'TT.MM.JJJJ' gespeichert wird, benutzt MySQL das Format 'JJJJ-MM-TT'.
      Ausserdem wird eine Datenbank 'dbs05' erstellt, in der dann die Tabellen angelegt werden.
*/

 CREATE DATABASE dbs05;
 USE dbs05;

 CREATE TABLE Studenten
        (MatrNr         INTEGER PRIMARY KEY,
         Name           VARCHAR(20) NOT NULL,
         Semester       INTEGER,
         GebDatum       DATETIME);

 CREATE TABLE Professoren
        (PersNr         INTEGER PRIMARY KEY,
         Name           VARCHAR(20) NOT NULL,
         Rang           CHAR(2) CHECK (Rang in ('C2', 'C3', 'C4')),
         Raum           INTEGER UNIQUE,
         Gebdatum       DATETIME);

 CREATE TABLE Assistenten
        (PersNr         INTEGER PRIMARY KEY,
         Name           VARCHAR(20) NOT NULL,
         Fachgebiet     VARCHAR(20),
         Boss           INTEGER REFERENCES Professoren,
         GebDatum       DATETIME);

 CREATE TABLE Vorlesungen
        (VorlNr         INTEGER PRIMARY KEY,
         Titel          VARCHAR(20),
         SWS            INTEGER,
         gelesenVon     INTEGER REFERENCES Professoren);

 CREATE TABLE hoeren
        (MatrNr         INTEGER REFERENCES Studenten   ON UPDATE CASCADE
                                                       ON DELETE CASCADE,
         VorlNr         INTEGER REFERENCES Vorlesungen ON UPDATE CASCADE,
         PRIMARY KEY    (MatrNr, VorlNr));

 CREATE TABLE voraussetzen
        (Vorgaenger     INTEGER REFERENCES Vorlesungen  ON UPDATE CASCADE,
         Nachfolger     INTEGER REFERENCES Vorlesungen,
         PRIMARY KEY    (Vorgaenger, Nachfolger));

 CREATE TABLE pruefen
        (MatrNr         INTEGER REFERENCES Studenten   ON UPDATE CASCADE
                                                       ON DELETE CASCADE,
         VorlNr         INTEGER REFERENCES Vorlesungen ON UPDATE CASCADE,
         PersNr         INTEGER REFERENCES Professoren,
         Note           NUMERIC(3,1) CHECK (Note between 0.7 and 5.0),
         PRIMARY KEY    (MatrNr, VorlNr));

INSERT INTO Studenten(MatrNr, Name, Semester, GebDatum) 
VALUES (24002, 'Xenokrates', 18, '1975-10-23'); 
 
INSERT INTO Studenten(MatrNr, Name, Semester, GebDatum) 
VALUES (25403, 'Jonas', 12,'1973-09-18'); 
 
INSERT INTO Studenten(MatrNr, Name, Semester, GebDatum) 
VALUES (26120, 'Fichte', 10,'1967-12-04'); 

INSERT INTO Studenten(MatrNr, Name, Semester, GebDatum) 
VALUES (26830, 'Aristoxenos', 8,'1943-08-05'); 
 
INSERT INTO Studenten(MatrNr, Name, Semester, GebDatum) 
VALUES (27550, 'Schopenhauer', 6,'1954-06-22'); 

INSERT INTO Studenten(MatrNr, Name, Semester, GebDatum) 
VALUES (28106, 'Carnap', 3,'1979-10-02'); 
 
INSERT INTO Studenten(MatrNr, Name, Semester, GebDatum) 
VALUES (29120, 'Theophrastos', 2,'1948-04-19'); 
 
INSERT INTO Studenten(MatrNr, Name, Semester, GebDatum) 
VALUES (29555, 'Feuerbach', 2,'1961-02-12'); 
 


INSERT INTO Professoren(PersNr, Name, Rang, Raum, GebDatum) 
VALUES (2125, 'Sokrates', 'C4', 226,'1923-08-23'); 

INSERT INTO Professoren(PersNr, Name, Rang, Raum, GebDatum) 
VALUES (2126, 'Russel', 'C4', 232,'1934-07-10');  
 
INSERT INTO Professoren(PersNr, Name, Rang, Raum, GebDatum) 
VALUES (2127, 'Kopernikus', 'C3', 310,'1962-03-12'); 
 
INSERT INTO Professoren(PersNr, Name, Rang, Raum, GebDatum) 
VALUES (2133, 'Popper', 'C3', 052,'1949-09-03'); 
 
INSERT INTO Professoren(PersNr, Name, Rang, Raum, GebDatum) 
VALUES (2134, 'Augustinus', 'C3', 309,'1939-04-19'); 
 
INSERT INTO Professoren(PersNr, Name, Rang, Raum, GebDatum) 
VALUES (2136, 'Curie', 'C4', 036,'1929-05-10'); 
 
INSERT INTO Professoren(PersNr, Name, Rang, Raum, GebDatum) 
VALUES (2137, 'Kant', 'C4', 007,'1950-04-04'); 
 
 
 
INSERT INTO Assistenten(PersNr, Name, Fachgebiet, Boss, GebDatum) 
VALUES (3002, 'Platon', 'Ideenlehre', 2125, '1966-08-14'); 
 
INSERT INTO Assistenten(PersNr, Name, Fachgebiet, Boss, GebDatum) 
VALUES (3003, 'Aristoteles', 'Syllogistik', 2125,'1970-12-23'); 
 
INSERT INTO Assistenten(PersNr, Name, Fachgebiet, Boss, GebDatum) 
VALUES (3004, 'Wittgenstein', 'Sprachtheorie', 2126,'1968-08-02'); 
 
INSERT INTO Assistenten(PersNr, Name, Fachgebiet, Boss, GebDatum) 
VALUES (3005, 'Rhetikus', 'Planetenbewegung', 2127,'1962-12-20'); 
 
INSERT INTO Assistenten(PersNr, Name, Fachgebiet, Boss, GebDatum) 
VALUES (3006, 'Newton', 'Keplersche Gesetze', 2127,'1961-11-10'); 
 
INSERT INTO Assistenten(PersNr, Name, Fachgebiet, Boss, GebDatum) 
VALUES (3007, 'Spinoza', 'Gott und Natur', 2134,'1963-02-08'); 


 
INSERT INTO Vorlesungen(VorlNr, Titel, SWS, gelesenVon) 
VALUES (5001, 'Grundzüge', 4, 2137);

INSERT INTO Vorlesungen(VorlNr, Titel, SWS, gelesenVon) 
VALUES (5041, 'Ethik', 4, 2125);
 
INSERT INTO Vorlesungen(VorlNr, Titel, SWS, gelesenVon) 
VALUES (5043, 'Erkenntnistheorie', 3, 2126);
 
INSERT INTO Vorlesungen(VorlNr, Titel, SWS, gelesenVon) 
VALUES (5049, 'Mäeutik', 2, 2125);
 
INSERT INTO Vorlesungen(VorlNr, Titel, SWS, gelesenVon) 
VALUES (4052, 'Logik', 4, 2125);
 
INSERT INTO Vorlesungen(VorlNr, Titel, SWS, gelesenVon) 
VALUES (5052, 'Wissenschaftstheorie', 3, 2126); 
 
INSERT INTO Vorlesungen(VorlNr, Titel, SWS, gelesenVon) 
VALUES (5216, 'Bioethik', 2, 2126); 
 
INSERT INTO Vorlesungen(VorlNr, Titel, SWS, gelesenVon) 
VALUES (5259, 'Der Wiener Kreis', 2, 2133); 
 
INSERT INTO Vorlesungen(VorlNr, Titel, SWS, gelesenVon) 
VALUES (5022, 'Glaube und Wissen', 2, 2134); 
 
INSERT INTO Vorlesungen(VorlNr, Titel, SWS, gelesenVon) 
VALUES (4630, 'Die 3 Kritiken', 4, 2137); 


 
 
INSERT INTO hoeren(MatrNr, VorlNr) 
VALUES (26120, 5001); 
 
INSERT INTO hoeren(MatrNr, VorlNr) 
VALUES (27550, 5001); 
 
INSERT INTO hoeren(MatrNr, VorlNr) 
VALUES (27550, 4052); 
 
INSERT INTO hoeren(MatrNr, VorlNr) 
VALUES (27550, 5041); 
 
INSERT INTO hoeren(MatrNr, VorlNr) 
VALUES (28106, 4052); 
 
INSERT INTO hoeren(MatrNr, VorlNr) 
VALUES (28106, 5216); 
 
INSERT INTO hoeren(MatrNr, VorlNr) 
VALUES (28106, 5259); 
 
INSERT INTO hoeren(MatrNr, VorlNr) 
VALUES (27550, 4630); 

INSERT INTO hoeren(MatrNr, VorlNr) 
VALUES (29120, 5041); 

INSERT INTO hoeren(MatrNr, VorlNr) 
VALUES (29120, 5049); 

INSERT INTO hoeren(MatrNr, VorlNr) 
VALUES (29555, 5022); 

INSERT INTO hoeren(MatrNr, VorlNr) 
VALUES (25403, 5022);  
 
INSERT INTO hoeren(MatrNr, VorlNr) 
VALUES (29555, 5001);  
 
 
 
INSERT INTO voraussetzen(Vorgaenger, Nachfolger) 
VALUES (5001, 5041); 
 
INSERT INTO voraussetzen(Vorgaenger, Nachfolger) 
VALUES (5001, 5043); 
 
INSERT INTO voraussetzen(Vorgaenger, Nachfolger) 
VALUES (5001, 5049); 
 
INSERT INTO voraussetzen(Vorgaenger, Nachfolger) 
VALUES (5041, 5216);  

INSERT INTO voraussetzen(Vorgaenger, Nachfolger) 
VALUES (5043, 5052);  

INSERT INTO voraussetzen(Vorgaenger, Nachfolger) 
VALUES (5041, 5052); 
 
INSERT INTO voraussetzen(Vorgaenger, Nachfolger) 
VALUES (5052, 5259); 
 
INSERT INTO pruefen(MatrNr, VorlNr, PersNr, Note) 
VALUES (28106, 5001, 2126, 1.0);

INSERT INTO pruefen(MatrNr, VorlNr, PersNr, Note) 
VALUES (25403, 5041, 2125, 2.0);

INSERT INTO pruefen(MatrNr, VorlNr, PersNr, Note) 
VALUES (27550, 4630, 2137, 2.0);