Module 4 : Implémentation de l'intégrité des données
Vue d'ensemble Types d'intégrité des données Implémentation de l'intégrité des données Utilisation de contraintes Utilisation de valeurs par défaut et de règles Choix d'une méthode d'implémentation
Types d'intégrité des données Intégrité de domaine ( colonnes ) Intégrité des entités (lignes) Intégrité référentielle (entre les tables )
Implémentation de l'intégrité des données Intégrité des données déclarative Critères définis dans les définitions d'objets Implémentée automatiquement par SQL Server Utilise des contraintes, des valeurs par défaut et des règles Intégrité des données procédurale Critères définis dans un script Implémentée par le script Utilise des déclencheurs et des procédures stockées
Utilisation de contraintes Choix du type de contrainte à utiliser Définition des contraintes Désactivation du contrôle des contraintes sur les données existantes Désactivation du contrôle des contraintes lors du chargement de nouvelles données
Choix du type de contrainte à utiliser Type d'intégrité Type de contrainte Domaine DEFAULT CHECK REFERENTIAL Entités PRIMARY KEY UNIQUE Référentielle FOREIGN KEY CHECK
Définition des contraintes Utilisation de l'instruction CREATE TABLE ou ALTER TABLE Ajout de contraintes à une table contenant des données Application de contraintes à une ou plusieurs colonnes Une seule colonne : contrainte de niveau colonne Plusieurs colonnes : contrainte de niveau table
Remarques relatives à l'utilisation des contraintes Peuvent être modifiées sans avoir à recréer une table Nécessitent un contrôle des erreurs dans l'application Vérifient les données existantes
USE library ALTER TABLE adult ADD CONSTRAINT firstname DEFAULT 'UNKNOWN' FOR firstname Contraintes DEFAULT Ne s'appliquent qu'aux instructions INSERT Une seule contrainte DEFAULT peut être définie par colonne Incompatibles avec la propriété IDENTITY ou le type de données timestamp Autorisent certaines valeurs fournies par le système
Contraintes CHECK Utilisées avec les instructions INSERT et UPDATE Peuvent faire référence à d'autres colonnes de la même table Ne peuvent pas : être utilisées avec la propriété IDENTITY être utilisées avec les types de données timestamp ou uniqueidentifier contenir des sous-requêtes USE library ALTER TABLE adult ADD CONSTRAINT phone_no CHECK (phone_no LIKE '(212)[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]')
USE library ALTER TABLE member ADD CONSTRAINT PK_member_member_no PRIMARY KEY CLUSTERED (member_no) Contraintes PRIMARY KEY Une seule contrainte PRIMARY KEY peut être définie par table Les valeurs doivent être uniques Les valeurs NULL ne sont pas autorisées Créent un index unique sur les colonnes spécifiées
USE sample_database ALTER TABLE employee ADD CONSTRAINT U_driver_lic_no UNIQUE NONCLUSTERED (driver_lic_no) Contraintes UNIQUE Autorisent les valeurs NULL Autorisent plusieurs contraintes UNIQUE dans une table Définies avec une ou plusieurs colonnes Implémentées avec un index unique
Contraintes FOREIGN KEY Doivent faire référence à une contrainte PRIMARY KEY ou UNIQUE Implémente une intégrité référentielle sur une ou plusieurs colonnes Ne créent pas automatiquement d'index Exigent de disposer des autorisations SELECT ou REFERENCES sur les tables référencées N'utilisent la clause REFERENCES qu'au sein de la même table USE library ALTER TABLE juvenile ADD CONSTRAINT FK_adult_memberno FOREIGN KEY (adult_memberno) REFERENCES adult(member_no)
USE library ALTER TABLE sales WITH NOCHECK ADD CONSTRAINT correct_amount CHECK (amount >=0) Désactivation du contrôle des contraintes sur les données existantes S'applique aux contraintes CHECK et FOREIGN KEY Utilise l'option WITH NOCHECK À n'utiliser que si les données existantes ne changent pas Peut modifier les données existantes avant d'appliquer des contraintes
USE library ALTER TABLE sales NOCHECK CONSTRAINT correct_amount Désactivation du contrôle des contraintes lors du chargement de nouvelles données S'applique aux contraintes CHECK et FOREIGN KEY À utiliser lorsque : les données sont conformes aux contraintes vous chargez de nouvelles données
Utilisation de valeurs par défaut et de règles En tant qu'objets indépendants, elles : ne sont définies qu'une seule fois peuvent être associées à une ou plusieurs colonnes ou à des types de données définis par l'utilisateur CREATE DEFAULT phone_no_default AS '(000) ' GO sp_bindefault phone_no_default, 'adult.phone_no_col' CREATE RULE statecode_rule in ('IA', 'IL', 'KS', 'MO') GO sp_bindrule statecode_rule, state_type
Choix d'une méthode d'implémentation Composant d'intégrité des données Contraintes Valeurs par défaut et règles Valeurs par défaut et règles Déclencheurs FonctionnalitéFonctionnalité Moyenne Faible Élevée SurchargeSurcharge Faible Moyenne Élevée Avant ou après transaction Avant ou après transaction Avant Après
Conseils pratiques Utilisez des déclencheurs si des fonctionnalités supplémentaires sont requises Utilisez des déclencheurs si des fonctionnalités supplémentaires sont requises Utilisez les contraintes, car elles sont compatibles ANSI
Atelier 4.1 : Implémentation de l'intégrité des données
Contrôle des acquis Types d'intégrité des données Implémentation de l'intégrité des données Utilisation de contraintes Utilisation de valeurs par défaut et de règles Choix d'une méthode d'implémentation