Flux rss
Bookmark Ajouter aux favoris / Partager

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 :

  • CONSTRAINT
  • DEFAULT
  • NOT NULL
  • UNIQUE
  • CHECK

Définir une valeur par défaut

Le 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 :

  • constante numérique
  • constante alphanumérique (chaîne de caractères)
  • le mot clé USER (nom de l'utilisateur)
  • le mot clé NULL
  • le mot clé CURRENT_DATE (date de saisie)
  • le mot clé CURRENT_TIME (heure de saisie)
  • le mot clé CURRENT_TIMESTAMP (date et heure de saisie)

Forcer la saisie d'un champ

Le 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 champ

Il 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 valeur

La 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 contrainte

Il 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 contrainte

Voici 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és

Grâ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).

  • L'ensemble des colonnes faisant partie de la table en cours permettant de désigner de façon unique un tuple est appelé clé primaire et se définit grâce à la clause PRIMARY KEY suivie de la liste de colonnes, séparées par des virgules, entre parenthèses. Ces colonnes ne peuvent alors plus prendre la valeur NULL et doivent être telles que deux lignes ne puissent avoir simultanément la même combinaison de valeurs pour ces colonnes.
    PRIMARY KEY (colonne1, colonne2, ...)
  • Lorsqu'une liste de colonnes de la table en cours de définition permet de définir la clé primaire d'une table étrangère, on parle alors de clé étrangère, et on utilise la clause FOREIGN KEY suivie de la liste de colonnes de la table en cours de définition, séparées par des virgules, entre parenthèses, puis de la clause REFERENCES suivie du nom de la table étrangère et de la liste de ses colonnes correspondantes, séparées par des virgules, entre parenthèses.
    FOREIGN KEY (colonne1, colonne2, ...)
    REFERENCES Nom_de_la_table_etrangere(colonne1,colonne2,...)

Trigger (gâchette): garantie de l'intégrité référentielle

Les 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.
Ces triggers sont ON DELETE et ON UPDATE :

  • ON DELETE est suivi d'arguments entre accolades permettant de spécifier l'action à réaliser en cas d'effacement d'une ligne de la table faisant partie de la clé étrangère :
    • CASCADE indique la suppression en cascade des lignes de la table étrangère dont les clés étrangères correspondent aux clés primaires des lignes effacées
    • RESTRICT indique une erreur en cas d'effacement d'une valeur correspondant à la clé
    • SET NULL place la valeur NULL dans la ligne de la table étrangère en cas d'effacement d'une valeur correspondant à la clé
    • SET DEFAULT place la valeur par défaut (qui suit ce paramètre) dans la ligne de la table étrangère en cas d'effacement d'une valeur correspondant à la clé
  • ON UPDATE est suivi d'arguments entre accolades permettant de spécifier l'action à réaliser en cas de modification d'une ligne de la table faisant partie de la clé étrangère :
    • CASCADE indique la modification en cascade des lignes de la table étrangère dont les clés primaires correspondent aux clés étrangères des lignes modifiées
    • RESTRICT indique une erreur en cas de modification d'une valeur correspondant à la clé
    • SET NULL place la valeur NULL dans la ligne de la table étrangère en cas de modification d'une valeur correspondant à la clé
    • SET DEFAULT place la valeur par défaut (qui suit ce paramètre) dans la ligne de la table étrangère en cas de modification d'une valeur correspondant à la clé

Création d'assertions

Les 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.

Les assertions ne sont pas implémentées dans l'ensemble des SGBDR...

Dernière modification le mardi 14 octobre 2008 à 17:40:30.Ce document intitulé « SQL - Contraintes d'intégrité » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

[BD]Contraintes d integrité fonctionnelle Bonjour, Pourrais t on m expliquer clairement , que signifie exactement une contrainte d integrité ou dependance fonctionnelle au niveau d' un Mcd? y a t il un rapport avec les formes normales pour valider un Mcd? un petit exemple simple pourrait m... www.commentcamarche.net/forum/affich-5036160-bd-contraintes-d-integrite-fonctionnelle
[SQL Server] Contraintes d'unicité... (Résolu) Bonjour à tous, J'ai un petit problème en ce qui concerne une base de données et ses règles. Dans une table produit, je désirerais qu'un groupe de valeurs soit unique, mais, en langange SQL, je ne vois pas comment faire... Explication : Table MaTable1... www.commentcamarche.net/forum/affich-1603956-sql-server-contraintes-d-unicite
Migration Access -> SQL Server conflit (Résolu) Bonjour à tous, lors de mes multiples tentatives de migration d'une BD en Access vers sql server j'obtient toujours une erreur qui me dit que: l'instruction ALTER TABLE est en conflit avec la contrainte FOREIGN KEY "nom_de_la_table_FK00". Le conflit... www.commentcamarche.net/forum/affich-3239312-migration-access-sql-server-conflit
SQL contrainte check évalué avant un trigger (Résolu)Bonjour, Je construit un base de donnée en SQL sur PostgreSQL Mon problème: j'ai une contrainte primary key sur une table et un trigger sur la meme table qui s'occupe que modifié les valeurs pour que tout fonctionne bien ma_table: -reference1... www.commentcamarche.net/forum/affich-8266199-sql-contrainte-check-evalue-avant-un-trigger
[SQL] Faire une suppresion en cascadeQuelqu'un saurait-il comment je peux faire un DELETE en cascade ou avec la contrainte DELETE ON CASCADE. =}- The_Str@nger -{= www.commentcamarche.net/forum/affich-844296-sql-faire-une-suppresion-en-cascade
Creer une cle etrangere sur sqlbonjour comment creer une cle etrangere sur sql quand on veut creer une table merci de me donner le code www.commentcamarche.net/forum/affich-873361-creer-une-cle-etrangere-sur-sql
Télécharger SQL Server BackupSQL Server Backup est un outil de sauvegarde ou de restauration pour Microsoft SQL Server. Son assistant vous permettra de sauvegarder la base de données SQL Server sur le disque dur local, un dossier partagé du réseau ou sur un réseau distant. Facile... www.commentcamarche.net/telecharger/telecharger-34058935-sql-server-backup
Télécharger SQL QuerySQL Query est un éditeur SQL. Le programme prend en charge les bases suivantes : toutes les versions de SQL Server et MSDE y compris SQL Server 2005 et SQL Server 2005 Express. Il permet de créer et d'exécuter des requêtes par lots, de naviguer entre... www.commentcamarche.net/telecharger/telecharger-34058385-sql-query
Télécharger MS SQL MigratePour des raisons pratique ou quasiment professionnel, il est nécessaire de convertir des bases de données entre différents formats. Le principal, c’est qu’il n’y ait aucune perte de donnée lors de la conversion. MS SQL Migrate est... www.commentcamarche.net/telecharger/telecharger-34058211-ms-sql-migrate
Le langage SQLQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,... www.commentcamarche.net/contents/sql/sqlintro.php3
SQL - Création de tableLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE... www.commentcamarche.net/contents/sql/sqlcreate.php3
SQL - TriTri des résultats Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou... www.commentcamarche.net/contents/sql/sqltri.php3