Les contrainesDéfinition

Nous l'avons vu, créer une base de données est complexe. Du coup cela peut engendrer de nombreuses erreurs, notamment des doublons, et la qualité de notre base en pâtit. Pour éviter ce problème, il existe les contraintes d'intégrité. L'idée de base est de fournir des moyens qui permettent de restreindre les données valides d'une base de données. On ne veut pas entrer tout et n'importe quoi dans les tables.

La mise en oeuvre de cette notion se fait via des contraintes d'intégrité. Elles se définissent comme étant des déclarations logiques qui permettent de restreindre le domaine actif d'une base de données.
Voici deux exemples:

Un numéro de sécurité sociale ne peut pas être le même pour deux personnes différentes → notion de clé primaire
Un employé ne peut pas être affecté à un numéro de projet qui n'existe pas → notion de clé étrangère
Vous l'apprendrez au fur et à mesure, mais il existe de nombreuses contraintes. On a l'habitude de dire que plus il y a de contraintes, plus la base est propre, moins l'administrateur ou le développeur l'est. En effet, multiplier les limitation de possibilités au sein d'une base de données ne facilite pas la vie des développeurs d'applications, qui ont tendance à vouloir mettre leurs contraintes directement dans le code. Cependant, il est essentiel de faire cela, ne serait-ce que pour la réutilisabilité des bases.

Dans les contraintes les plus fréquemment trouvées, on aura:
La contrainte de clé primaire d'une relation. Elle implique la non duplication des lignes, c'est-à-dire que chaque objet du monde réel peut être enregistré sans ambiguïté par une seule ligne, un seul "tuple"
La contrainte de domaine qui restreint les valeurs possibles d'une colonne à un ensemble de valeurs prédéfinies
La contrainte de non-nullité qui implique que cette colonne ne peut pas avoir de valeur nulle, c'est-à-dire ne peut pas être indéfinie ou inutilisable
La contrainte d'intégrité référentielle qui spécifie les liens qui doivent exister entre deux tables, par la correspondance d'une ou plusieurs colonnes communes à ces deux tables (clé étrangère).