INTEGRITE ET BD ACTIVES

Slides:



Advertisements
Présentations similaires
Bases de Données Avancées: Bases de Données Relationnelles
Advertisements

Les Systèmes de Gestion de Bases de Données (SGBD) Les vues.
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Fonctionnalités des SGBD
Algèbre relationnelle
Optimisation de Requêtes
INTEGRITE ET BD ACTIVES
LE MODELE RELATIONNEL INVENTE PAR T. CODD (IBM SAN-JOSE)
SGBDR : LA GESTION DES VUES
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,
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Les contraintes d’integrité
Contrôles d'accès aux données
Initiation aux bases de données et à la programmation événementielle
Introduction à la conception de Bases de Données Relationnelles
Chap 4 Les bases de données et le modèle relationnel
L’utilisation des bases de données
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
SQL: Contraintes et Triggers
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Contraintes et Triggers Chapitre 5,
Inventé par T. Codd (IBM Recherche)
Les concepts et les méthodes des bases de données
Bases de Données Avancées - TP2: SQL
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Modélisation des opérations Spécifier les transformations détat que lon attend des services de la machine Létat dune machine entièrement déterminée par.
1. Représentation des informations
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.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Créer des packages.
Optimisation de requêtes
Surveiller et résoudre le conflit de verrouillage
05/02/98WEB ESNIG Modèle logique de données Oracle Designer/2000 & Oracle Web Server.
1 G. Gardarin Optimisation de Requêtes  1. Introduction  2. Arbres relationnels  3. Restructuration algébrique  4. Modèle de coût  5. Choix du meilleur.
(Procedural Language / Structured Query Language)
PostgreSQL – Présentation
Module 7 : Utilisation de requêtes élaborées
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.
Sélection de colonnes (la projection)
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.
Le modèle relationnel Plan 1. Concepts descriptifs
Les Contraintes.
1 J. PHILIPP d'après G. Gardarin SGBDR : la gestion des vues l 1. Contexte l 2. Vues externes l 3. Interrogation des vues l 4. Mises à jour des vues l.
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.
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Création et Gestion de Tables
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.
Définition des contraintes Vérification des contraintes Triggers
Structured Query Language 1/34. SQL Types de données Langage de Définition de Données (LDD) Langage de Manipulation de Données (LDM) Langage de Contrôle.
Les bases de données Séance 8 Jointures.
Le langage SQL.
Séance /10/2004 SGBD - Approches & Principes.
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 vues, indexes, séquences.  Qu’est ce qu’une vue 1. Une vue est une vision partielle ou particulière des données d'une ou plusieurs tables de la base.
Le Langage de Manipulation de Données LMD Module 6.
Les bases de données Séance 4 Construction du Modèle Physique (la BDD)
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
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.
Définition des contraintes Vérification des contraintes Triggers
Transcription de la présentation:

INTEGRITE ET BD ACTIVES 1. Contraintes d'intégrité 2. SGBD Actif 3. Règles ECA 4. Règles en SQL3 5. Mécanismes d'exécution de règles

1. Contraintes d’intégrité Leur définition est essentielle car une BD incohérente est peu utile voire inexploitable. Principales contraintes d'intégrité. Conservation de la cohérence de la base. Vérification des données aux chargements et aux mises à jour. Répercussion des mises à jour entre tables liés. Gestion des références inter-tables.

Contrainte structurelle Contrainte structurelle (Structural constraint) Contrainte d'intégrité spécifique à un modèle exprimant une propriété fondamentale d'une structure de données de ce modèle. Une contrainte structurelle est généralement statique. Utilisée avec le modèle relationnel, elle permet d'exprimer explicitement certaines propriétés des relations, domaines, et attributs.

Principales contraintes structurelles Unicité de la clé Contrainte référentielle Elle spécifie que toute valeur d'un groupe de colonnes d'une table doit figurer comme valeur de clé dans une autre table. Contrainte de domaine Ce type de contrainte permet de restreindre la plage de valeurs d'un domaine. Contrainte de non nullité Une telle contrainte spécifie que la valeur d'un attribut ne peut être nulle.

Contraintes non structurelles Contrainte de comportement (Behavioral constraint) C'est une contrainte d'intégrité exprimant une règle d'évolution que doivent vérifier les données lors des mises à jour. Dépendances généralisées Les dépendances fonctionnelles. On dit que X  Y (X détermine Y) si pour toute valeur de X, il existe une valeur unique de Y associée. VINS (NV, CRU, REGION, PAYS) Les dépendances multivaluées. On dit que X  Y (X multidétermine Y) dans une relation R si, pour toute valeur de X, il existe un ensemble de valeur de Y indépendamment des valeurs des autres attributs Z de la relation R. Exemple : soit la relation BUVEURS (NOM, CRU, SPORT), NOM  CRU | SPORT

Contraintes non structurelles : autres dépendances Dépendances d'inclusion. Elles permettent de spécifier que les valeurs d'un groupe de colonnes d'une table doivent rester incluses dans celles d'un groupe de colonnes d'une autre table. Contraintes temporelles. Elles permettent de comparer l'ancienne valeur d'un attribut à la nouvelle après mise à jour. Exemple : un salaire ne peut que croître. Contraintes équationnelles. Comparaison de deux expressions arithmétiques calculées à partir de données de la base pour forcer une égalité ou une inégalité. Exemple : gestion de stocks.

Expression des contraintes en SQL1 CREATE TABLE <nom de table> ( {<Attribut> <Domaine> [<CONTRAINTE D'ATTRIBUT>]}+ ) [<CONTRAINTE DE RELATION>] <CONTRAINTE D'ATTRIBUT> ::= NOT NULL | UNIQUE | PRIMARY KEY REFERENCES <Relation> (<Attribut>) | CHECK <Condition> <CONTRAINTE DE RELATION> ::= UNIQUE (<Attribut>+) | PRIMARY KEY (<Attribut>+) | FOREIGN KEY (<Attribut>+) REFERENCES <Relation> (<Attribut>+) |

Exemple CREATE TABLE ABUS ( NB INT NOT NULL, NV INT NOT NULL REFERENCES VINS(NV), DATE DEC(6) CHECK BETWEEN 01011980 AND 31122002, QUANTITE SMALL INT DEFAULT 1, PRIMARY KEY(NB, NV, DATE), FOREIGN KEY NB REFERENCES BUVEURS, CHECK (QUANTITE BETWEEN 1 AND 100) )

Expression de contrainte référentielle en SQL2 FOREIGN KEY (<Attribut>+) REFERENCES <Relation> (<Attribut>+) [ON DELETE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}] [ON UPDATE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}]

Contrainte de comportement en SQL CREATE ASSERTION <nom de contrainte> [{ BEFORE COMMIT | AFTER{INSERT|DELETE|UPDATE[OF(Attribut+)]} ON <Relation> }...] CHECK <Condition> [FOR [EACH ROW OF] <Relation>]

Quelques exemples Exemple 1 : vérification que le degré de chaque vin est inférieur à 10 CREATE ASSERTION MINDEGRE BEFORE COMMIT CHECK (SELECT MIN(DEGRE) FROM VINS > 10) FOR VINS ; Exemple 2 : la quantité totale de vin bue par chaque buveur doit être inférieure à 100 litres. CREATE ASSERTION SOMMEQUANTITEBUE CHECK (SELECT SUM(QUANTITE) FROM ABUS GROUP BY NB < 100 ) FOR ABUS;

Rôle des contraintes d'intégrité Cohérence d'une base de données Une base données est cohérente si elle peut satisfaire un ensemble de contraintes. Cohérence de contraintes (Constraint Consistency) Ensemble de contraintes non contradictoires pouvant être satisfait par une base de données au moins. Contraintes redondantes (Redundant constraint) Ensemble de contraintes dont l'une au moins peut être déduite des autres par une méthode dite de preuve.

Simplification opérationnelle Il faut identifier les types de mises à jour d'une base pouvant conduire à la violation d'une contrainte donnée et donc procéder à une vérification des contraintes lors d'une insertion, suppression, mise à jour d'une table par détermination d'étiquettes de vérification. Toute contrainte affirmant l'existence d'un tuple dans une relation R doit être étiquetée (R, DELETE). Toute contrainte vraie pour tous les tuples d'une relation R doit être étiquetée (R,INSERT). Toute contrainte étiquetée (R,DELETE) ou (R,INSERT) doit être étiquetée (R,MODIFY).

Simplification différentielle Il est judicieux de rechercher une simplification des contraintes pour faciliter les contrôles de la cohérence ultérieurs. Par exemple, dans le meilleur des cas, seules les données mises à jour par une transaction doivent être vérifiées. Plus généralement, il est souvent possible de générer une forme simplifiée d'une contrainte d'intégrité qu'il suffit de vérifier sur la base après mise à jour pour garantir la satisfaction de la contrainte.

Simplification différentielle Soit une transaction t faisant passer la base de l'état R à l'état Rt comme suit : Rt := (R - R-) È R+ R+ : {tuple(s) à insérer dans R} R- : {tuple(s) à supprimer dans R} Soit une contrainte d'intégrité I portant sur la relation R. Elle doit être vérifiée sur Rt. C'est le test différentiel (Differential test) Contrainte d'intégrité simplifiée à vérifier à priori après une opération sur R pour garantir la satisfaction de la contrainte après application de l'opération.

Quelques tests différentiels Opérations Type de contrainte Insertion Suppression Mise à jour Clé primaire K de R Les clés de R+ sont uniques et ne figurent pas dans R. Pas de vérification pas dans R-R- . Clé étrangère A de R Ref K de S Les tuples de R+ référencent un tuple de S. R : Pas de vérification S : Les clés K de S- ne figurent pas dans A de R référencent un tuple de S. Domaine A de R Domaine A sur R+ Non nullité Non nullité sur R+ Dépendance fonctionnelle AB A de R+ = A de R implique B de R+ = B de R Pas de forme simplifiée Contrainte temporelle sur attribut Vérifier les tuples de R+ par rapport à ceux de R-

2. SGBD actifs et déclencheurs SGBD capable de réagir pour assurer les contrôles d'intégrité, la gestion des redondances, autoriser, interdire, alerter, déclencher. Conditions d'intervention Lors d'opérations licites ou illicites, à un instant donné, sous certaines conditions. Moyen par déclenchement ou interdiction d'une opération, par annulation d'une transaction (roolback).

Types de règles Règle de production (IA) : construction de la forme IF <Condition sur BD> THEN <Action sur BD> Exécution jusqu'à saturation de la condition (principe du point fixe). Règle de déclenchement : déclencheur (Trigger) Règle dite ECA (Evénement, Condition, Action) WHEN <Evénement> IF <Condition sur BD> THEN <Action sur BD> Modèle d'exécution variable (à préciser) Forme dégénérée EA (Evénement, Action) La condition peut toujours être définie dans l'action.

Composants d'un SGBD actif Analyseur de règles Moteur de règles Moniteur d'événements Exécuteur d'actions Evaluateur de conditions Dictionnaire de règles Deux approches possibles approche intégrée, approche sur-couche. Définitions Evaluateur Moteur Analyseur Exécuteur Moniteur d'événements Requêtes Noyau du SGBD BD active Dictionnaire

Composants d'un SGBD actif Analyseur de règles : saisie des règles sous une forme externe pour analyse puis intégration dans le dictionnaire de règles. Dictionnaire de règles : contient les règles sous un format interne au SGBD. Moteur de règles : détermine les règles à appliquer suite aux événements puis coordonne leur exécution après appel de l'exécuteur d'actions. Moniteur d'événements : détermine les événements primitifs et composites pour invocation du moteur de règles. Exécuteur d'actions : exécute les règles actives. Evaluateur de conditions : évalue les conditions des règles actives pour notification au moteur de règles.

Evénement Evénement Signal instantané daté, externe ou interne détecté par le SGBD. Type d'événement : peut correspondre au début (BEFORE) ou à la fin (AFTER) d'une recherche, à une mise à jour (UPDATE, DELETE, INSERT), à une transaction (BEGIN, ABORT, COMMIT), peut être interne ou externe au SGBD, etc. Instance d'événement : se produit à un instant donné. Paramètres d'un événement : valeur, objet, colonne, etc. Contexte d'un événement : structure nommée contenant les données nécessaire à l'évaluation des règles déclenchées par cet événement, dont ses paramètres.

Evénements simples et composés Evénement simple (primitif) Modification de données (Update, Insert, Delete). Recherche de données (Select). Début, validation, annulation de transactions (Begin, Commit, Abort). Evénement temporel absolu (Heure). Utilisateur (Appel de méthode). Evénement composé Composition d'événements simples par des opérateurs logiques ou/et temporels : ET, OU Séquence , THEN, N TIMES IN <Intervalle>, NOT IN <Intervalle> Temps relatif ou absolu Exemple (1H AFTER UPDATE) OR (AFTER INSERT THEN DELETE)

Typologie des événements simples

Condition du déclenchement C'est une qualification (également appelée condition de recherche (search condition)) portant sur les variables de contexte et/ou la base et donnant en résultat une valeur booléenne, ou un ensemble de tuples. Il faudra alors utiliser les prédicats EXIST, NOT EXIST, ou le compte des tuples résultats (COUNT). Le résultat peut être transmis à l'action dans le contexte. La condition est optionnelle en générale (règles EA).

Action Procédure exécutée lorsque la règle est déclenchée. Peut être : une opération sur la BD (requête SQL), une procédure agissant sur la base (L4G), une opération sur une transaction (Abort, Commit). L'action peut utiliser les paramètres du contexte du déclenchement. Elle peut être exécutée une fois ou pour chaque tuple satisfaisant la condition.

3. Grammaire des expressions en SQL3 Tous les objets (règles, contraintes, déclencheurs ...) sont nommés par un identificateur. Evénement simple déclenché suite à une requête : INSERT, UPDATE, DELETE peut être déclenché avant exécution d'une modification (BEFORE) ou après cette dernière (AFTER). La granularité de l'action peut être définie en ligne (exécuté pour chaque ligne modifiée), ou par requête (exécuté une fois pour l'événement).

Grammaire des expressions en SQL3 L'action peut référencer les valeurs avant et après mise à jour (clause REFERENCING…AS…). Peut remplacer la modification dont l'appel a provoqué l'événement (clause INSTEAD OF).

Syntaxe de création d'un déclencheur CREATE TRIGGER <nom_du_déclencheur> // événement (avec paramètres) {BEFORE | AFTER | INSTEAD OF} {INSERT | DELETE | UPDATE [OF <liste de colonnes>]} ON <table> [ORDER <valeur>] [REFERENCING {NEW|OLD| NEW_TABLE|OLD_TABLE} AS <nom>]... // condition (WHEN (<condition de recherche SQL>) // action <Procédure SQL3> // granularité [FOR EACH {ROW | STATEMENT}])

Quelques exemples (1) Déclencheur de contrôle d'intégrité référentielle // Ajout d'un abus CREATE TRIGGER InsertAbus BEFORE INSERT ON ABUS REFERENCING NEW AS N (WHEN NOT EXIST (SELECT * FROM Vins WHERE NV=N.NV )) THEN ABORT FOR EACH ROW) ; // Suppression d'un vin CREATE TRIGGER DeleteVins BEFORE DELETE ON VINS REFERENCING OLD AS O (DELETE FROM ABUS WHERE NV = O.NV FOR EACH ROW );

Exemple (2) Déclencheur de contrôle d'intégrité temporelle // un salaire ne peut que croître. // schéma de la table des employés. EMPLOYE (ID Int, Nom Varchar, Salaire Float) CREATE TRIGGER SalaireCroissant BEFORE UPDATE OF Salaire ON EMPLOYE REFERENCING OLD AS O, NEW AS N (WHEN O.Salaire > N.Salaire SIGNAL.SQLState '7005' (''Les salaires ne peuvent décroître")) ; FOR EACH ROW);

Exemple (3) Mise à jour automatique de colonnes déclenchée lors d'une mise à jour de la table. PRODUITS ( NP Int, NF Int, Coût Real, Auteur String, DateMaj Date) CREATE TRIGGER SetAuteurDate BEFORE UPDATE ON PRODUITS REFERENCING NEW_Table AS N (UPDATE N SET N.Auteur = USER, N.DateMaj = CURRENT DATE );

Exemple (4) // Création automatique d'une clé lors de l'insertion d'un tuple. // Dans cet exemple, il ne faut pas insérer plusieurs tuples en une // opération unique car il y aurait une clé d'accès unique pour // différents tuples. CREATE TRIGGER SetCleVins BEFORE UPDATE ON VINS REFERENCING NEW_TABLE AS N (UPDATE N SET N.NV = SELECT COUNT(*) +1 FROM VINS );

Exemple (5) Gestion de données agrégatives EMPLOYE (ID int, salaire float) CUMUL (ID int, Augmentation float) Déclencheur de mise à jour du salaire cumulé annuel. CREATE TRIGGER CumulSal AFTER UPDATE OF salaire ON EMPLOYE REFERENCING OLD AS a, NEW AS n (UPDATE CUMUL SET Augmentation = Augmentation + n.salaire - a.salaire WHERE ID = a.ID FOR EACH ROW );

4. Exécution des règles en SQL3 Elles sont exécutées suite à une modification produisant un événement déclenchant. Elles interfèrent avec les contraintes d'intégrité. Différents types de déclencheurs sont à considérer : BEFORE puis AFTER ROW ou STATEMENT

Exécution d'une modification // Exécution d'une modification d'une relation R Modification(R) { //R+ : tuple(s) à insérer dans R //R- : tuple(s) à supprimer dans R // Préparation des mises à jour de R dans R+ et R- ; // Conditions d'exécution des déclencheurs avant mise à jour (BEFORE) For each "déclencheur BEFORE d" do { Exécuter(d.Règle) }; // Contrôles d'intégrité if (Not Integre) then ABORT TRANSACTION ; // effectuer la mise à jour si respect du contrôle d'intégrité // R = (R - R-) È R+ ; // Conditions d'exécution des déclencheurs après mise à jour (AFTER) For each "déclencheur AFTER" do { Exécuter(d.Règle) } ; } ;

5. Algorithme d'exécution d'une règle // Exécution de la règle WHEN Condition Action FOR EACH <Option> Exécuter(Condition, Action, Option) { // Appliquer à chaque tuple si option ligne if Option = "FOR EACH ROW" then { for each tuple de R = R+ R- do { if (Condition(tuple) = True) then Exécuter (Action(tuple)) ; } if Option = "FOR EACH STATEMENT" then { if (Condition(R) = True) then Exécuter (Action(R) ; } } ;

Priorités et déclencheurs imbriqués Plusieurs déclencheurs peuvent être définis suite à un événement donné. Une priorité peut être associée à un événement dans un déclencheur : par l'utilisateur (clause ORDER), ou dans l'ordre de déclaration. Les déclencheurs peuvent être imbriqués Cas d'une mise à jour provoquant l'appel d'un déclencheur dont la mise à jour en déclenche un autre. Les contextes des déclencheurs sont empilés. Attention aux boucles Peuvent être valides (calcul de point fixe). En pratique, limiter les niveaux d'imbrication.

Déclencheurs et transactions Différents types de liaisons avec les transactions sont possibles pour que les conditions et/ou les actions pour les déclencheurs soient déclenchées après une transaction. Mode d'exécution du déclencheur immédiat : dès que l'événement se produit (IMMEDIAT) différé : en fin de transaction (DEFERRED) Mode de couplage du déclencheur dans la même transaction (mode COUPLED) dans une transaction indépendante (mode DECOUPLED) Mode de synchronisation du déclencheur synchrone (après) ou asynchrone (en parallèle) (mode SYNCHRONOUS)

Conclusion sur les déclencheurs Un système de règles supporte des événements simples de mise à jour; possibilité d'événements de recherche et d'événements complexes avec intervalles de temps. Supporte des conditions et actions exécutées avant le traitement naturel de l'événement, ou après, ou à sa place. Possibilité de reporter l'exécution en fin de transaction ou dans une transaction différente. La sémantique est souvent obscure : nécessité de point fixe, possibilité de boucles !