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 Support ( CREATE TABLE Question(
id_support SERIAL PRIMARY KEY, id_question SERIAL PRIMARY KEY,
title varchar(99) NOT NULL, texte text NOT NULL UNIQUE,
form varchar(30) NOT NULL, answerA varchar(30) NOT NULL,
release numeric NOT NULL, answerB varchar(30) NOT NULL,
CONSTRAINT type_form CHECK (form IN ('movie', 'video-game', 'novel', 'anime', 'tv')) 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 ( CREATE TABLE Quiz(
id_quote SERIAL PRIMARY KEY, id_quiz SERIAL PRIMARY KEY,
content text NOT NULL UNIQUE, levelQ numeric NOT NULL,
img_path varchar(50) NOT NULL, timer numeric 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 Commentary ( CREATE TABLE Quiz_Question(
id_comment numeric PRIMARY KEY, quiz SERIAL NOT NULL,
comment text NOT NULL, question SERIAL NOT NULL,
user_c integer REFERENCES Users(id_user), PRIMARY KEY (quiz, question),
quote_c integer REFERENCES Quote(id_quote) CONSTRAINT fk_quiz FOREIGN KEY(quiz) REFERENCES Quiz(id_quiz),
CONSTRAINT fk_question FOREIGN KEY(question) REFERENCES Question(id_question)
); );
CREATE TABLE Favorite ( CREATE TABLE Record_quiz(
user_f integer REFERENCES Users(id_user), user SERIAL NOT NULL,
quote_f integer REFERENCES Quote(id_quote), quiz SERIAL NOT NULL,
CONSTRAINT pk_favorite PRIMARY KEY (user_f, quote_f) 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 ( CREATE TABLE Source(
id_quiz numeric PRIMARY KEY, id_source SERIAL PRIMARY KEY,
level numeric NOT NULL, title varchar(100) NOT NULL,
duration numeric NOT NULL dateS date NOT NULL
); );
CREATE TABLE Question ( CREATE TABLE Caracter(
id_question numeric PRIMARY KEY, id_caracter SERIAL PRIMARY KEY,
question varchar(99) NOT NULL, caracter varchar(100) NOT NULL,
answerA varchar(99) NOT NULL, img_path varchar(100) NOT NULL
answerB varchar(99) NOT NULL, );
answerC varchar(99) NOT NULL,
answerD varchar(99) NOT NULL, CREATE TABLE Quote(
cAnswer varchar(99) NOT NULL 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 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