DROP TABLE IF EXISTS projets CASCADE;
DROP TABLE IF EXISTS utilisateurs CASCADE;
DROP TABLE IF EXISTS entrepreneurs CASCADE;
DROP TABLE IF EXISTS administrateurs CASCADE;
DROP TABLE IF EXISTS sections CASCADE;
DROP TABLE IF EXISTS rendez_vous CASCADE;
DROP TABLE IF EXISTS comptes_rendus CASCADE;
DROP TABLE IF EXISTS concerner CASCADE;
DROP TABLE IF EXISTS formes CASCADE;

CREATE TABLE projets
(
id_projet       SERIAL    NOT NULL,
nom_projet      VARCHAR(255)      ,
logo            BYTEA             ,
date_creation   DATE              ,
status_projet   VARCHAR(255)      ,
CONSTRAINT pk_projet PRIMARY KEY (id_projet) );

CREATE TABLE utilisateurs
(
id_utilisateur      SERIAL    NOT NULL,
nom_utilisateur     VARCHAR(255)      ,
prenom_utilisateur  VARCHAR(255)      ,
mail_principal      VARCHAR(255)      ,
mail_secondaire     VARCHAR(255)      ,
numero_telephone    VARCHAR(15)       ,
CONSTRAINT pk_utilisateur PRIMARY KEY (id_utilisateur) );

CREATE TABLE entrepreneurs
(
id_entrepreneur SERIAL REFERENCES utilisateurs (id_utilisateur), 
ecole         VARCHAR(255)         ,
filiere       VARCHAR(255)         ,
status_snee   BOOLEAN              ,
CONSTRAINT pk_entrepreneur PRIMARY KEY (id_entrepreneur) );

CREATE TABLE administrateurs
( 
id_administrateur SERIAL REFERENCES utilisateurs (id_utilisateur), 
CONSTRAINT pk_administrateur PRIMARY KEY (id_administrateur) );

CREATE TABLE sections
(
id_section          SERIAL    NOT NULL,
titre               VARCHAR(255)      ,
contenu_section     TEXT              ,
date_modification   TIMESTAMP         ,
CONSTRAINT pk_section PRIMARY KEY (id_section) );

CREATE TABLE rendez_vous
(
id_rdv      SERIAL    NOT NULL,
date_rdv    DATE              ,
heure_rdv   TIME              ,
duree_rdv   TIME              ,
lieu_rdv    VARCHAR(255)      ,
sujet_rdv   TEXT              ,
CONSTRAINT pk_rdv PRIMARY KEY (id_rdv) );

CREATE TABLE comptes_rendus 
(
id_compte_rendu         SERIAL    NOT NULL,
contenu_compte_rendu    TEXT              ,
CONSTRAINT pk_compte_rendu PRIMARY KEY (id_compte_rendu) );

CREATE TABLE concerner
(
id_section SERIAL REFERENCES sections (id_section),
id_rdv SERIAL REFERENCES sections (id_rdv),
CONSTRAINT pk_concerner PRIMARY KEY (id_section, id_rdv)  ); 


ALTER TABLE projets
          ADD CONSTRAINT fk1_projet  FOREIGN KEY (id_administrateur)
          REFERENCES administrateurs (id_administrateur)
          ON DELETE CASCADE;

ALTER TABLE projets
    ADD CONSTRAINT fk2_projet FOREIGN KEY (id_entrepreneur_participation)
        REFERENCES entrepreneurs (id_entrepreneur)
        ON DELETE CASCADE;

ALTER TABLE entrepreneurs 
          ADD CONSTRAINT fk1_entrepreneur FOREIGN KEY (id_projet_propose)
          REFERENCES projets (id_projet)
          ON DELETE CASCADE;

ALTER TABLE sections 
          ADD CONSTRAINT fk1_section FOREIGN KEY (id_projet)
          REFERENCES projets (id_projet)
          ON DELETE CASCADE;

ALTER TABLE sections 
          ADD CONSTRAINT fk2_section FOREIGN KEY (id_administrateur)
          REFERENCES administrateurs (id_administrateur)
          ON DELETE CASCADE;

ALTER TABLE rendez-vous 
          ADD CONSTRAINT fk1_rdv FOREIGN KEY (id_entrepreneur)
          REFERENCES entrepreneurs (id_entrepreneur)
          ON DELETE CASCADE;

ALTER TABLE rendez-vous 
          ADD CONSTRAINT fk2_rdv FOREIGN KEY (id_administrateur)
          REFERENCES administrateurs (id_administrateur)
          ON DELETE CASCADE;

ALTER TABLE comptes-rendus 
          ADD CONSTRAINT fk1_compte_rendu FOREIGN KEY (id_rdv)
          REFERENCES rendez_vous (id_rdv)
          ON DELETE CASCADE;









