CREATE TABLE INDIVIDU(
IndividuId INT,
IndividuNom VARCHAR(32) NOT NULL,
CONSTRAINT INDIVIDU_PK PRIMARY KEY(IndividuId),
CONSTRAINT INDIVIDU_AK UNIQUE(IndividuNom)
);
CREATE TABLE RELATION(
RelationId INT,
RelationNom VARCHAR(24) NOT NULL,
CONSTRAINT RELATION_PK PRIMARY KEY(RelationId),
CONSTRAINT RELATION_AK UNIQUE(RelationNom)
);
CREATE TABLE PATTE(
PatteId INT,
PattteNom VARCHAR(32) NOT NULL,
CardMin INT NOT NULL,
CardMax INT NOT NULL,
IndividuId INT NOT NULL,
CONSTRAINT PATTE_PK PRIMARY KEY(PatteId),
CONSTRAINT PATTE_INDIVIDU_FK FOREIGN KEY(IndividuId) REFERENCES INDIVIDU(IndividuId)
);
CREATE TABLE CONTRAINTE_EXTENSION(
ContrainteId INT,
ContrainteNom VARCHAR(48) NOT NULL,
Type_Contrainte VARCHAR(2),
RelationId INT,
CONSTRAINT CONTRAINTE_EXTENSION_PK PRIMARY KEY(ContrainteId),
CONSTRAINT CONTRAINTE_EXTENSION_AK UNIQUE(ContrainteNom),
CONSTRAINT CONTRAINTE_EXTENSION_RELATION_FK FOREIGN KEY(RelationId) REFERENCES RELATION(RelationId)
);
CREATE TABLE de(
RelationId INT,
PatteId INT,
CONSTRAINT de_PK PRIMARY KEY(RelationId, PatteId),
CONSTRAINT de_RELATION_FK FOREIGN KEY(RelationId) REFERENCES RELATION(RelationId),
CONSTRAINT de_PATTE_FK FOREIGN KEY(PatteId) REFERENCES PATTE(PatteId)
);
CREATE TABLE Pivot_p_Extension(
PatteId INT,
ContrainteId INT,
CONSTRAINT Pivot_p_Extension_PK PRIMARY KEY(PatteId, ContrainteId),
CONSTRAINT Pivot_p_Extension_PATTE_FK FOREIGN KEY(PatteId) REFERENCES PATTE(PatteId),
CONSTRAINT Pivot_p_Extension_CONTRAINTE_EXTENSION_FK FOREIGN KEY(ContrainteId) REFERENCES CONTRAINTE_EXTENSION(ContrainteId)
);
CREATE TABLE Pivot_Extension(
IndividuId INT,
ContrainteId INT,
CONSTRAINT Pivot_Extension_PK PRIMARY KEY(IndividuId, ContrainteId),
CONSTRAINT Pivot_Extension_INDIVIDU_FK FOREIGN KEY(IndividuId) REFERENCES INDIVIDU(IndividuId),
CONSTRAINT Pivot_Extension_CONTRAINTE_EXTENSION_FK FOREIGN KEY(ContrainteId) REFERENCES CONTRAINTE_EXTENSION(ContrainteId)
);
CREATE TABLE Portee_p_Extension(
PatteId INT,
ContrainteId INT,
CONSTRAINT Portee_p_Extension_PK PRIMARY KEY(PatteId, ContrainteId),
CONSTRAINT Portee_p_Extension_PATTE_FK FOREIGN KEY(PatteId) REFERENCES PATTE(PatteId),
CONSTRAINT Portee_p_Extension_CONTRAINTE_EXTENSION_FK FOREIGN KEY(ContrainteId) REFERENCES CONTRAINTE_EXTENSION(ContrainteId)
);
CREATE TABLE Portee_r_extension(
RelationId INT,
ContrainteId INT,
CONSTRAINT Portee_r_extension_PK PRIMARY KEY(RelationId, ContrainteId),
CONSTRAINT Portee_r_extension_RELATION_FK FOREIGN KEY(RelationId) REFERENCES RELATION(RelationId),
CONSTRAINT Portee_r_extension_CONTRAINTE_EXTENSION_FK FOREIGN KEY(ContrainteId) REFERENCES CONTRAINTE_EXTENSION(ContrainteId)
);
CONSTRAINT Portee_p_Extension_PK PRIMARY KEY(PatteId, ContrainteId),
CONSTRAINT Portee_p_Extension_PATTE_FK FOREIGN KEY(PatteId) REFERENCES PATTE(PatteId),
CONSTRAINT Portee_p_Extension_CONTRAINTE_EXTENSION_FK FOREIGN KEY(ContrainteId) REFERENCES CONTRAINTE_EXTENSION(ContrainteId)
);
CREATE TABLE Portee_r_extension(
RelationId INT,
ContrainteId INT,
CONSTRAINT Portee_r_extension_PK PRIMARY KEY(RelationId, ContrainteId),
CONSTRAINT Portee_r_extension_RELATION_FK FOREIGN KEY(RelationId) REFERENCES RELATION(RelationId),
CONSTRAINT Portee_r_extension_CONTRAINTE_EXTENSION_FK FOREIGN KEY(ContrainteId) REFERENCES CONTRAINTE_EXTENSION(ContrainteId)
);
CREATE TABLE INDIVIDU(
IndividuId INT,
IndividuNom VARCHAR(32) NOT NULL,
CONSTRAINT INDIVIDU_PK PRIMARY KEY(IndividuId),
CONSTRAINT INDIVIDU_AK UNIQUE(IndividuNom)
);
CREATE TABLE RELATION(
RelationId INT,
RelationNom VARCHAR(24) NOT NULL,
Definitive SMALLINT NOT NULL,
CONSTRAINT RELATION_PK PRIMARY KEY(RelationId),
CONSTRAINT RELATION_AK UNIQUE(RelationNom)
);
CREATE TABLE PATTE(
PatteId INT,
PattteNom VARCHAR(32) NOT NULL,
CardMin INT NOT NULL,
CardMax INT NOT NULL,
Verouiilage SMALLINT NOT NULL,
IndividuId INT NOT NULL,
CONSTRAINT PATTE_PK PRIMARY KEY(PatteId),
CONSTRAINT PATTE_INDIVIDU_FK FOREIGN KEY(IndividuId) REFERENCES INDIVIDU(IndividuId)
);
CREATE TABLE CONTRAINTE_UNICITE(
ContrainteId INT,
ContrainteNom VARCHAR(48) NOT NULL,
IndividuId INT NOT NULL,
CONSTRAINT CONTRAINTE_UNICITE_PK PRIMARY KEY(ContrainteId),
CONSTRAINT CONTRAINTE_UNICITE_AK UNIQUE(ContrainteNom),
CONSTRAINT CONTRAINTE_UNICITE_INDIVIDU_FK FOREIGN KEY(IndividuId) REFERENCES INDIVIDU(IndividuId)
);
CREATE TABLE de(
RelationId INT,
PatteId INT,
CONSTRAINT de_PK PRIMARY KEY(RelationId, PatteId),
CONSTRAINT de_RELATION_FK FOREIGN KEY(RelationId) REFERENCES RELATION(RelationId),
CONSTRAINT de_PATTE_FK FOREIGN KEY(PatteId) REFERENCES PATTE(PatteId)
);
CREATE TABLE Cible_via_Patte(
PatteId INT,
ContrainteId INT,
CONSTRAINT Cible_via_Patte_PK PRIMARY KEY(PatteId, ContrainteId),
CONSTRAINT Cible_via_Patte_PATTE_FK FOREIGN KEY(PatteId) REFERENCES PATTE(PatteId),
CONSTRAINT Cible_via_Patte_CONTRAINTE_UNICITE_FK FOREIGN KEY(ContrainteId) REFERENCES CONTRAINTE_UNICITE(ContrainteId)
);
CREATE TABLE Source_1_Unicite(
IndividuId INT,
ContrainteId INT,
CONSTRAINT Source_1_Unicite_PK PRIMARY KEY(IndividuId, ContrainteId),
CONSTRAINT Source_1_Unicite_INDIVIDU_FK FOREIGN KEY(IndividuId) REFERENCES INDIVIDU(IndividuId),
CONSTRAINT Source_1_Unicite_CONTRAINTE_UNICITE_FK FOREIGN KEY(ContrainteId) REFERENCES CONTRAINTE_UNICITE(ContrainteId)
);
CREATE TABLE Pivot_Unicite(
IndividuId INT,
ContrainteId INT,
CONSTRAINT Pivot_Unicite_PK PRIMARY KEY(IndividuId, ContrainteId),
CONSTRAINT Pivot_Unicite_INDIVIDU_FK FOREIGN KEY(IndividuId) REFERENCES INDIVIDU(IndividuId),
CONSTRAINT Pivot_Unicite_CONTRAINTE_UNICITE_FK FOREIGN KEY(ContrainteId) REFERENCES CONTRAINTE_UNICITE(ContrainteId)
);
CREATE TABLE Source_p_Unicite_1(
PatteId INT,
ContrainteId INT,
CONSTRAINT Source_p_Unicite_1_PK PRIMARY KEY(PatteId, ContrainteId),
CONSTRAINT Source_p_Unicite_1_PATTE_FK FOREIGN KEY(PatteId) REFERENCES PATTE(PatteId),
CONSTRAINT Source_p_Unicite_1_CONTRAINTE_UNICITE_FK FOREIGN KEY(ContrainteId) REFERENCES CONTRAINTE_UNICITE(ContrainteId)
);
CREATE TABLE Pivot_p_Unicite(
PatteId INT,
ContrainteId INT,
CONSTRAINT Pivot_p_Unicite_PK PRIMARY KEY(PatteId, ContrainteId),
CONSTRAINT Pivot_p_Unicite_PATTE_FK FOREIGN KEY(PatteId) REFERENCES PATTE(PatteId),
CONSTRAINT Pivot_p_Unicite_CONTRAINTE_UNICITE_FK FOREIGN KEY(ContrainteId) REFERENCES CONTRAINTE_UNICITE(ContrainteId)
);
CREATE TABLE Portee_Unicite(
PatteId INT,
ContrainteId INT,
CONSTRAINT Portee_Unicite_PK PRIMARY KEY(PatteId, ContrainteId),
CONSTRAINT Portee_Unicite_PATTE_FK FOREIGN KEY(PatteId) REFERENCES PATTE(PatteId),
CONSTRAINT Portee_Unicite_CONTRAINTE_UNICITE_FK FOREIGN KEY(ContrainteId) REFERENCES CONTRAINTE_UNICITE(ContrainteId)
);