Agilité et bases de données relationnelles

Les contraintes structurelles sont une des forces essentielles des bases de données relationnelles mais, en parallèle elles engendrent un risque important de perte d'agilité.

Prenons comme exemple, la table associative Contient de réalisation de l'association entre recettes de cuisine et ingrédients.

La contrainte de clé primaire de cette table va assumer que chaque ingrédient soit unique dans une recette, ce que nous voulons.

Au lieu de transformer l'association entre recettes de cuisine et ingrédients en une table associative, je propose de la transformer en une table indépendante.

La clé primaire de la nouvelle table Contient est constituée d'une colonne auto-incrémentée. Pour garantir l'unicité des couples (ingrédient, recette) j'ajoute une contrainte d'unicité et de stabilité qui va simuler la clé primaire de la table associative initiale.

Maintenant, notre modèle n'est plus contraignant et nous pouvons le faire évoluer à notre guise. Il est, par exemple, possible de rajouter une troisième dimension sans impact sur les contraints de clés étrangères dont notre nouvelle table Contient serait la cible.

En finalité, nous gagnons en robustesse tout en améliorant l'agilité!

Plus de détails dans la deuxième édition de mon livre :

Modèle logique de données relationnel