Bonjour,
Quelle que soit son évolution, au demeurant toujours harmonieuse, une chose est sûre : Looping est conforme à la norme afcet définie par le groupe 135, car il est à même d’en reprendre sans difficulté le métamodèle des contraintes (cf. pages 47 et 50 du document de référence Formalisme de données "Individuel" (entité-relation): extension des contraintes, où sont considérées les contraintes d’extension et d’unicité). Si vous voulez serrer de plus près cette affaire, le groupe 135 nous a fourni un glossaire
bien utile qui explique bien chaque concept.
Contraintes d’extension « à la Looping »
Contraintes d’unicité
Par curiosité ou à titre de pensum, vous pouvez consulter le code SQL produit par Looping, mais il y a du trigger dans l’air ! ![:D](https://www.developpez.net/forums/images/smilies/icon_biggrin.gif)
Contraintes d’extension
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)
);
Contraintes d’unicité
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)
);
Partager