56 lines
1.6 KiB
SQL
56 lines
1.6 KiB
SQL
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) NOT NULL,
|
|
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)
|
|
); |