La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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.

Présentations similaires


Présentation au sujet: "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."— Transcription de la présentation:

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

2 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

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

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

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

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

7 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

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

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

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

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

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

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

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

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

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

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

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

19 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)

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

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

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

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

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

25 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

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

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

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

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

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

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

32 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

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

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

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

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

37 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

38 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

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

40 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

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

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

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

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

45

46

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

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


Télécharger ppt "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."

Présentations similaires


Annonces Google