INTEGRITE ET BD ACTIVES

Slides:



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

Programme Introduction aux BD et aux SGBD Le modèle relationnel
Calculs de complexité d'algorithmes
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
SQL - Subtilités.
Fonctionnalités des SGBD
Algèbre relationnelle
1 Efficient Data and Program Integration Using Binding Patterns Ioana Manolescu, Luc Bouganim, Francoise Fabret, Eric Simon INRIA.
Optimisation de Requêtes
LE MODELE RELATIONNEL INVENTE PAR T. CODD (IBM SAN-JOSE)
SGBDR : LA GESTION DES VUES
Georges Gardarin 1 LE LANGAGE DE REQUETES SQL l Origines et Evolutions l SQL1 86: la base l SQL1 89: l'intégrité l SQL2 92: la nouvelle norme l SQL3 98:
Initiation aux bases de données et à la programmation événementielle
Les fonctions.
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 requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Les contraintes d’integrité
LMD: Langage de Manipulation de Données
Développement d’applications web
Contrôles d'accès aux données
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
le profil UML en temps réel MARTE
Initiation aux bases de données et à la programmation événementielle
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
L’utilisation des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
1 LE LANGAGE DE REQUETES SQL Origines et Evolutions SQL1 86: la base SQL1 89: l'intégrité.
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)
Bases de Données Avancées - TP2: SQL
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
ASI 3 Méthodes numériques pour l’ingénieur
Limiter et trier des données
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
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.
Modélisation des données Niveau conceptuel DON-2 V0-0.
Gérer la sécurité des mots de passe et les ressources
Le langage de requêtes SQL
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Optimisation de requêtes
INTEGRITE ET BD ACTIVES
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.
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.
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.
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
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.
Transcription de la présentation:

INTEGRITE ET BD ACTIVES 1. Contraintes d ’intégrité 2. Qu'est-ce-qu'un SGBD actif ? 3. Les règles ECA 4. Règles en SQL3 5. Les mécanismes d'exécution 6. Principaux SGBD actifs

1. Contraintes d ’intégrité Garder les bases cohérentes Vérifier les données lors des chargements Vérifier les données lors des mises à jour Répercuter certaines mises à jour entre tables Gérer les références inter-tables C'est essentiel : Une BD non cohérente est peu utile !

Contraintes structurelles Contrainte structurelle (Structural constraint) Contrainte d'intégrité spécifique à un modèle exprimant une propriété fondamentale d'une structure de données du modèle. Les contraintes structurelles sont généralement statiques. Pour le modèle relationnel, elles permettent d'exprimer explicitement certaines propriétés des relations et des domaines des attributs.

Principales contraintes structurelles Unicité de 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.

Contrainte non structurelle Contrainte de comportement (Behavioral constraint) Contrainte d'intégrité exprimant une règle d'évolution que doivent vérifier les données lors des mises à jour. Les 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, et ceci indépendamment des valeurs des autres attributs Z de la relation R. BUVEURS (NOM, CRU, SPORT) NOM ->> CRU | SPORT

Autres dépendances Les dépendances d'inclusion. Généralise les contraintes référentielles. Les contraintes temporelles. Elles permettent de comparer l'ancienne valeur d'un attribut à la nouvelle après mise à jour. Les contraintes équationnelles. Il s'agit là de comparer deux expressions arithmétiques calculées à partir de données de la base et de forcer l'égalité ou une inégalité. Exemple : gestion de stocks.

Syntaxe 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 010180 AND 311299, QUANTITE SMALLINT DEFAULT 1, PRIMARY KEY(NB, NV, DATE), FOREIGN KEY NB REFERENCES BUVEURS, CHECK (QUANTITE BETWEEN 1 AND 100) )

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 CREATE ASSERTION <nom de contrainte> [{ BEFORE COMMIT | AFTER {INSERT|DELETE|UPDATE[OF(Attribut+)]} ON <Relation> }...] CHECK <Condition> [FOR [EACH ROW OF] <Relation>]

Quelques exemples CREATE ASSERTION MINDEGRÉ BEFORE COMMIT CHECK (SELECT MIN(DEGRÉ) FROM VINS > 10) FOR VINS ; CREATE ASSERTION SOMMEQUANTITÉBUE CHECK (SELECT SUM(QUANTITE) FROM ABUS GROUP BY NB) < 100 FOR ABUS.

Analyse des contraintes Les contraintes sont-elles cohérentes entre-elles ? Les contraintes ne sont-elles pas redondantes ? ce sont là des problèmes de logique (résolution !) Quelles contraintes doit-on vérifier suite à une insertion, une suppression, une mise à jour d'une table ? détermination d ’étiquettes de vérification Est-il possible de simplifier les contraintes de sorte à faciliter le contrôle ?

Quand vérifier une contrainte ? Toute contrainte affirmant l'existence d'un tuple dans une relation R doit être étiquettée (R, DELETE). Toute contrainte vraie pour tous les tuples d'une relation R doit être étiquettée (R,INSERT). Toute contrainte étiquettée (R,DELETE) ou (R,INSERT) doit être étiquettée (R,MODIFY).

Utilisation de relations différentielles La transaction t fait passer R de l'état R à l'état Rt comme suit : Rt := (R - R-) È R+. Test différentiel (Differential test) Contrainte d'intégrité simplifiée à vérifier à priori après une opération sur R afin de garantir la satisfaction de la contrainte après application de l'opération.

Quelques tests différentiels

2. SGBD ACTIFS SGBD capable de réagir afin de contrôler l'intégrité, gérer les redondances, autoriser, interdire, alerter, déclencher. Quand ? lors d'opérations illicites lors d'opérations licites à un instant donné sous certaines conditions Comment ? en déclenchant une opération en interdisant une opération en annulant la transaction

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

Types de règles Règles de production (IA) Déclencheur (Trigger) ECA IF <Condition sur BD> THEN <Action sur BD> Exécution jusqu'à saturation (point fixe) Déclencheur (Trigger) ECA WHEN <Événement> IF <Condition sur BD> THEN <Action sur BD> Modèle d'exécution variable (à préciser) Forme dégénérée EA La condition peut toujours être dans l'action

Événement Événement signal instantané daté, externe ou interne détecté par le SGBD type d'événement : interne, externe, opération, temps, etc. instance d'événement : à un temps donné paramètres : valeur, objet, colonne, etc. contexte : structure nommée contenant les données nécessaire à l'évaluation de la règle, dont les paramètres

Typologie des événements simples

Événements simples et composés Événement simple (primitif) Modification de données (Update, Insert, Delete) Recherche de données (Select) Début, validation, annulation de transactions (Begin, Commit, Abort) Temporel (Heure) Utilisateur (Appel de méthode) Évé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)

Condition Qualification portant sur la base et donnant en résultat soit une valeur booléenne soit un ensemble de tuples Des variables de contexte de l'événement peuvent être utilisées Des résultats peuvent être passés à l'action dans le contexte Optionnelle en générale (règles EA)

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

3. EXPRESSION EN SQL3 Tous les objets (règles, contraintes, ...) sont nommés Événement simple : INSERT, UPDATE, DELETE Déclenchement avant (BEFORE) ou après (AFTER) Granularité ligne (exécuté pour chaque ligne modifiée) ou requête (exécuté une fois) Peut référencer les valeurs avant et après mise à jour Peut remplacer la mise à jour (INSTEAD OF)

Syntaxe CREATE TRIGGER <nom> // é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) Contrôle d'intégrité 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 vins CREATE TRIGGER DeleteVins BEFORE DELETE ON VINS REFERENCING OLD AS O (DELETE FROM ABUS WHERE NV = O.NV FOR EACH ROW );

Exemple (2) Contrôle d'intégrité temporelle 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écroitre')) ;

Exemple (3) Mise à jour automatique de colonnes 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 de clé CREATE TRIGGER SetCléVins 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 redondantes EMPLOYE (ID int, salaire float) CUMUL (ID int, Augmentation float) Déclencheur de mise à jour du salaire CREATE TRIGGER 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. EXECUTION DES REGLES 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 à considérer : BEFORE puis AFTER ROW ou STATEMENT

Algorithme de modification // Exécution d'une modification d'une relation R Modification(R) { Préparer les mises à jour de R dans R+ et R- ; // Exécuter les déclencheur avant mise à jour (BEFORE) For each "déclencheur BEFORE d" do { Exécuter(d.Règle) } ; // Effectuer les contrôles d'intégrité, puis la mise à jour If (Not Integre) then ABORT TRANSACTION ; // effectuer la mise à jour R = (R - R-) È R+ ; // Exécuter les déclencheurs après mise à jour (AFTER) For each "déclencheur AFTER" do { Exécuter(d.Règle) } ; } ;

Exécution d'une règle // Exécution d'une 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 t de R = R+ R- do { if (Condition(t) = True) then Exécuter (Action(t)) ; } if Option = "FOR EACH STATEMENT" then { if (Condition(R) = True) then Exécuter (Action(R) ; } } ;

Priorités et Imbrications Déclencheurs multiple suite à un même événement La priorité est prise en compte (clause ORDER) Sinon l'ordre de déclaration Les déclencheurs peuvent être imbriqués Cas d'une mise à jour déclenchant un déclencheur dont la mise à jour déclenche un autre déclencheur Les contextes des déclencheurs sont empilés Attention aux boucles Peuvent être valides (calcul de point fixe) En pratique, limitation du niveau d'imbrication

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

5. CONCLUSION Un système de règles supporte des événements simples de mise à jour; possibilité d'événement de recherche et d'événements complexes avec intervalles Supporte des conditions et actions exécutées avant le traitement naturel de l'événement, ou après, ou en 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 !