kurs-app/db.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)
);