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;
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 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 (
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 Quiz(
id_quiz SERIAL PRIMARY KEY,
levelQ numeric NOT NULL,
timer numeric NOT NULL
);
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_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 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 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 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 Source(
id_source SERIAL PRIMARY KEY,
title varchar(100) NOT NULL,
dateS date NOT NULL
);
CREATE TABLE Quiz (
id_quiz numeric PRIMARY KEY,
level numeric NOT NULL,
duration numeric NOT NULL
CREATE TABLE Caracter(
id_caracter SERIAL PRIMARY KEY,
caracter varchar(100) NOT NULL,
img_path varchar(100) 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 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 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 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 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)
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)
);
Loading…
Cancel
Save