DROP TABLE IF EXISTS kurs_user; DROP TABLE IF EXISTS bewertungen; DROP TABLE IF EXISTS kurs; DROP TABLE IF EXISTS ort; DROP TABLE IF EXISTS `user`; -- Tabelle: user CREATE TABLE `user`( id VARCHAR(36) NOT NULL UNIQUE, vorname VARCHAR(50) NOT NULL, `name` VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE, passwort VARCHAR(255) NOT NULL, salt VARCHAR(255) NOT NULL, role ENUM('user', 'leiter') NOT NULL ); -- Tabelle: ort CREATE TABLE ort( id VARCHAR(36) NOT NULL UNIQUE, stadt VARCHAR(100) NOT NULL, plz VARCHAR(10) NOT NULL, strasse VARCHAR(100) NOT NULL ); -- Tabelle: kurs CREATE TABLE kurs( id VARCHAR(36) NOT NULL UNIQUE, `name` VARCHAR(100) NOT NULL, kategorie VARCHAR(100), preis DECIMAL(10, 2) NOT NULL, kurseleiter VARCHAR(36) NOT NULL, ort_id VARCHAR(36) NOT NULL, rabatt DECIMAL(5, 2) DEFAULT 0, dauer INT NOT NULL, beschreibung TEXT, FOREIGN KEY(kurseleiter) REFERENCES `user`(id), FOREIGN KEY(ort_id) REFERENCES ort(id) ); -- Tabelle: kurs_user (Viele-zu-Viele-Verknüpfung) CREATE TABLE kurs_user( user_id VARCHAR(36) NOT NULL, kurs_id VARCHAR(36) NOT NULL, PRIMARY KEY(user_id, kurs_id), FOREIGN KEY(user_id) REFERENCES `user`(id), FOREIGN KEY(kurs_id) REFERENCES kurs(id) ); -- Tabelle: bewertungen CREATE TABLE bewertungen( id VARCHAR(36) NOT NULL UNIQUE, kurs_id VARCHAR(36) NOT NULL, user_id VARCHAR(36) NOT NULL, note INT CHECK (note BETWEEN 1 AND 5), kommentar TEXT, FOREIGN KEY(kurs_id) REFERENCES kurs(id), FOREIGN KEY(user_id) REFERENCES `user`(id) );