|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SQL - Contraintes d'intégritéExpression de contraintes d'intégritéUne contrainte d'intégrité est une clause permettant de contraindre la modification de tables, faite par l'intermédiaire de requêtes d'utilisateurs, afin que les données saisies dans la base soient conformes aux données attendues. Ces contraintes doivent être exprimées dès la création de la table grâce aux mots clés suivants :
Définir une valeur par défautLe langage SQL permet de définir une valeur par défaut lorsqu'un champ de la base n'est pas renseigné grâce à la clause DEFAULT. Cela permet notamment de faciliter la création de tables, ainsi que de garantir qu'un champ ne sera pas vide. La clause DEFAULT doit être suivie par la valeur à affecter. Cette valeur peut être un des types suivants :
Forcer la saisie d'un champLe mot clé NOT NULL permet de spécifier qu'un champ doit être saisi, c'est-à-dire que le SGBD refusera d'insérer des tuples dont un champ comportant la clause NOT NULL n'est pas renseigné. Emettre une condition sur un champIl est possible de faire un test sur un champ grâce à la clause CHECK() comportant une condition logique portant sur une valeur entre les parenthèses. Si la valeur saisie est différente de NULL, le SGBD va effectuer un test grâce à la condition logique. Celui-ci peut évenutellement être une condition avec des ordres SELECT... Tester l'unicité d'une valeurLa clause UNIQUE permet de vérifier que la valeur saisie pour un champ n'existe pas déjà dans la table. Cela permet de garantir que toutes les valeurs d'une colonne d'une table seront différentes. Nommer une contrainteIl est possible de donner un nom à une contrainte grâce au mot clé CONSTRAINT suivi du nom que l'on donne à la contrainte, de telle manière à ce que le nom donné s'affiche en cas de non respect de l'intégrité, c'est-à-dire lorsque la clause que l'on a spécifiée n'est pas validée. Si la clause CONSTRAINT n'est pas spécifiée, un nom sera donné arbitrairement par le SGBD. Toutefois, le nom donné par le SGBD risque fortement de ne pas être compréhensible, et ne sera vraisemblablement pas compris lorsqu'il y aura une erreur d'intégrité. La stipulation de cette clause est donc fortement conseillée. Exemple de création de table avec contrainteVoici un exemple permettant de voir la syntaxe d'une instruction de création de table avec contraintes : CREATE TABLE clients( Nom char(30) NOT NULL, Prenom char(30) NOT NULL, Age integer, check (age < 100), Email char(50) NOT NULL, check (Email LIKE "%@%") ) Definition de clésGrâce à SQL, il est possible de définir des clés, c'est-à-dire spécifier la (ou les) colonne(s) dont la connaissance permet de désigner précisément un et un seul tuple (une ligne).
Trigger (gâchette): garantie de l'intégrité référentielleLes clés étrangères permettent de définir les colonnes d'une table
garantissant la validité d'une autre table. Ainsi, il existe des éléments
(appelés triggers, ou en français gâchettes ou déclencheurs)
permettant de garantir l'ensemble de ces contraintes que l'on désigne par le terme d'intégrité référentielle, c'est-à-dire
notamment de s'assurer qu'un tuple utilisé à partir d'une autre table existe
réellement.
Création d'assertionsLes assertions sont des expressions devant être satisfaites lors de la modifications de données pour que celles-ci puissent être réalisées. Ainsi, elles permettent de garantir l'intégrité des données. Leur syntaxe est la suivante: CREATE ASSERTION Nom_de_la_contrainte CHECK (expression_conditionnelle)La condition à remplir peut (et est généralement) être effectuée grâce à une clause SELECT.
Discussions pertinentes trouvées dans le forum
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||