Cours BD relationnelles et contraintes SQL


Télécharger Cours BD relationnelles et contraintes SQL

★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Cours BD relationnelles et contraintes SQL

L'une des idées force de la conception des bases de données relationnelles repose sur la notion de contrainte.

Une contrainte n'est autre qu'une règle impérative ne devant en aucun cas être violée. Certaines contraintes sont le reflet du modèle de données et permettent d'assurer la cohérence fonctionnelle des relations entre les tables.

D'autres assurent que les données saisies correspondent bien aux limites de l'univers que l'on modélise. Enfin, les règles "métiers", c'est à dire le fonctionnel applicatif, nécessite la mise en oeuvre de contraintes complémentaires souvent complexes. Mais, si toutes les contraintes s'avèrent nécessaires, elles sont souvent mal comprise, très souvent mal gérées dans les processus de développement, et se voient donc souvent reléguées, voire abandonnées.

Cet article à pour but de vous montrer l'intérêt des contraintes SQL avec des exemples concret de leur utilité.

Mes audits m'ont souvent montrés que les contraintes étaient souvent peu utilisées. Je crois avoir une explication... Le mot contrainte fait peur. A l'origine, dans le droit, on trouve la contrainte par corps, une mesure d’exécution de peine qui permet l’incarcération de la personne qui ne s’acquitte pas d'une condamnation pécuniaire. Abolie en France depuis quelques décennies, elle reste en vigueur dans certains pays comme la Tunisie : la contrainte par corps est exécutée à raison d'un jour d'emprisonnement par trois dinars ou fraction de trois dinars sans que sa durée puisse excéder deux ans (art. 344 de la Loi n°99-



90 du 2 août 1999).

Dans d'autres domaines, la notion de contrainte est quand même plus réjouissante. Il y a un peu plus d'un an, devant donner une formation sur SQL, je voyais une jeune fille, arrivée fort tôt au cours, patienter en remplissant une série de grille que je pris pour un carré magique. "Tenez lui dis-je, pourquoi ne pas résoudre votre problème en utilisant une simple requête SQL ?" Je lui promis de terminer la formation par une telle démonstration. La résolution des sudokus reposent sur l'utilisation de contraintes.

Il existe toute une branche des mathématiques et plus précisément dans l'algorithmique et dans l'informatique qui utilise massivement les contraintes. Je veut parler de la programmation par contraintes, notamment à travers un langage comme PROLOG ou encore un framework Java spécialisé et non commercial comme CHOCO.

C'est d'ailleurs à l'aide de la programmation par contrainte qu'en 1976 Appel et Haken, à l'université de l'Illinois, firent la démonstration finale du théorème de la carte à 4 couleurs, en explorant systématiquement les cas particuliers. C'était aussi la première fois que la démonstration d'un théorème se faisait à l'aide d'un ordinateur.



Ce que je vous propose de visiter c'est comment SQL implémente les contraintes dans les bases de données relationnelles.

1 – La portée des contraintes.

Dans une application qui utilise SQL, on trouve les éléments suivants : des bases de données relationnelles dans lesquelles se trouvent des tables et des vues. Tables et vues sont dotées de colonnes et les données sont écrites lignes par lignes. Finalement l'élément le plus petit de cet ensemble est la donnée. Les contraintes se trouvent à chacun des niveaux de cet édifice.

Les contraintes dites "de domaine" concernent les valeurs que revêtent les données des colonnes. Les contraintes de tables peuvent porter sur une colonne, sur une ligne ou sur une table, mais valident la cohérence de la ligne. Enfin les assertions peuvent porter sur plusieurs tables, voire toutes les tables de la base et assurent une cohérence transverse.

1.1 - Portée des contraintes de table

Les contraintes de table sont les plus connues. La plus classique ne concerne qu'une colonne à la fois. C'est la contrainte d'obligation de valeur (NOT NULL) qui exige, pour la colonne qui en est pourvue, qu'à toute ligne de la table une valeur soit exprimée.



Cours BD relationnelles et contraintes SQL



4547