DROP TABLE Resultat;
DROP TABLE Lien_Personne_Groupe;
DROP TABLE Lien_Groupe_Probleme;
DROP TABLE Autorisation;
DROP TABLE Personne;
DROP TABLE Groupe;
DROP TABLE Role;
DROP TABLE Droit;
DROP TABLE Probleme;
DROP TABLE Methode;

CREATE TABLE Role(
id NUMBER CONSTRAINT pk_role PRIMARY KEY,
nom_role VARCHAR(30)
);

CREATE TABLE Personne(
id NUMBER CONSTRAINT pk_personne PRIMARY KEY,
login VARCHAR(30),
password VARCHAR(30),
id_role CONSTRAINT fk_personne1 REFERENCES Role(id)
);

CREATE TABLE Droit(
id NUMBER CONSTRAINT pk_droit PRIMARY KEY,
nom_droit VARCHAR(30)
);

CREATE TABLE Autorisation(
id_role CONSTRAINT fk_autorisation1 REFERENCES Role(id),
id_droit CONSTRAINT fk_autorisation2 REFERENCES Droit(id)
);

CREATE TABLE Groupe(
id NUMBER CONSTRAINT pk_groupe PRIMARY KEY,
nom_groupe VARCHAR(30),
id_responsable CONSTRAINT fk_groupe REFERENCES Personne(id)
);

CREATE TABLE Lien_Personne_Groupe(
id_personne CONSTRAINT fk_lienPG1 REFERENCES Personne(id),
id_Groupe CONSTRAINT fk_lienPG2 REFERENCES Groupe(id)
);

CREATE TABLE Probleme(
id NUMBER CONSTRAINT pk_probleme PRIMARY KEY,
arbre_xml VARCHAR(30),
fonction_objectif BLOB
);

CREATE TABLE Lien_Groupe_Probleme(
id_groupe CONSTRAINT fk_lienGP1 REFERENCES Groupe(id),
id_probleme CONSTRAINT fk_lienGP2 REFERENCES Probleme(id)
);

CREATE TABLE Methode(
id NUMBER CONSTRAINT pk_methode PRIMARY KEY,
nom_algo VARCHAR(30),
algorithme BLOB
);

CREATE TABLE Resultat(
id_probleme CONSTRAINT fk_resultat1 REFERENCES Probleme(id),
id_methode CONSTRAINT fk_resultat2 REFERENCES Methode(id),
valeur VARCHAR(30),
complexite_iteration VARCHAR(30),
erreur_relative VARCHAR(30),
erreur_absolue VARCHAR(30)
);