diff --git a/script.SQL b/script.SQL index e36c7ff..60c62a9 100644 --- a/script.SQL +++ b/script.SQL @@ -1,85 +1,120 @@ -DROP TABLE IF EXISTS Users CASCADE; -DROP TABLE IF EXISTS Support CASCADE; -DROP TABLE IF EXISTS Quote CASCADE; -DROP TABLE IF EXISTS Commentary CASCADE; -DROP TABLE IF EXISTS Favorite CASCADE; -DROP TABLE IF EXISTS Quiz CASCADE; -DROP TABLE IF EXISTS Question CASCADE; -DROP TABLE IF EXISTS QuizQuestions CASCADE; -DROP TABLE IF EXISTS Results CASCADE; +-- Suppression des tables +DROP TABLE IF EXISTS Commentary; +DROP TABLE IF EXISTS Favorite; +DROP TABLE IF EXISTS Quote; +DROP TABLE IF EXISTS Caracter; +DROP TABLE IF EXISTS Source; +DROP TABLE IF EXISTS Record_quiz; +DROP TABLE IF EXISTS Quiz_Question; +DROP TABLE IF EXISTS Quiz; +DROP TABLE IF EXISTS Question; +DROP TABLE IF EXISTS Admin; +DROP TABLE IF EXISTS User; +DROP TABLE IF EXISTS Image; -CREATE TABLE Users ( +-- Création des tables + +CREATE TABLE Image( + id_img SERIAL PRIMARY KEY, + imgPath varchar(100) NOT NULL UNIQUE +); + +CREATE TABLE User( id_user SERIAL PRIMARY KEY, username varchar(50) NOT NULL, email varchar(50) NOT NULL, - pssword varchar(99) NOT NULL, + pssword varchar(100) NOT NULL, + img SERIAL NOT NULL, creation date NOT NULL, - is_admin boolean NOT NULL, - CONSTRAINT unique_col UNIQUE (username, email) + CONSTRAINT unique_col UNIQUE (email), + CONSTRAINT fk_img FOREIGN KEY(img) REFERENCES Image(id_img) ); +CREATE TABLE Admin( + user SERIAL PRIMARY KEY, + CONSTRAINT fk_user FOREIGN KEY(user) REFERENCES User(id_user) +); -CREATE TABLE Support ( - id_support SERIAL PRIMARY KEY, - title varchar(99) NOT NULL, - form varchar(30) NOT NULL, - release numeric NOT NULL, - CONSTRAINT type_form CHECK (form IN ('movie', 'video-game', 'novel', 'anime', 'tv')) +CREATE TABLE Question( + id_question SERIAL PRIMARY KEY, + texte text NOT NULL UNIQUE, + answerA varchar(30) NOT NULL, + answerB varchar(30) NOT NULL, + answerC varchar(30) NOT NULL, + answerD varchar(30) NOT NULL, + cAnswer varchar(30) NOT NULL, + CONSTRAINT check_cAnswer CHECK (cAnswer = answerA OR cAnswer = answerB OR cAnswer = answerC OR cAnswer = answerD) ); -CREATE TABLE Quote ( - id_quote SERIAL PRIMARY KEY, - content text NOT NULL UNIQUE, - img_path varchar(50) NOT NULL, - likes numeric NOT NULL DEFAULT 0, - time_code varchar(10) NOT NULL, - langue varchar(50) NOT NULL, - is_valid boolean NOT NULL DEFAULT true, - reason text, - user_q integer REFERENCES Users(id_user), - support integer REFERENCES Support(id_support), - CONSTRAINT reason_txt CHECK (is_valid OR reason IS NOT NULL) +CREATE TABLE Quiz( + id_quiz SERIAL PRIMARY KEY, + levelQ numeric NOT NULL, + timer numeric NOT NULL ); -CREATE TABLE Commentary ( - id_comment numeric PRIMARY KEY, - comment text NOT NULL, - user_c integer REFERENCES Users(id_user), - quote_c integer REFERENCES Quote(id_quote) +CREATE TABLE Quiz_Question( + quiz SERIAL NOT NULL, + question SERIAL NOT NULL, + PRIMARY KEY (quiz, question), + CONSTRAINT fk_quiz FOREIGN KEY(quiz) REFERENCES Quiz(id_quiz), + CONSTRAINT fk_question FOREIGN KEY(question) REFERENCES Question(id_question) ); -CREATE TABLE Favorite ( - user_f integer REFERENCES Users(id_user), - quote_f integer REFERENCES Quote(id_quote), - CONSTRAINT pk_favorite PRIMARY KEY (user_f, quote_f) +CREATE TABLE Record_quiz( + user SERIAL NOT NULL, + quiz SERIAL NOT NULL, + nbPoint numeric DEFAULT '0', + timeQ numeric DEFAULT '0', + PRIMARY KEY (user, quiz), + CONSTRAINT fk_user FOREIGN KEY(user) REFERENCES User(id_user), + CONSTRAINT fk_quiz FOREIGN KEY(quiz) REFERENCES Quiz(id_quiz), + CONSTRAINT err_nbPoint CHECK(nbPoint >= 0), + CONSTRAINT err_timeQ CHECK(timeQ >= 0) ); -CREATE TABLE Quiz ( - id_quiz numeric PRIMARY KEY, - level numeric NOT NULL, - duration numeric NOT NULL +CREATE TABLE Source( + id_source SERIAL PRIMARY KEY, + title varchar(100) NOT NULL, + dateS date NOT NULL ); -CREATE TABLE Question ( - id_question numeric PRIMARY KEY, - question varchar(99) NOT NULL, - answerA varchar(99) NOT NULL, - answerB varchar(99) NOT NULL, - answerC varchar(99) NOT NULL, - answerD varchar(99) NOT NULL, - cAnswer varchar(99) NOT NULL +CREATE TABLE Caracter( + id_caracter SERIAL PRIMARY KEY, + caracter varchar(100) NOT NULL, + img_path varchar(100) NOT NULL ); -CREATE TABLE QuizQuestions ( - quiz_qq numeric REFERENCES Quiz(id_quiz), - question_qq numeric REFERENCES Question(id_question), - CONSTRAINT pk_qq PRIMARY KEY (quiz_qq, question_qq) +CREATE TABLE Quote( + id_quote SERIAL PRIMARY KEY, + content text NOT NULL, + likes numeric DEFAULT '0', + langue char(2) NOT NULL, + isValide boolean NOT NULL DEFAULT 'false', + reason varchar(100) NOT NULL, + id_caracter SERIAL NOT NULL, + id_source SERIAL NOT NULL, + id_user_verif SERIAL NOT NULL, + CONSTRAINT fk_caracter FOREIGN KEY(id_caracter) REFERENCES Caracter(id_caracter), + CONSTRAINT fk_source FOREIGN KEY(id_source) REFERENCES Source(id_source), + CONSTRAINT fk_userverif FOREIGN KEY(id_user_verif) REFERENCES User(id_user), + CONSTRAINT err_nbLike CHECK (likes >= 0), + CONSTRAINT err_language CHECK (langue = 'fr' OR langue = 'en') ); -CREATE TABLE Results ( - score numeric NOT NULL, - p_played numeric NOT NULL, - user_r integer REFERENCES Users(id_user), - quiz_r integer REFERENCES Quiz(id_quiz), - CONSTRAINT pk_results PRIMARY KEY(user_r, quiz_r) -); \ No newline at end of file +CREATE TABLE Favorite( + user SERIAL NOT NULL, + quote SERIAL NOT NULL, + PRIMARY KEY (user, quote), + CONSTRAINT fk_quote FOREIGN KEY(quote) REFERENCES Quote(id_quote), + CONSTRAINT fk_user FOREIGN KEY(user) REFERENCES User(id_user) +); + +CREATE TABLE Commentary( + id_comment SERIAL PRIMARY KEY, + quote SERIAL NOT NULL, + user SERIAL NOT NULL, + dateC date NOT NULL, + comment text NOT NULL, + CONSTRAINT fk_quote FOREIGN KEY(quote) REFERENCES Quote(id_quote), + CONSTRAINT fk_user FOREIGN KEY(user) REFERENCES User(id_user) +);