Refonte du script sql des tables

master
Leni BEAULATON 6 months ago
parent 38b9017962
commit 1e88fbc0a8

@ -1,85 +1,120 @@
DROP TABLE IF EXISTS Users CASCADE; -- Suppression des tables
DROP TABLE IF EXISTS Support CASCADE; DROP TABLE IF EXISTS Commentary;
DROP TABLE IF EXISTS Quote CASCADE; DROP TABLE IF EXISTS Favorite;
DROP TABLE IF EXISTS Commentary CASCADE; DROP TABLE IF EXISTS Quote;
DROP TABLE IF EXISTS Favorite CASCADE; DROP TABLE IF EXISTS Caracter;
DROP TABLE IF EXISTS Quiz CASCADE; DROP TABLE IF EXISTS Source;
DROP TABLE IF EXISTS Question CASCADE; DROP TABLE IF EXISTS Record_quiz;
DROP TABLE IF EXISTS QuizQuestions CASCADE; DROP TABLE IF EXISTS Quiz_Question;
DROP TABLE IF EXISTS Results CASCADE; 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, id_user SERIAL PRIMARY KEY,
username varchar(50) NOT NULL, username varchar(50) NOT NULL,
email 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, creation date NOT NULL,
is_admin boolean NOT NULL, CONSTRAINT unique_col UNIQUE (email),
CONSTRAINT unique_col UNIQUE (username, 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 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 Support ( CREATE TABLE Quiz(
id_support SERIAL PRIMARY KEY, id_quiz SERIAL PRIMARY KEY,
title varchar(99) NOT NULL, levelQ numeric NOT NULL,
form varchar(30) NOT NULL, timer numeric NOT NULL
release numeric NOT NULL,
CONSTRAINT type_form CHECK (form IN ('movie', 'video-game', 'novel', 'anime', 'tv'))
); );
CREATE TABLE Quote ( CREATE TABLE Quiz_Question(
id_quote SERIAL PRIMARY KEY, quiz SERIAL NOT NULL,
content text NOT NULL UNIQUE, question SERIAL NOT NULL,
img_path varchar(50) NOT NULL, PRIMARY KEY (quiz, question),
likes numeric NOT NULL DEFAULT 0, CONSTRAINT fk_quiz FOREIGN KEY(quiz) REFERENCES Quiz(id_quiz),
time_code varchar(10) NOT NULL, CONSTRAINT fk_question FOREIGN KEY(question) REFERENCES Question(id_question)
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 Commentary ( CREATE TABLE Record_quiz(
id_comment numeric PRIMARY KEY, user SERIAL NOT NULL,
comment text NOT NULL, quiz SERIAL NOT NULL,
user_c integer REFERENCES Users(id_user), nbPoint numeric DEFAULT '0',
quote_c integer REFERENCES Quote(id_quote) 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 Favorite ( CREATE TABLE Source(
user_f integer REFERENCES Users(id_user), id_source SERIAL PRIMARY KEY,
quote_f integer REFERENCES Quote(id_quote), title varchar(100) NOT NULL,
CONSTRAINT pk_favorite PRIMARY KEY (user_f, quote_f) dateS date NOT NULL
); );
CREATE TABLE Quiz ( CREATE TABLE Caracter(
id_quiz numeric PRIMARY KEY, id_caracter SERIAL PRIMARY KEY,
level numeric NOT NULL, caracter varchar(100) NOT NULL,
duration numeric NOT NULL img_path varchar(100) NOT NULL
); );
CREATE TABLE Question ( CREATE TABLE Quote(
id_question numeric PRIMARY KEY, id_quote SERIAL PRIMARY KEY,
question varchar(99) NOT NULL, content text NOT NULL,
answerA varchar(99) NOT NULL, likes numeric DEFAULT '0',
answerB varchar(99) NOT NULL, langue char(2) NOT NULL,
answerC varchar(99) NOT NULL, isValide boolean NOT NULL DEFAULT 'false',
answerD varchar(99) NOT NULL, reason varchar(100) NOT NULL,
cAnswer varchar(99) 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 QuizQuestions ( CREATE TABLE Favorite(
quiz_qq numeric REFERENCES Quiz(id_quiz), user SERIAL NOT NULL,
question_qq numeric REFERENCES Question(id_question), quote SERIAL NOT NULL,
CONSTRAINT pk_qq PRIMARY KEY (quiz_qq, question_qq) 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 Results ( CREATE TABLE Commentary(
score numeric NOT NULL, id_comment SERIAL PRIMARY KEY,
p_played numeric NOT NULL, quote SERIAL NOT NULL,
user_r integer REFERENCES Users(id_user), user SERIAL NOT NULL,
quiz_r integer REFERENCES Quiz(id_quiz), dateC date NOT NULL,
CONSTRAINT pk_results PRIMARY KEY(user_r, quiz_r) comment text NOT NULL,
CONSTRAINT fk_quote FOREIGN KEY(quote) REFERENCES Quote(id_quote),
CONSTRAINT fk_user FOREIGN KEY(user) REFERENCES User(id_user)
); );
Loading…
Cancel
Save