DROP TABLE if exists Planification;
DROP TABLE if exists Operation;
DROP TABLE if exists Echeancier;
DROP TABLE if exists Compte;
DROP TABLE if exists InscrBanque;
DROP TABLE if exists Banque;
DROP TABLE if exists DeviseInscrit;
DROP TABLE if exists Inscrit;
DROP TABLE if exists Devise;


CREATE TABLE Devise
(
    id char(3) PRIMARY KEY,
    nom varchar(20)
);

CREATE TABLE Inscrit
(
    id MEDIUMINT  PRIMARY KEY AUTO_INCREMENT,
    nom varchar(40),
    prenom varchar(40),
    mail varchar(40) UNIQUE,
    mdp varchar(200)
);

CREATE TABLE DeviseInscrit
(
    devise char(3),
    idInscrit MEDIUMINT UNIQUE,
    PRIMARY KEY(devise,idInscrit),
    FOREIGN KEY (devise) REFERENCES Devise(id),
    FOREIGN KEY (idInscrit) REFERENCES Inscrit(id)
);

CREATE TABLE Banque
(
    nom varchar(40) PRIMARY KEY,
    urlsite varchar(60),
    urllogo longblob
);

CREATE TABLE InscrBanque
(
    id MEDIUMINT PRIMARY KEY AUTO_INCREMENT,
    nomBanque varchar(40),
    idInscrit MEDIUMINT,
    UNIQUE(nomBanque,idInscrit),
    FOREIGN KEY (nomBanque) REFERENCES Banque(nom),
    FOREIGN KEY (idInscrit) REFERENCES Inscrit(id)
);

CREATE TABLE Compte
(
    id MEDIUMINT PRIMARY KEY AUTO_INCREMENT,
    nom varchar(40),
    idInscritBanque MEDIUMINT,
    FOREIGN KEY (idInscritBanque) REFERENCES InscrBanque(id),
    UNIQUE(idInscritBanque,nom)
);

CREATE TABLE Echeancier
(
    id MEDIUMINT PRIMARY KEY AUTO_INCREMENT,
    compte MEDIUMINT,
    nom varchar(40),
    montant numeric,
    dateO date,
    methodePayement varchar(20),
    isDebit boolean,
    tag varchar(30),
    CONSTRAINT ck_methEch CHECK (methodePayement IN ('Cb','Esp','Chq','Vir','Pre', 'None')),
    CONSTRAINT ck_tagEch CHECK (tag IN ('Alimentaire','Carburant','Habitation','Energie','Telephonie','Loisir','Restauration','Divers','Transport','Transaction','Santé')),
    FOREIGN KEY(compte) REFERENCES Compte(id)
);

CREATE TABLE Operation
(
    id MEDIUMINT PRIMARY KEY AUTO_INCREMENT,
    compte MEDIUMINT,
    nom varchar(40),
    montant numeric,
    dateO date,
    methodePayement varchar(20),
    isDebit boolean,
    fromBanque boolean,
    tag varchar(30),
    CONSTRAINT ck_methOpe CHECK (methodePayement IN ('Cb','Esp','Chq','Vir','Pre', 'None')),
    CONSTRAINT ck_tagOpe CHECK (tag IN ('Alimentaire','Carburant','Habitation','Energie','Telephonie','Loisir','Restauration','Divers','Transport','Transaction','Santé')),
    FOREIGN KEY(compte) REFERENCES Compte(id)
);

CREATE TABLE Planification
(
    id MEDIUMINT PRIMARY KEY AUTO_INCREMENT,
    compte MEDIUMINT,
    nom varchar(40),
    montant numeric,
    dateO date,
    methodePayement varchar(20),
    isDebit boolean,
    tag varchar(30),
    CONSTRAINT ck_methPla CHECK (methodePayement IN ('Cb','Esp','Chq','Vir','Pre', 'None')),
    CONSTRAINT ck_tagPla CHECK (tag IN ('Alimentaire','Carburant','Habitation','Energie','Telephonie','Loisir','Restauration','Divers','Transport','Transaction','Santé')),
    FOREIGN KEY(compte) REFERENCES Compte(id)
);