initial commit
This commit is contained in:
138
01-create.sql
Normal file
138
01-create.sql
Normal file
@@ -0,0 +1,138 @@
|
||||
USE db_vorlesung;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
DROP TABLE IF EXISTS Saal;
|
||||
DROP TABLE IF EXISTS Sitzplatz;
|
||||
DROP TABLE IF EXISTS Reservierung;
|
||||
DROP TABLE IF EXISTS Reservierung_Log;
|
||||
DROP TABLE IF EXISTS Vorstellung;
|
||||
DROP TABLE IF EXISTS Film;
|
||||
DROP TABLE IF EXISTS Schauspieler;
|
||||
DROP TABLE IF EXISTS nm_Reservierung_Sitzplatz;
|
||||
DROP TABLE IF EXISTS nm_Film_Schauspieler;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Saal (
|
||||
ID INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
Name VARCHAR(50) NOT NULL,
|
||||
Beschreibung MEDIUMTEXT,
|
||||
UNIQUE u_saal_name (Name)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Sitzplatz (
|
||||
ID INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
Reihe INTEGER UNSIGNED NOT NULL,
|
||||
Platz INTEGER UNSIGNED NOT NULL,
|
||||
Preis FLOAT UNSIGNED NOT NULL,
|
||||
fk_Saal_ID INTEGER UNSIGNED NOT NULL,
|
||||
UNIQUE u_sitzplatz (Reihe, Platz, fk_Saal_ID),
|
||||
CONSTRAINT fk_sitzplatz_saal_id
|
||||
FOREIGN KEY (fk_Saal_ID)
|
||||
REFERENCES Saal (ID)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Schauspieler (
|
||||
ID INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
Vorname VARCHAR(255) NOT NULL,
|
||||
Nachname VARCHAR(255) NOT NULL,
|
||||
Geburtstag DATE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Film (
|
||||
ID INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
Name VARCHAR(255) NOT NULL,
|
||||
Spieldauer INTEGER UNSIGNED NOT NULL,
|
||||
Bewertung FLOAT UNSIGNED NOT NULL,
|
||||
Beschreibung MEDIUMTEXT,
|
||||
INDEX i_film_name (Name)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Vorstellung (
|
||||
ID INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
Beginn DATETIME NOT NULL,
|
||||
fk_Film_ID INTEGER UNSIGNED NOT NULL,
|
||||
fk_Saal_ID INTEGER UNSIGNED NOT NULL,
|
||||
CONSTRAINT fk_vorstellung_film_id
|
||||
FOREIGN KEY (fk_Film_ID)
|
||||
REFERENCES Film (ID)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT,
|
||||
CONSTRAINT fk_vorstellung_saal_id
|
||||
FOREIGN KEY (fk_Saal_ID)
|
||||
REFERENCES Saal (ID)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Reservierung (
|
||||
ID INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
Vorname VARCHAR(255) NOT NULL,
|
||||
Nachname VARCHAR(255) NOT NULL,
|
||||
Mail VARCHAR(255) NOT NULL,
|
||||
fk_Vorstellung_ID INTEGER UNSIGNED NOT NULL,
|
||||
INDEX i_reservierung_name (Vorname, Nachname),
|
||||
INDEX i_reservierung_name2 (Nachname),
|
||||
CONSTRAINT fk_reservierung_vorstellung_id
|
||||
FOREIGN KEY (fk_Vorstellung_ID)
|
||||
REFERENCES Vorstellung (ID)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT
|
||||
);
|
||||
|
||||
CREATE TABLE Reservierung_Log LIKE Reservierung;
|
||||
select
|
||||
concat('ALTER TABLE Reservierung_Log', GROUP_CONCAT(' MODIFY COLUMN ', c.COLUMN_NAME, ' ', c.COLUMN_TYPE)) as alter_statement INTO @prep_statement
|
||||
from information_schema.COLUMNS c
|
||||
where
|
||||
c.IS_NULLABLE = 'NO'
|
||||
and c.TABLE_SCHEMA = 'db_vorlesung'
|
||||
and c.TABLE_NAME = 'Reservierung_Log'
|
||||
group by c.TABLE_NAME;
|
||||
PREPARE query_nullable FROM @prep_statement;
|
||||
EXECUTE query_nullable;
|
||||
DEALLOCATE PREPARE query_nullable;
|
||||
|
||||
ALTER TABLE Reservierung_Log DROP PRIMARY KEY;
|
||||
ALTER TABLE Reservierung_Log ADD `LogID` INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY FIRST;
|
||||
ALTER TABLE Reservierung_Log ADD `VorheigeID` INTEGER UNSIGNED;
|
||||
ALTER TABLE Reservierung_Log ADD `Zeitstempel` TIMESTAMP DEFAULT CURRENT_TIMESTAMP() NOT NULL;
|
||||
ALTER TABLE Reservierung_Log ADD `is_Erfolgreich` BIT NOT NULL;
|
||||
ALTER TABLE Reservierung_Log ADD `Methode` ENUM ('insert', 'update', 'delete') NOT NULL;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS nm_Film_Schauspieler (
|
||||
fk_Film_ID INTEGER UNSIGNED NOT NULL,
|
||||
fk_Schauspieler_ID INTEGER UNSIGNED NOT NULL,
|
||||
PRIMARY KEY (fk_Film_ID, fk_Schauspieler_ID),
|
||||
CONSTRAINT fk_nm_film_schauspieler_film_id
|
||||
FOREIGN KEY (fk_Film_ID)
|
||||
REFERENCES Film (ID)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE,
|
||||
CONSTRAINT fk_nm_film_schauspieler_schauspieler_id
|
||||
FOREIGN KEY (fk_Schauspieler_ID)
|
||||
REFERENCES Schauspieler (ID)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS nm_Reservierung_Sitzplatz (
|
||||
fk_Reservierung_ID INTEGER UNSIGNED NOT NULL,
|
||||
fk_Sitzplatz_ID INTEGER UNSIGNED NOT NULL,
|
||||
PRIMARY KEY pk_nm_reservierung_sitzplatz_reservierung (fk_Reservierung_ID, fk_Sitzplatz_ID),
|
||||
CONSTRAINT fk_nm_reservierung_sitzplatz_reservierung_id
|
||||
FOREIGN KEY (fk_Reservierung_ID)
|
||||
REFERENCES Reservierung (ID)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE,
|
||||
CONSTRAINT fk_nm_reservierung_sitzplatz_sitzplatz_id
|
||||
FOREIGN KEY (fk_Sitzplatz_ID)
|
||||
REFERENCES Sitzplatz (ID)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user