7 Contraintes d’intégrité en SQL

Slides:



Advertisements
Présentations similaires
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
Advertisements

Problèmes BD. Bases de données - Yann Loyer2 Problèmes BD Ensemble de problèmes couramment rencontrés lors du développement d’applications de bases de.
PostgreSQL – Présentation
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Module 4 : Implémentation de l'intégrité des données.
Les Contraintes.
21/04/2015© Robert Godin. Tous droits réservés.1 6Gestion des contraintes d’intégrité en SQL n Contrainte d'intégrité statique – respectée pour chacun.
Définition des contraintes Vérification des contraintes Triggers
Le langage SQL.
NIVEAU LOGIQUE Vues. Fenêtre dynamique sur la base Ses données proviennent d'autres tables ou d'autres vues.
1 Les bases de données Séance 7 Les fonctions avancées : Opérateurs ensemblistes, Sous-requêtes et transactions.
Développement d’applications Problèmes relatifs aux BD.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Les ORMs ● Faire coexister le monde relationnel et objet.
SQL partie 5 1 LMD create – update – primary key secondary key.
Le langage de définition de données B.T.S. S.I.O – SI3 –
SQL : 4 fonctions d'exploitation de SGBD SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage informatique ayant pour.
Logiciel Assistant Gestion d’Événement Rémi Papillie (Chef d’équipe) Maxime Brodeur Xavier Pajani Gabriel Rolland David St-Jean.
1- phpMyAdmin 3ème partie : Manipulation des données Le langage SQL 2- Gérer les tables 3- Gérer les données.
SQL partie 1 Langage de Définition de Données. SQL est un langage de définition de données  SQL est un langage de définition de données (LDD), c'est-à-dire.
Chapitre 3: SQL-ORACLE. Concepts de SQL SQL est un langage d’interrogation de base de données relationnelles pour  Définir les données (LDD)  Interroger.
Nouveautés Version 4.1 et mai 2017.
AMUE – SIFAC Gestion des services fait sur SIFAC WEB
Environnement du développement de BD ORACLE REPORTS 10g
La gestion commerciale
Structured Query Language SQL DDL
LE LANGAGE DE REQUETES SQL
Les Bases de données Définition Architecture d’un SGBD
Structured Query Language
CHAPITRE III Hypothèses de la Résistance des Matériaux
Initiation aux bases de données et à la programmation événementielle
AMUE – SIFAC Les concepts de SIFAC WEB HISTORIQUE DES MISES A JOUR
Généralité sur les bases de données
Les bases de données et le modèle relationnel
Langage de Manipulation des Données LMD
Tables référentielles (DB2)
Echanges de données entre Nabuco et Xlab
Algorithmique & Langage C IUT GEII S1 Notes de cours (deuxième partie)
Notion De Gestion De Bases De Données
Création Et Modification De La Structure De La Base De Données
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Guide Utilisateur. Guide Utilisateur.
4. LE LANGAGE SQL AVANCE 1re partie
9 Méthodes multidimentionnelles et représentation d'associations
6. PRODUCTION DU CODE DE LA BASE DE DONNEES
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
2. CONCEPTS DES BASES DE DONNEES
L1 Technique informatique
5 Analyse avec Designer d'Oracle
4 Méthodes multidimentionnelles et représentation d'associations
1. LE LANGAGE SQL DDL Version 2 - Janvier Le langage SQL-DDL
Chapitre 2 Le Projet Poterie
5 Introduction au modèle relationnel 5.1 Concepts de base
Semaine 3 Retour sur la semaine 2 Plan de séance
5 Interface entre SQL et un programme
© Robert Godin. Tous droits réservés.
Dossier SARL Verdier Application No 8
03- Evaluation Access 2003 Cette évaluation comporte des QCM (1 seule réponse) et des Zones à déterminer dans des copies d’écran.
20 Données semi-structurées et XML
Chapitre V La Procédure Comptable
Définition des contraintes Vérification des contraintes Triggers
9 Méthodes multidimentionnelles et représentation d'associations
9 Méthodes multidimentionnelles et représentation d'associations
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
© Robert Godin. Tous droits réservés.
Le D.R.P. - Quelques jours de fonctionnement
SQL Structured Query Language
© Robert Godin. Tous droits réservés.
1. LE LANGAGE SQL DDL Version 1 - Mai 2009 corrigé le 11/2/2011
© Robert Godin. Tous droits réservés.
Transcription de la présentation:

7 Contraintes d’intégrité en SQL Contrainte d'intégrité statique respectée pour chacun des états de la BD mécanismes déclaratifs PRIMARY KEY, UNIQUE, NOT NULL, DOMAIN, FOREIGN KEY, CHECK, ASSERTION procédural TRIGGER (SQL3) Contrainte d'intégrité dynamique contrainte sur changements d'états référence aux états successifs TRIGGER 27/11/2018 © Robert Godin. Tous droits réservés.

7.1 Containte de domaine (NOT NULL, CHECK, CREATE DOMAIN) Types SQL INTEGER CHAR ... NOT NULL CHECK DOMAIN 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.1.1 Contrainte NOT NULL Par défaut : NULL 27/11/2018 © Robert Godin. Tous droits réservés.

7.1.2 Contrainte CHECK sur une colonne Le noClient est supérieur à 0 et inférieur à 100,000 27/11/2018 © Robert Godin. Tous droits réservés.

7.1.3 Création d'un domaine (CREATE DOMAIN) 27/11/2018 © Robert Godin. Tous droits réservés.

7.1.4 Valeur de défaut (DEFAULT) 27/11/2018 © Robert Godin. Tous droits réservés.

7.2 Contrainte de clé primaire (PRIMARY KEY) La clé primaire de la table Client est le noClient 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Clé primaire composée 27/11/2018 © Robert Godin. Tous droits réservés.

7.3 Autres clés uniques (UNIQUE) 27/11/2018 © Robert Godin. Tous droits réservés.

7.4 Contrainte d'intégrité référentielle (FOREIGN KEY REFERENCES) Le noClient de la table Commande fait référence à la clé primaire noClient de la table Client La table Client doit d ’abord être créée PRIMARY KEY ou UNIQUE 27/11/2018 © Robert Godin. Tous droits réservés.

7.4.1 Politique de gestion de la contrainte d'intégrité référentielle Tentative de mise à jour de la clé primaire Options NO ACTION CASCADE SET NULL SET DEFAULT 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.4.1.1 Politique NO ACTION Rejet d ’une violation de la contrainte Clause de défaut 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Cas du UPDATE 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.4.1.2 Politique CASCADE Modification en cascade 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. ON UPDATE CASCADE 27/11/2018 © Robert Godin. Tous droits réservés.

7.4.1.3 Politiques SET NULL et SET DEFAULT 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. SET DEFAULT 27/11/2018 © Robert Godin. Tous droits réservés.

7.4.1.4 Clause MATCH PARTIAL/FULL 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Oracle Défaut ON DELETE NO ACTION ON UPDATE NO ACTION Supporte aussi ON DELETE CASCADE ON DELETE SET NULL (version 8i) 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.5 Autres contraintes CHECK au delà d ’une colonne ASSERTION générale 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.5.1 CHECK intra-ligne Plusieurs colonnes de la même ligne Les Articles dont le noArticle est supérieur à 90 ont un prix supérieur à $15.00 27/11/2018 © Robert Godin. Tous droits réservés.

7.5.2 Check inter-ligne d'une même table Concerne plusieurs lignes Le prixUnitaire d'un Article ne peut dépasser le prix moyen de plus de $40.00 Vérifié uniquement pour la ligne touchée La contrainte peut être violée ! Pas supporté par Oracle 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.5.3 CHECK inter-tables Concerne plusieurs tables Vérifié uniquement pour la ligne touchée La contrainte peut être violée ! Pas supporté par Oracle 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.5.4 Assertions générales Le prixUnitaire moyen d'un Article ne peut dépasser $25.00 Toujours valide par opposition au CHECK Non supporté par Oracle 27/11/2018 © Robert Godin. Tous droits réservés.

Assertion inter-tables La somme des quantitéLivrées pour une LigneCommande ne peut dépasser la quantité commandée 27/11/2018 © Robert Godin. Tous droits réservés.

7.6 Implémentation de la vérification des contraintes d'intégrité Problème non trivial Vérifier uniquement les lignes modifiées Simplification différentielle Simplification sémantique mécanismes d ’inférence 27/11/2018 © Robert Godin. Tous droits réservés.

7.7 Cohérence des contraintes d'intégrité Impossible de mettre à jour Article avec : Problème difficile en général Aucune ou peu de vérification dans les SGBD actuels 27/11/2018 © Robert Godin. Tous droits réservés.

7.8 Nom de contrainte (clause CONSTRAINT) DROP CONSTRAINT contNoClient SET CONSTRAINT contNoClient ... 27/11/2018 © Robert Godin. Tous droits réservés.

7.9 Contraintes déférées (SET CONSTRAINTS DEFERRED) Quand vérifier ? Une Commande ne peut exister sans LigneCommande associée Vérification immédiate par défaut impossible d ’ajouter une Commande + ses LigneCommandes … 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Clause DEFERRABLE Solution au problème : Ou INITIALLY DEFERRED 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.10 Gâchettes (TRIGGER) Opération (procédurale) déclenchée par événement pré-déterminé exécutée au niveau serveur de BD BD active Utilité maintien de contraintes d ’intégrité statique dynamique alternative aux mécanismes déclaratifs (CHECK, ASSERTION, ...) préférer mécanisme déclaratif maintien d ’éléments dérivés colonnes dérivées copies dans BD répartie ... historique des mises à jour AUDIT 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Lorsqu'une augmentation du prixUnitaire d'un Article est tentée, il faut limiter l'augmentation à 10% du prix en cours 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.10.1 Utilisation d'un TRIGGER pour le maintien d'une contrainte d'intégrité dynamique Empêcher une augmentation du prixUnitaire d'un Article au delà de 10% du prix en cours Oracle RAISE_APPLICATION_ERROR 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.10.2 Utilisation d'un TRIGGER pour le maintien d'une contrainte d'intégrité statique 0 < noClient < 100000 N.B. CHECK est préférable ! 27/11/2018 © Robert Godin. Tous droits réservés.

7.10.3 Plusieurs TRIGGER sur la même table Lors d'une nouvelle livraison, la quantité à livrer ne peut dépasser la quantité en stock disponible 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Lors d'une modification d'une quantitéLivrée, la différence entre la nouvelle quantitéLivrée et l'ancienne quantitéeLivrée doit être inférieure ou égale à la quantitéEnStock 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Ne permettre que la modification de la quantitéLivrée dans la table DétailLiraison 27/11/2018 © Robert Godin. Tous droits réservés.

Ajuster la quantitéEnStock 27/11/2018 © Robert Godin. Tous droits réservés.

Extension procédurale pour corpsTrigger Traitements complexes Combiner plusieurs TRIGGER vérifier quel est l ’événement déclencheur Ordre d ’exécution des TRIGGER BEFORE avant AFTER,... entre TRIGGER de même type ? forcer un ordre en combinant Oracle PL/SQL (voir Volume II, chap 8) 27/11/2018 © Robert Godin. Tous droits réservés.

7.10.4 TRIGGER de type INSTEAD OF Pour réaliser mise à jour de VIEW complexe 27/11/2018 © Robert Godin. Tous droits réservés.

7.10.5 TRIGGER de niveau STATEMENT Exécution du corps une seule fois pour plusieurs lignes mises à jours 27/11/2018 © Robert Godin. Tous droits réservés.

7.10.6 Ordre d'exécution des TRIGGER 27/11/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.10.7 Limites des TRIGGER Ne peuvent être DEFERRED Complexes à coder Contraintes particulières aux dialectes 27/11/2018 © Robert Godin. Tous droits réservés.