67 lines
1.6 KiB
SQL
67 lines
1.6 KiB
SQL
DROP TABLE IF EXISTS bloc;
|
|
DROP TABLE IF EXISTS page;
|
|
DROP TABLE IF EXISTS messages;
|
|
DROP TABLE IF EXISTS utilisateur;
|
|
|
|
CREATE TABLE utilisateur (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
login VARCHAR(100) NOT NULL,
|
|
mot_de_passe VARCHAR(255) NOT NULL,
|
|
privilege ENUM('ADMIN', 'USER', 'GUEST') NOT NULL
|
|
);
|
|
|
|
CREATE TABLE page (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
titre VARCHAR(200) NOT NULL,
|
|
date_creation DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
date_modification DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
auteur_id INT NOT NULL,
|
|
droits ENUM('LECTURE', 'ECRITURE', 'ADMIN') NOT NULL,
|
|
FOREIGN KEY (auteur_id) REFERENCES utilisateur(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE bloc (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
type ENUM('TEXTE', 'LISTE', 'TITRE', 'CODE', 'PAGE') NOT NULL,
|
|
contenu TEXT,
|
|
date_creation DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
date_modification DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
page_id INT NOT NULL,
|
|
ordre INT NOT NULL,
|
|
auteur_id INT NOT NULL,
|
|
metadata JSON,
|
|
FOREIGN KEY (page_id) REFERENCES page(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (auteur_id) REFERENCES utilisateur(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE messages (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
login VARCHAR(100) NOT NULL,
|
|
contenu TEXT,
|
|
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
DELIMITER //
|
|
|
|
CREATE TRIGGER trg_bloc_maj
|
|
BEFORE UPDATE ON bloc
|
|
FOR EACH ROW
|
|
BEGIN
|
|
SET NEW.date_modification = NOW();
|
|
END;
|
|
//
|
|
|
|
DELIMITER ;
|
|
|
|
DELIMITER //
|
|
|
|
CREATE TRIGGER trg_page_maj
|
|
BEFORE UPDATE ON page
|
|
FOR EACH ROW
|
|
BEGIN
|
|
SET NEW.date_modification = NOW();
|
|
END;
|
|
//
|
|
|
|
DELIMITER ;
|