| CONTRAINTE | Modélisation |
Voir aussi : DOMAINE, CLÉ PRIMAIRE, CLÉ ÉTRANGÈRE, IDENTIFIANT, CARDINALITÉ, DICTIONNAIRE DES DONNÉES , SCHÉMA CONCEPTUEL
REPRÉSENTATIONS/EXEMPLES/APPLICATIONS
Dans le modèle
relationnel, on admet trois contraintes implicites :
Soit la relation DISCIPLINE (CodeDiscipline, LibelléDiscipline, CodeResponsable#), où :
- Lattribut CodeDiscipline, clé primaire de la relation, est défini sur un domaine correspondant à un intervalle dentiers.
- Lattribut LibelléDiscipline est défini sur un domaine composé des chaînes dau plus 20 caractères.
- Lattribut CodeResponsable# est une clé étrangère, se référant à CodeProfesseur, attribut clé primaire de la relation PROFESSEUR (CodeProfesseur, NomProfesseur).
Dans la relation DISCIPLINE :
- Il est impossible de donner à l'attribut CodeDiscipline la valeur "B" (intégrité de domaine).
- Il est impossible de trouver un n-uplet <, "anglais", 4> dans lequel l'attribut CodeDiscipline n'a pas de valeur (intégrité dentité).
- Il est impossible de trouver au même instant les deux n-uplets <3,"anglais",7> et <3,"allemand",5>, car ces deux n-uplets ont la même valeur de clé (intégrité dentité).
- Il est impossible dinsérer le n-uplet <7,"anglais",3> s'il n'existe pas dans la relation PROFESSEUR de n-uplet possédant pour clé primaire la valeur 3 (intégrité de référence).
Dans la relation PROFESSEUR :
- Il n'est pas possible de supprimer le n-uplet (5,"NEWTON") s'il existe au moins un n-uplet dans la relation DISCIPLINE qui lui fait référence (intégrité de référence).
Les langages de
définition de données des SGBDR permettent dautomatiser le respect de
certaines contraintes (clauses PRIMARY KEY, REFERENCES, WITH CHECK OPTION, UNIQUE, NOT
NULL, etc en SQL, par exemple). Celles qui ne peuvent pas être automatisées lors de la
définition des données le seront à laide dun langage de définition de
contraintes (instruction DEFINE CONSTRAINT) ou doutils spécialisés (trigger,
rule). À défaut, on définira des procédures spécifiques, dont certaines seront
" automatisées ", les autres demeurant
" manuelles ". Cest pourquoi il est si important de mesurer la portée
dune contrainte dans la vie de lobjet quelle concerne (création,
modification, suppression).
Avec le modèle
entité-association,
- Lidentifiant des entités.
- Les cardinalités des associations.
- Le type de chaque donnée.
- Les règles de gestion qui peuvent contraindre les valeurs admissibles.
Quil sagisse
dune donnée élémentaire ou dune structure de données, la spécification
sappuie sur lobservation de linformation à représenter et se traduit
par une approximation plus ou moins fine à laide des types de données qui
composent la panoplie du langage de spécification et des contraintes sémantiques
quon pourra formuler.
- Choix entre un code ou un libellé complet : cest la part la plus subjective de la spécification.
- Définition du type correspondant (caractère ou chaîne) plus ou moins restreint, donc plus ou moins contraint. On choisira, par exemple, une énumération des codes possibles ("C", "M", "D", "V") ou une énumération des libellés possibles ("célibataire", "marié", "divorcé", "veuf"). On se rapproche dune formalisation rigoureuse.
- Définition des autres contraintes, intrinsèques ou en rapport avec dautres données, " statiques " ou " dynamiques ", etc. Cest ici que la spécification deviendra formelle ou non. Dans le cas présent, la modification de la valeur prise par la donnée " situation maritale " est fortement contrainte.
- Le type " énumération " existe-t-il ? Quel est le type dinterface ? (On remarquera quune interface graphique diminue lintérêt des codes.) Existe-t-il un moyen dautomatiser la contrainte sur les mises à jour, à laide de triggers, par exemple ?
- Dune façon plus générale, il sagit de comparer le coût de lautomatisation dune contrainte (développement, volume, temps de réponse, etc) et le coût dune intégrité logique dégradée. Le cahier des charges dune application devrait recenser les décisions prises en ce domaine.