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.

Slides:



Advertisements
Présentations similaires
Les Systèmes de Gestion de Bases de Données (SGBD) Les vues.
Advertisements

Programme Introduction aux BD et aux SGBD Le modèle relationnel
SGBD – Oracle Cours BD LF2 info
INTEGRITE ET BD ACTIVES
Initiation aux bases de données et à la programmation événementielle
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
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,
Les contraintes d’integrité
Contrôles d'accès aux données
Rappel sur les bases de données et le vocabulaire
10 Copyright © Oracle Corporation, Tous droits réservés. Autres concepts relatifs aux déclencheurs.
Initiation aux bases de données et à la programmation événementielle
Chap 4 Les bases de données et le modèle relationnel
3 Introduction au modèle relationnel 3.1 Concepts de base
L’utilisation des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
PLSQL ORACLE 8i Connecter VB à BD Oracle Les collections Question de révision Les blocs anonymes Les triggers REVISION Par : Joël Huot.
SQL: Contraintes et Triggers
Bases de Données Avancées - TP2: SQL
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Introduction.
Programmation Internet en PHP SIL module M12
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.
Chap 4.5 : SQL (LDD) LDD : Langage de définition de données Réfs : Manuel p105.
Gérer la sécurité des mots de passe et les ressources
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Transac SQL Intégrité des données.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Créer des déclencheurs de base de données
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
Créer des packages.
INTEGRITE ET BD ACTIVES
(Procedural Language / Structured Query Language)
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.
Module 13 : Implémentation de déclencheurs. Vue d'ensemble Présentation des déclencheurs Définition de déclencheurs Exemples de déclencheurs Performances.
Gérer les rôles.
Les Contraintes.
Gérer les utilisateurs
SQL : Langage de Manipulation des données
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Introduction  Langage propre à Oracle basé sur ADA  Offre une extension procédurale à SQL  PL/SQL permet d’utiliser un sous-ensemble du langage SQL.
Création et Gestion de Tables
Le Langage de Définition de Données LDD
Les vues Une vue: c’est une relation virtuelle. Définie par:
13 Copyright © Oracle Corporation, Tous droits réservés. Gérer l'intégrité des données.
02/06/2015© Robert Godin. Tous droits réservés.1 5 Interface entre SQL et un programme n SQL incomplet n Défaut d'impédance (impedance mismatch) – modèle.
 L’information est conservée sous forme de tables  Contient: ◦ Un nom ◦ Une clé primaire ◦ Une liste de colonnes ◦ Les informations/données (sous forme.
Définition des contraintes Vérification des contraintes Triggers
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
Le Langage de Contrôle de Données TRIGGERS
Le Langage de Définition de Données LDD. 2 Les ordres et les objets Ordre CREATE –Création de la structure de l’objet  DD Ordre DROP –Suppression des.
Les bases de données Séance 8 Jointures.
Le langage SQL.
Initiation aux bases de données et à la programmation événementielle
1 Initiation aux bases de données et à la programmation événementielle Cours N°8 : Gestion de la cohérence avec des zones de liste déroulantes. Souheib.
NIVEAU LOGIQUE Vues. Fenêtre dynamique sur la base Ses données proviennent d'autres tables ou d'autres vues.
Nicolas Ribot Introduction aux triggers Nicolas Ribot - Licence GNU FDL - Version 1.1.
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Introduction Module 1.
Les exceptions Une exception est un identificateur PL/SQL détecté pendant la phase d’exécution. Comment est-elle déclenchée ? À la suite d’une erreur.
Bases de données – Cours 3
Le Langage de Manipulation de Données LMD Module 6.
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.
Généralité sur les bases de données
1. LE LANGAGE SQL DDL Version 2 - Janvier Le langage SQL-DDL
7 Contraintes d’intégrité en SQL
1. LE LANGAGE SQL DDL Version 1 - Mai 2009 corrigé le 11/2/2011
Transcription de la présentation:

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 des états de la BD – mécanismes déclaratifs n PRIMARY KEY, UNIQUE, NOT NULL, DOMAIN, FOREIGN KEY, CHECK, ASSERTION – procédural n TRIGGER (SQL:1999) n Contrainte d'intégrité dynamique – contrainte sur changements d'états – référence aux états successifs – TRIGGER, REFERENCES ON DELETE…, ON UPDATE...

21/04/2015© Robert Godin. Tous droits réservés.2 6.1Contrainte de domaine n Types SQL – INTEGER – CHAR –... n NOT NULL n CHECK n CREATE DOMAIN

21/04/2015© Robert Godin. Tous droits réservés Contrainte NOT NULL n Par défaut : NULL

21/04/2015© Robert Godin. Tous droits réservés Contrainte CHECK sur une colonne n Le noClient est supérieur à 0 et inférieur à 100,000

21/04/2015© Robert Godin. Tous droits réservés Création d'un domaine (CREATE DOMAIN) Pas Oracle...

21/04/2015© Robert Godin. Tous droits réservés Valeur de défaut (DEFAULT)

21/04/2015© Robert Godin. Tous droits réservés.7 6.2Contrainte de clé primaire (PRIMARY KEY) n La clé primaire de la table Client est le noClient

21/04/2015© Robert Godin. Tous droits réservés.8 Clé primaire composée

21/04/2015© Robert Godin. Tous droits réservés.9 6.3Autres clés uniques (UNIQUE)

21/04/2015© Robert Godin. Tous droits réservés Contrainte d'intégrité référentielle (FOREIGN KEY REFERENCES) n Le noClient de la table Commande fait référence à la clé primaire noClient de la table Client n La table Client doit d ’abord être créée – privilège REFERENCES sur Client n PRIMARY KEY ou UNIQUE

21/04/2015© Robert Godin. Tous droits réservés Politique de gestion de la contrainte d'intégrité référentielle n Tentative de mise à jour de la clé primaire n Options – NO ACTION – CASCADE – SET NULL – SET DEFAULT

21/04/2015© Robert Godin. Tous droits réservés Politique NO ACTION n Rejet d ’une violation de la contrainte n Clause de défaut

21/04/2015© Robert Godin. Tous droits réservés.13 Cas du UPDATE

21/04/2015© Robert Godin. Tous droits réservés Politique CASCADE n Modification en cascade

21/04/2015© Robert Godin. Tous droits réservés.15 ON UPDATE CASCADE

21/04/2015© Robert Godin. Tous droits réservés Politiques SET NULL et SET DEFAULT

21/04/2015© Robert Godin. Tous droits réservés.17 SET DEFAULT

21/04/2015© Robert Godin. Tous droits réservés Clause MATCH PARTIAL/FULL

21/04/2015© Robert Godin. Tous droits réservés.19 Oracle n Défaut – ON DELETE NO ACTION – ON UPDATE NO ACTION n Supporte aussi – ON DELETE CASCADE – ON DELETE SET NULL (version 8i)

21/04/2015© Robert Godin. Tous droits réservés Autres contraintes n CHECK au delà d ’une colonne n ASSERTION générale

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

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

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

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

21/04/2015© Robert Godin. Tous droits réservés.25 Assertion inter-tables n La somme des quantitéLivrées pour une LigneCommande ne peut dépasser la quantité commandée

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

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

21/04/2015© Robert Godin. Tous droits réservés Nom de contrainte (clause CONSTRAINT) n DROP CONSTRAINT contNoClient n SET CONSTRAINT contNoClient … n Identification de la contrainte qui est violée à l ’exécution

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

21/04/2015© Robert Godin. Tous droits réservés.30 Clause DEFERRABLE n Solution au problème : n Ou INITIALLY DEFERRED

21/04/2015© Robert Godin. Tous droits réservés Gâchettes (TRIGGER) n Procédure – déclenchée par événement pré-déterminé (INSERT, DELETE, UPDATE) – exécutée au niveau serveur de BD n BD active n Utilité – maintien de contraintes d ’intégrité n statique n dynamique n alternative aux mécanismes déclaratifs (CHECK, ASSERTION,...) – préférer mécanisme déclaratif – maintien d ’éléments dérivés n colonnes dérivées n copies dans BD répartie n... – historique des mises à jour n AUDIT – sécurité

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

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

21/04/2015© Robert Godin. Tous droits réservés Utilisation d'un TRIGGER pour le maintien d'une contrainte d'intégrité statique n 0 < noClient < n N.B. CHECK est préférable !

21/04/2015© Robert Godin. Tous droits réservés Étude de cas n Lors d'une nouvelle livraison, la quantité à livrer ne peut dépasser la quantité en stock disponible

21/04/2015© Robert Godin. Tous droits réservés.36 CHECK SQL2 inadéquat

21/04/2015© Robert Godin. Tous droits réservés.37 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

21/04/2015© Robert Godin. Tous droits réservés.38 Ne permettre que la modification de la quantitéLivrée dans la table DétailLiraison

21/04/2015© Robert Godin. Tous droits réservés.39 Ajuster la quantitéEnStock

21/04/2015© Robert Godin. Tous droits réservés.40 Extension procédurale pour corpsTrigger n Traitements complexes n Combiner plusieurs TRIGGER – vérifier quel est l ’événement déclencheur n Ordre d ’exécution des TRIGGER – BEFORE avant AFTER,... – entre TRIGGER de même type ? n forcer un ordre en combinant n Oracle – PL/SQL

21/04/2015© Robert Godin. Tous droits réservés TRIGGER de niveau STATEMENT n Exécution du corps une seule fois pour plusieurs lignes mises à jours dans le même énoncé

21/04/2015© Robert Godin. Tous droits réservés Ordre d'exécution des TRIGGER n Attention aux circularités !

21/04/2015© Robert Godin. Tous droits réservés Limites des TRIGGER n Ne peuvent être DEFERRED n Complexes à coder n Contraintes particulières aux dialectes

21/04/2015© Robert Godin. Tous droits réservés Particularités des TRIGGER Oracle n Pas de SELECT dans le WHEN n :NEW, :OLD n Omettre le mot-clé ROW dans REFERENCING n Corps en PL/SQL (voir chapitre 4). n Syntaxte :nomColonne n Pas de COMMIT/ROLLBACK dans un TRIGGER – procédure PL/SQL RAISE_APPLICATION_ERROR n IF INSERTING, DELETING, UPDATING. n Événements non standards – INSTEAD OF, STARTUP, LOGON,... n Problème avec table en mutation (modifée par l'événement déclencheur) n etc.

21/04/2015© Robert Godin. Tous droits réservés.47 Trigger INSTEAD OF pour VIEW non modifiable (non standard SQL:1999)

21/04/2015© Robert Godin. Tous droits réservés.48 suite