379 lines
12 KiB
SQL
379 lines
12 KiB
SQL
-- ============================================================================
|
|
-- Base Name : FREE-BRICKS
|
|
-- SGBD Name : PostgreSQL
|
|
-- CREATION Date : 24/10/24
|
|
-- ============================================================================
|
|
|
|
-- ============================================================================
|
|
-- Tables
|
|
-- ============================================================================
|
|
|
|
CREATE TABLE acheter
|
|
(
|
|
id_membre INTEGER NOT NULL,
|
|
id_piece INTEGER NOT NULL,
|
|
quantite_acheter INTEGER ,
|
|
CONSTRAINT pk__acheter PRIMARY KEY (id_membre, id_piece)
|
|
);
|
|
|
|
CREATE TABLE avoir_motif
|
|
(
|
|
id_piece INTEGER ,
|
|
id_motif INTEGER ,
|
|
CONSTRAINT pk__avoir_motif PRIMARY KEY (id_piece, id_motif)
|
|
);
|
|
|
|
CREATE TABLE avoir_tag
|
|
(
|
|
id_tag INTEGER ,
|
|
id_boite INTEGER ,
|
|
CONSTRAINT pk__avoir_tag PRIMARY KEY (id_tag, id_boite)
|
|
);
|
|
|
|
CREATE TABLE boites
|
|
(
|
|
id_boite INTEGER NOT NULL,
|
|
titre_boite varchar(255) NOT NULL,
|
|
date_boite DATE ,
|
|
id_marque INTEGER ,
|
|
CONSTRAINT pk__boites PRIMARY KEY (id_boite)
|
|
);
|
|
|
|
CREATE TABLE colorer
|
|
(
|
|
id_piece INTEGER NOT NULL,
|
|
id_couleur INTEGER ,
|
|
CONSTRAINT pk__colorer PRIMARY KEY (id_piece, id_couleur)
|
|
);
|
|
|
|
CREATE TABLE construire
|
|
(
|
|
id_boite INTEGER ,
|
|
id_modele INTEGER ,
|
|
CONSTRAINT pk__construire PRIMARY KEY (id_boite, id_modele)
|
|
);
|
|
|
|
CREATE TABLE contenir
|
|
(
|
|
id_boite INTEGER ,
|
|
id_piece INTEGER ,
|
|
quantite_contenir INTEGER NOT NULL,
|
|
CONSTRAINT pk__contenir PRIMARY KEY (id_boite, id_piece)
|
|
);
|
|
|
|
CREATE TABLE couleurs
|
|
(
|
|
id_couleur INTEGER NOT NULL,
|
|
nom_couleur VARCHAR(255) ,
|
|
CONSTRAINT pk__couleurs PRIMARY KEY (id_couleur)
|
|
);
|
|
|
|
CREATE TABLE enregistrer
|
|
(
|
|
id_boite INTEGER ,
|
|
id_membre INTEGER ,
|
|
quantite_enregistrer INTEGER NOT NULL,
|
|
CONSTRAINT pk__enregistrer PRIMARY KEY (id_boite, id_membre)
|
|
);
|
|
|
|
CREATE TABLE etre
|
|
(
|
|
id_piece INTEGER NOT NULL,
|
|
id_marque INTEGER ,
|
|
CONSTRAINT pk__etre PRIMARY KEY (id_piece, id_marque)
|
|
);
|
|
|
|
CREATE TABLE etre_complexe
|
|
(
|
|
id_piece INTEGER NOT NULL,
|
|
id_piece_complexe INTEGER NOT NULL,
|
|
CONSTRAINT pk__etre_complexe PRIMARY KEY (id_piece, id_piece_complexe)
|
|
);
|
|
|
|
CREATE TABLE etre_forme
|
|
(
|
|
id_forme INTEGER NOT NULL,
|
|
id_piece INTEGER NOT NULL,
|
|
CONSTRAINT pk__etre_forme PRIMARY KEY (id_forme, id_piece)
|
|
);
|
|
|
|
CREATE TABLE fils
|
|
(
|
|
id_fil INTEGER NOT NULL,
|
|
id_modele INTEGER NOT NULL,
|
|
CONSTRAINT pk__fils PRIMARY KEY (id_fil)
|
|
);
|
|
|
|
CREATE TABLE illustrations
|
|
(
|
|
id_illustration INTEGER NOT NULL,
|
|
url_illustration VARCHAR(2048) ,
|
|
id_modele INTEGER NOT NULL,
|
|
CONSTRAINT pk__illustrations PRIMARY KEY (id_illustration)
|
|
);
|
|
|
|
CREATE TABLE marques
|
|
(
|
|
id_marque INTEGER NOT NULL,
|
|
nom_marque VARCHAR(255) ,
|
|
CONSTRAINT pk__marques PRIMARY KEY (id_marque)
|
|
);
|
|
|
|
CREATE TABLE membres
|
|
(
|
|
id_membre INTEGER NOT NULL,
|
|
nom_membre VARCHAR(255) NOT NULL,
|
|
CONSTRAINT pk__membres PRIMARY KEY (id_membre)
|
|
);
|
|
|
|
CREATE TABLE messages
|
|
(
|
|
id_message INTEGER NOT NULL,
|
|
contenu_message VARCHAR(255) ,
|
|
id_membre INTEGER NOT NULL,
|
|
id_fil INTEGER NOT NULL,
|
|
id_message_2 INTEGER NOT NULL,
|
|
CONSTRAINT pk__messages PRIMARY KEY (id_message)
|
|
);
|
|
|
|
CREATE TABLE modeles
|
|
(
|
|
id_modele INTEGER NOT NULL,
|
|
nom_modele VARCHAR(255) ,
|
|
url_notice_modele VARCHAR(2048) ,
|
|
id_membre INTEGER NOT NULL,
|
|
id_modele_etendu INTEGER NOT NULL,
|
|
CONSTRAINT pk__modeles PRIMARY KEY (id_modele)
|
|
);
|
|
|
|
CREATE TABLE necessiter
|
|
(
|
|
id_modele INTEGER ,
|
|
id_piece INTEGER NOT NULL,
|
|
quantite_necessiter INTEGER NOT NULL,
|
|
CONSTRAINT pk__necessiter PRIMARY KEY (id_modele, id_piece)
|
|
);
|
|
|
|
CREATE TABLE noter
|
|
(
|
|
id_modele INTEGER ,
|
|
id_membre INTEGER ,
|
|
note_noter VARCHAR(255) NOT NULL,
|
|
CONSTRAINT pk__noter PRIMARY KEY (id_modele, id_membre)
|
|
);
|
|
|
|
CREATE TABLE perdre
|
|
(
|
|
id_membre INTEGER ,
|
|
id_boite INTEGER ,
|
|
id_piece INTEGER NOT NULL,
|
|
quantite_perdre INTEGER NOT NULL,
|
|
CONSTRAINT pk__perdre PRIMARY KEY (id_membre, id_boite, id_piece)
|
|
);
|
|
|
|
CREATE TABLE tags
|
|
(
|
|
id_tag INTEGER NOT NULL,
|
|
nom_tag VARCHAR(255) ,
|
|
CONSTRAINT pk__tags PRIMARY KEY (id_tag)
|
|
);
|
|
|
|
CREATE TABLE varier
|
|
(
|
|
id_modele INTEGER ,
|
|
id_modele_etendu INTEGER ,
|
|
CONSTRAINT pk__varier PRIMARY KEY (id_modele, id_modele_etendu)
|
|
);
|
|
|
|
CREATE TABLE formes
|
|
(
|
|
id_forme INTEGER NOT NULL,
|
|
nom_forme VARCHAR(255) NOT NULL,
|
|
CONSTRAINT pk__formes PRIMARY KEY (id_forme)
|
|
);
|
|
|
|
|
|
CREATE TABLE motifs
|
|
(
|
|
id_motif INTEGER NOT NULL,
|
|
nom_motif VARCHAR(255) NOT NULL,
|
|
CONSTRAINT pk__motifs PRIMARY KEY (id_motif)
|
|
);
|
|
|
|
CREATE TABLE pieces
|
|
(
|
|
id_piece INTEGER NOT NULL,
|
|
CONSTRAINT pk__pieces PRIMARY KEY (id_piece)
|
|
);
|
|
|
|
CREATE TABLE pieces_complexes
|
|
(
|
|
id_piece_complexe INTEGER NOT NULL,
|
|
CONSTRAINT pk__pieces_complexes PRIMARY KEY (id_piece_complexe)
|
|
);
|
|
|
|
-- ============================================================================
|
|
-- Foreign Keys
|
|
-- ============================================================================
|
|
|
|
ALTER TABLE acheter
|
|
ADD CONSTRAINT fk1__acheter FOREIGN KEY (id_membre)
|
|
REFERENCES membres (id_membre);
|
|
|
|
ALTER TABLE acheter
|
|
ADD CONSTRAINT fk2__acheter FOREIGN KEY (id_piece)
|
|
REFERENCES pieces (id_piece);
|
|
|
|
ALTER TABLE avoir_motif
|
|
ADD CONSTRAINT fk1__avoir_motif FOREIGN KEY (id_piece)
|
|
REFERENCES pieces (id_piece);
|
|
|
|
ALTER TABLE avoir_motif
|
|
ADD CONSTRAINT fk2__avoir_motif FOREIGN KEY (id_motif)
|
|
REFERENCES motifs (id_motif);
|
|
|
|
ALTER TABLE avoir_tag
|
|
ADD CONSTRAINT fk1__avoir_tag FOREIGN KEY (id_tag)
|
|
REFERENCES tags (id_tag);
|
|
|
|
ALTER TABLE avoir_tag
|
|
ADD CONSTRAINT fk2__avoir_tag FOREIGN KEY (id_boite)
|
|
REFERENCES boites (id_boite);
|
|
|
|
ALTER TABLE boites
|
|
ADD CONSTRAINT fk1__boites FOREIGN KEY (id_marque)
|
|
REFERENCES marques (id_marque);
|
|
|
|
ALTER TABLE colorer
|
|
ADD CONSTRAINT fk1__colorer FOREIGN KEY (id_piece)
|
|
REFERENCES pieces (id_piece);
|
|
|
|
ALTER TABLE colorer
|
|
ADD CONSTRAINT fk2__colorer FOREIGN KEY (id_couleur)
|
|
REFERENCES couleurs (id_couleur);
|
|
|
|
ALTER TABLE construire
|
|
ADD CONSTRAINT fk1__construire FOREIGN KEY (id_boite)
|
|
REFERENCES boites (id_boite);
|
|
|
|
ALTER TABLE construire
|
|
ADD CONSTRAINT fk2__construire FOREIGN KEY (id_modele)
|
|
REFERENCES modeles (id_modele);
|
|
|
|
ALTER TABLE contenir
|
|
ADD CONSTRAINT fk1__contenir FOREIGN KEY (id_boite)
|
|
REFERENCES boites (id_boite);
|
|
|
|
ALTER TABLE contenir
|
|
ADD CONSTRAINT fk2__contenir FOREIGN KEY (id_piece)
|
|
REFERENCES pieces (id_piece);
|
|
|
|
ALTER TABLE enregistrer
|
|
ADD CONSTRAINT fk1__enregistrer FOREIGN KEY (id_boite)
|
|
REFERENCES boites (id_boite);
|
|
|
|
ALTER TABLE enregistrer
|
|
ADD CONSTRAINT fk2__enregistrer FOREIGN KEY (id_membre)
|
|
REFERENCES membres (id_membre);
|
|
|
|
ALTER TABLE etre
|
|
ADD CONSTRAINT fk1__etre FOREIGN KEY (id_piece)
|
|
REFERENCES pieces (id_piece);
|
|
|
|
ALTER TABLE etre
|
|
ADD CONSTRAINT fk2__etre FOREIGN KEY (id_marque)
|
|
REFERENCES marques (id_marque);
|
|
|
|
ALTER TABLE etre_complexe
|
|
ADD CONSTRAINT fk1__etre_complexe FOREIGN KEY (id_piece)
|
|
REFERENCES pieces (id_piece);
|
|
|
|
ALTER TABLE etre_complexe
|
|
ADD CONSTRAINT fk2__etre_complexe FOREIGN KEY (id_piece_complexe)
|
|
REFERENCES pieces_complexes (id_piece_complexe);
|
|
|
|
ALTER TABLE etre_forme
|
|
ADD CONSTRAINT fk1__etre_forme FOREIGN KEY (id_forme)
|
|
REFERENCES formes (id_forme);
|
|
|
|
ALTER TABLE etre_forme
|
|
ADD CONSTRAINT fk2__etre_forme FOREIGN KEY (id_piece)
|
|
REFERENCES pieces (id_piece);
|
|
|
|
ALTER TABLE fils
|
|
ADD CONSTRAINT fk1__fils FOREIGN KEY (id_modele)
|
|
REFERENCES modeles (id_modele);
|
|
|
|
ALTER TABLE illustrations
|
|
ADD CONSTRAINT fk1__illustrations FOREIGN KEY (id_modele)
|
|
REFERENCES modeles (id_modele);
|
|
|
|
ALTER TABLE messages
|
|
ADD CONSTRAINT fk1__messages FOREIGN KEY (id_membre)
|
|
REFERENCES membres (id_membre);
|
|
|
|
ALTER TABLE messages
|
|
ADD CONSTRAINT fk2__messages FOREIGN KEY (id_fil)
|
|
REFERENCES fils (id_fil);
|
|
|
|
ALTER TABLE messages
|
|
ADD CONSTRAINT fk3__messages FOREIGN KEY (id_message_2)
|
|
REFERENCES messages (id_message);
|
|
|
|
ALTER TABLE modeles
|
|
ADD CONSTRAINT fk1__modeles FOREIGN KEY (id_membre)
|
|
REFERENCES membres (id_membre);
|
|
|
|
ALTER TABLE modeles
|
|
ADD CONSTRAINT fk2__modeles FOREIGN KEY (id_modele_etendu)
|
|
REFERENCES modeles (id_modele);
|
|
|
|
ALTER TABLE necessiter
|
|
ADD CONSTRAINT fk1__necessiter FOREIGN KEY (id_modele)
|
|
REFERENCES modeles (id_modele);
|
|
|
|
ALTER TABLE necessiter
|
|
ADD CONSTRAINT fk2__necessiter FOREIGN KEY (id_piece)
|
|
REFERENCES pieces (id_piece);
|
|
|
|
ALTER TABLE noter
|
|
ADD CONSTRAINT fk1__noter FOREIGN KEY (id_modele)
|
|
REFERENCES modeles (id_modele);
|
|
|
|
ALTER TABLE noter
|
|
ADD CONSTRAINT fk2__noter FOREIGN KEY (id_membre)
|
|
REFERENCES membres (id_membre);
|
|
|
|
ALTER TABLE perdre
|
|
ADD CONSTRAINT fk1__perdre FOREIGN KEY (id_membre)
|
|
REFERENCES membres (id_membre);
|
|
|
|
ALTER TABLE perdre
|
|
ADD CONSTRAINT fk2__perdre FOREIGN KEY (id_boite)
|
|
REFERENCES boites (id_boite);
|
|
|
|
ALTER TABLE perdre
|
|
ADD CONSTRAINT fk3__perdre FOREIGN KEY (id_piece)
|
|
REFERENCES pieces (id_piece);
|
|
|
|
ALTER TABLE varier
|
|
ADD CONSTRAINT fk1__varier FOREIGN KEY (id_modele)
|
|
REFERENCES modeles (id_modele);
|
|
|
|
ALTER TABLE varier
|
|
ADD CONSTRAINT fk2__varier FOREIGN KEY (id_modele_etendu)
|
|
REFERENCES modeles (id_modele);
|
|
|
|
-- ============================================================================
|
|
-- Indexes
|
|
-- ============================================================================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- ============================================================================
|
|
|