From e405f320385cfbd8634bd280a10e9d1042e4d360 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me> Date: Wed, 17 May 2023 22:26:41 +0200 Subject: [PATCH] Add database structure --- .../docker-entrypoint-initdb.d/1-Dojo.sql | 180 ++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 Database/docker-entrypoint-initdb.d/1-Dojo.sql diff --git a/Database/docker-entrypoint-initdb.d/1-Dojo.sql b/Database/docker-entrypoint-initdb.d/1-Dojo.sql new file mode 100644 index 0000000..5004ed7 --- /dev/null +++ b/Database/docker-entrypoint-initdb.d/1-Dojo.sql @@ -0,0 +1,180 @@ +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + +-- +-- Base de données : `Dojo` +-- +CREATE DATABASE IF NOT EXISTS `Dojo` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; +USE `Dojo`; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `Enonce` +-- + +CREATE TABLE `Enonce` ( + `enonceID` int(11) NOT NULL, + `enonceName` varchar(64) NOT NULL, + `enonceGitLink` text NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `EnonceStaff` +-- + +CREATE TABLE `EnonceStaff` ( + `enonceID` int(11) NOT NULL, + `userID` int(11) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `Exercice` +-- + +CREATE TABLE `Exercice` ( + `exerciceID` int(11) NOT NULL, + `exerciceEnonceID` int(11) NOT NULL, + `exerciceProjectKey` varchar(36) NOT NULL, + `exerciceGitLink` text NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `ExerciceMembers` +-- + +CREATE TABLE `ExerciceMembers` ( + `exerciceID` int(11) NOT NULL, + `userID` int(11) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `Results` +-- + +CREATE TABLE `Results` ( + `resultTimestamp` bigint(20) NOT NULL, + `resultExerciceID` int(11) NOT NULL, + `resultPass` tinyint(1) NOT NULL, + `resultDetails` text NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `Users` +-- + +CREATE TABLE `Users` ( + `userID` int(11) NOT NULL, + `userFirstname` varchar(32) NOT NULL, + `userLastname` varchar(32) NOT NULL, + `userMail` varchar(32) NOT NULL, + `userRole` varchar(8) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- +-- Index pour les tables déchargées +-- + +-- +-- Index pour la table `Enonce` +-- +ALTER TABLE `Enonce` + ADD PRIMARY KEY (`enonceID`); + +-- +-- Index pour la table `EnonceStaff` +-- +ALTER TABLE `EnonceStaff` + ADD PRIMARY KEY (`enonceID`,`userID`), + ADD KEY `userID` (`userID`); + +-- +-- Index pour la table `Exercice` +-- +ALTER TABLE `Exercice` + ADD PRIMARY KEY (`exerciceID`), + ADD KEY `exerciceEnonceID` (`exerciceEnonceID`); + +-- +-- Index pour la table `ExerciceMembers` +-- +ALTER TABLE `ExerciceMembers` + ADD PRIMARY KEY (`exerciceID`,`userID`), + ADD KEY `userID` (`userID`); + +-- +-- Index pour la table `Results` +-- +ALTER TABLE `Results` + ADD PRIMARY KEY (`resultTimestamp`,`resultExerciceID`), + ADD KEY `resultExerciceID` (`resultExerciceID`); + +-- +-- Index pour la table `Users` +-- +ALTER TABLE `Users` + ADD PRIMARY KEY (`userID`); + +-- +-- AUTO_INCREMENT pour les tables déchargées +-- + +-- +-- AUTO_INCREMENT pour la table `Enonce` +-- +ALTER TABLE `Enonce` + MODIFY `enonceID` int(11) NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT pour la table `Exercice` +-- +ALTER TABLE `Exercice` + MODIFY `exerciceID` int(11) NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT pour la table `Users` +-- +ALTER TABLE `Users` + MODIFY `userID` int(11) NOT NULL AUTO_INCREMENT; + +-- +-- Contraintes pour les tables déchargées +-- + +-- +-- Contraintes pour la table `EnonceStaff` +-- +ALTER TABLE `EnonceStaff` + ADD CONSTRAINT `EnonceStaff_ibfk_1` FOREIGN KEY (`enonceID`) REFERENCES `Enonce` (`enonceID`), + ADD CONSTRAINT `EnonceStaff_ibfk_2` FOREIGN KEY (`userID`) REFERENCES `Users` (`userID`); + +-- +-- Contraintes pour la table `Exercice` +-- +ALTER TABLE `Exercice` + ADD CONSTRAINT `Exercice_ibfk_1` FOREIGN KEY (`exerciceEnonceID`) REFERENCES `Enonce` (`enonceID`); + +-- +-- Contraintes pour la table `ExerciceMembers` +-- +ALTER TABLE `ExerciceMembers` + ADD CONSTRAINT `ExerciceMembers_ibfk_1` FOREIGN KEY (`exerciceID`) REFERENCES `Exercice` (`exerciceID`), + ADD CONSTRAINT `ExerciceMembers_ibfk_2` FOREIGN KEY (`userID`) REFERENCES `Users` (`userID`); + +-- +-- Contraintes pour la table `Results` +-- +ALTER TABLE `Results` + ADD CONSTRAINT `Results_ibfk_1` FOREIGN KEY (`resultExerciceID`) REFERENCES `Exercice` (`exerciceID`); +COMMIT; -- GitLab