Getsuyodev, Programming is mainly used when constructing an application. Programming requires knowledge of application domains, algorithms, and programming language expertise. Programming can be developed in different logic based on developer knowledge.

SGBD – SQL Gestion des contraintes

Système de gestion de base de données



Introduction:

Dans ce chapitre, vous allez apprendre à implémenter des règles de gestion en utilisant les contraintes d’intégrité qu’elles soient référentielles ou sur domaine.

A la fin de ce chapitre, vous saurez :

  • Définir les contraintes  
  • Créer des contraintes et les maintenir

Contraintes:

  • SQL Server fait appel à des contraintes pour empêcher l’entrée de données incorrectes dans des tables.
  • Il s’agit d’une approche non spécifique à SQL Server mais mise en œuvre par tous les SGBD conformes au modèle relationnel et à la norme SQL.

Objectifs:

  • Appliquer des règles au niveau d’une table chaque fois qu’une ligne est insérée, mise à jour ou supprimée dans cette table. La contrainte doit être satisfaite pour que l’opération réussisse.
  • Empêcher la suppression d’un enregistrement si il y a une dépendance avec un autre enregistrement de la table en relation.
  • Eviter la suppression d’une table dont dépend une autre table. ü ü Appliquer des règles aux valeurs insérées dans une colonne pour vérifier qu’elles sont conformes aux règles définies.

Contraintes d’intégrité des données:

  • Les contraintes contrôlent des règles de gestion au niveau d’une table.
  • Les contraintes empêchent la suppression d’une table lorsqu’il existe des dépendances.
  • Les types de contraintes sont: NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK
  • Toutes les contraintes sont stockées dans le dictionnaire de données.
  • Elles seront très faciles à manipuler si vous leur donnez un nom parlant. Par défaut le système attribue un nom constitué à partir du nom des objets concernés et une référence ordinale.
  • Les noms de contraintes sont soumis aux conventions de dénomination des objets SQL Server.
  • Il est possible de définir les contraintes au moment de la création de la table ou par la suite.
  • Une contrainte peut être définie au niveau table ou colonne en fonction de sa nature.

DEFAULT:

  • Spécifie la valeur fournie pour la colonne lorsque vous n’avez pas spécifié explicitement de valeur lors d’une insertion.
  • Les définitions de valeurs par défaut peuvent s’appliquer à toutes les colonnes, excepté aux colonnes Timestamp, ou à celles définies avec la propriété IDENTITY.
  • Les définitions de valeurs par défaut sont abandonnées lorsque la table est supprimée.
  • Spécifie la valeur fournie pour la colonne lorsque vous n’avez pas spécifié explicitement de valeur lors d’une insertion.
  • Seule une valeur constante, telle qu’une chaîne de caractères, une fonction système comme SYSTEM_USER() ou la valeur NULL, peut être utilisée comme valeur par défaut.
  • Vous pouvez affecter un nom de contrainte à une valeur DEFAULT.

NOT NULL:

  • NULL et NOT NULL
  • Mots clés déterminant si les valeurs NULL sont permises ou non dans une colonne.
  • La contrainte NOT NULL interdit la présence de valeurs NULL dans la colonne à laquelle elle s’applique.
  • Par défaut, les colonnes qui ne sont pas associées à la contrainte NOT NULL peuvent contenir des valeurs NULL.

PRIMARY KEY :

  • Une contrainte PRIMARY KEY crée une clé primaire pour la table.
  • Une seule clé primaire peut être créée par table.
  • Contrainte assurant l’intégrité de l’entité d’une colonne ou de plusieurs colonnes données au moyen d’un seul index.
  • Elle établit une règle d’unicité de la colonne ou d’une combinaison de colonnes et garantit qu’aucune colonne faisant partie de la clé primaire ne contient de valeur NULL.

Ajout d’une clé primaire dans une table existante :

Ajout d’une clé primaire dans une nouvelle table:

IDENTITY:

  • Crée une colonne d’identité dans une table. Cette propriété est utilisée avec les instructions. Permet d’incrémenter automatiquement la valeur des clés primaires par incrémentation.
  • Utilisable avec CREATE TABLE et ALTER TABLE

UNIQUE:

  • Une contrainte d’intégrité de type clé UNIQUE exige que chaque valeur dans une colonne ou dans un ensemble de colonnes soit unique, c’est-à-dire qu’elle n’existe pas dans plusieurs lignes pour la colonne ou l’ensemble de colonnes spécifiés.
  • Une table peut comprendre plusieurs contraintes UNIQUE.

Ajout de UNIQUE dans une nouvelle table :

Ajout de UNIQUE dans une table existante :

FOREIGN KEY:

  • La contrainte FOREIGN KEY, ou contrainte d’intégrité référentielle, désigne une colonne ou une combinaison de colonnes comme étant une clé étrangère et établit une relation avec une clé primaire ou une clé unique de la même table ou d’une table différente.
  • Une valeur de clé étrangère doit obligatoirement correspondre à une valeur existante de la table maître ou être NULL.
  • Les clés étrangères sont basées sur des valeurs de données et sont des pointeurs purement logiques et non physiques.
  • Les contraintes FOREIGN KEY peuvent être définies au niveau table ou colonne. Une clé étrangère composée se crée au moyen de la définition de niveau table.
  • La clé étrangère est définie dans la table détail et la table contenant la colonne référencée est la table maître.

Ajout de UNIQUE dans une nouvelle table :

Ajout de FOREIGN KEY dans une table existante :

ON DELETE CASCADE

Indique qu’en cas de tentative de suppression d’une ligne possédant une clé référencée par des clés étrangères dans des lignes d’autres tables, toutes les lignes contenant ces clés étrangères sont également supprimées. Si des actions d’intégrité référentielle en cascade ont également été définies sur les tables cible, ces actions sont également exécutées pour les lignes à supprimer de ces tables.

ON UPDATE CASCADE

Spécifie qu’en cas de tentative de mise à jour, dans une ligne, d’une valeur de clé référencée par des clés étrangères dans des lignes d’autres tables, toutes les valeurs de clé étrangère sont également mises à jour et remplacées par la nouvelle valeur spécifiée pour la clé.

Si des actions d’intégrité référentielle en cascade ont également été définies sur les tables cible, ces actions sont également exécutées pour les valeurs de clé à mettre à jour dans ces tables.

CHECK:

  • La contrainte CHECK définit une condition que chaque ligne doit obligatoirement satisfaire. La condition peut utiliser les mêmes constructions que les conditions d’une requête.
  • Une colonne peut posséder un nombre illimité de contraintes CHECK et la condition peut inclure plusieurs expressions logiques combinées par AND et OR. S’il existe plusieurs contraintes CHECK pour une même colonne, elles sont validées dans l’ordre de leur création.
  • La condition de recherche doit correspondre à une expression booléenne et ne peut pas faire référence à une autre table.
  • Une contrainte CHECK de niveau colonne ne peut faire référence qu’à la colonne contenant la contrainte, et une contrainte CHECK de niveau table ne peut faire référence qu’aux colonnes d’une même table.
  • Les contraintes CHECK et les règles servent toutes les deux à valider les données lors des instructions INSERT et DELETE.
  • Quand il existe une règle et une ou plusieurs contraintes CHECK pour une colonne, toutes les restrictions sont évaluées.

CHECK:

Suppression d’une contrainte:

Activation et Désactivation des contraintes:

  • Uniquement valable avec les contraintes CHEK ou FOREIGN KEY
  • Si la contrainte est désactivée, les insertions et mises à jour ultérieures ne sont pas validées par rapport aux conditions de la contrainte. Cette option peut uniquement être utilisée avec les contraintes FOREIGN KEY et CHECK.
  • ALL : Spécifie que toutes les contraintes sont désactivées à l’aide de l’option NOCHECK ou activées à l’aide de l’option CHECK.

Affichage des contraintes définies:

  • Pour afficher les contraintes définies sur les colonnes d’une table, exécutez la procédure stockée Sp_HelpContrainst avec en paramètre le nom de la table.

Comments are closed, but trackbacks and pingbacks are open.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More