Définition des contraintes Vérification des contraintes Triggers

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
Vues.
SGBD – Oracle Cours BD LF2 info
INTEGRITE ET BD ACTIVES
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:
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
LE LANGAGE SQL Langage de manipulation de données (LMD)
Initiation aux bases de données et à la programmation événementielle
L’utilisation des bases de données
1 LE LANGAGE DE REQUETES SQL Origines et Evolutions SQL1 86: la base SQL1 89: l'intégrité.
MODELE RELATIONNEL concept mathématique de relation
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
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
1 CSI 2532 Lab3 6 Février 2012 Programmation avancée SQL.
Cours 4b: Introduction au SQL, le langage des SGBD Relationnels
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.
Le langage de requêtes SQL
Créer des déclencheurs de base de données
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)
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
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.
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.
SQL : Langage de Manipulation des données
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.
Introduction  Langage propre à Oracle basé sur ADA  Offre une extension procédurale à SQL  PL/SQL permet d’utiliser un sous-ensemble du langage SQL.
Le Langage de Définition de Données LDD
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
13 Copyright © Oracle Corporation, Tous droits réservés. Gérer l'intégrité des données.
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
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 de Manipulation de Données LMD. 2 Les ordres SQL de manipulation INSERT –Insertion (ajout) de ligne(s) dans une table –Utiliser SQL*LOAD pour.
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
Cours n°2 Implémentation et exploitation
Bases de données – Cours 3
Le Langage de Manipulation de Données LMD Module 6.
SQL Partie 2. SQL est un langage de manipulation de données SQL est un langage de manipulation de données (LMD), cela signifie qu'il permet de sélectionner,
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.
Langages d’interrogation et de manipulation. N. ChaignaudGM4 - Base de données2 1. Algèbre relationnelle  Ensemble d’opérations permettant de manipuler.
LE LANGAGE DE REQUETES SQL
7 Contraintes d’intégrité en SQL
Définition des contraintes Vérification des contraintes Triggers
Transcription de la présentation:

Définition des contraintes Vérification des contraintes Triggers Intégrité des données Définition des contraintes Vérification des contraintes Triggers

1. Définition des contraintes Objectif : Détecter les mises à jour erronées et réagir soit en rejetant la transaction, soit en compensant les erreurs. Ceci suppose : un langage de définition de contraintes d'intégrité la vérification automatique de ces contraintes Avantages : simplification du code des applications sécurité renforcée par l'automatisation mise en commun et cohérence globale des contraintes

Typologie des contraintes CONTRAINTES STRUCTURELLES Contraintes de DOMAINE ex: le cru d'un vin est de type chaîne de caractères Contraintes d'ENTITE (unicité et non nullité) toute relation doit posséder au moins une clé et cette clé ne peut pas prendre de valeurs nulles Contraintes REFERENTIELLE ex: l'ensemble des valeurs de l'attribut ABUS.NV doit être inclus dans l'ensemble des valeurs de l'attribut VINS.NV CONTRAINTES COMPORTEMENTALES Contraintes générales liées à une application spécifique ex: la somme des quantités bues d'un vin doit être inférieure a la quantité produite de ce même vin

Typologie des contraintes comportementales (1) Domaine de variation Ex: le degré d'un vin ne peut être inférieur à 8 Contraintes multi-attributs (horizontales) Ex: le prix de vente d'un produit doit être supérieur à son coût de production Dépendance fonctionnelle Ex : CRU, ANNEE -------> DEGRE dans la relation VINS Contraintes temporelles Ex : le degré d'un vin ne peut pas décroître Contraintes agrégatives (verticales) Ex : la somme des quantités bues d'un vin doit être inférieure a la quantité produite de ce même vin

Typologie des contraintes comportementales (2) DEPENDANCE D'INCLUSION Concept de généralisation {valeurs d'un {groupe d'attributs x}} inclus dans {valeurs d'un {groupe d'attributs y}}  EXEMPLE : ENSEIGNANT.NOM inclus dans PERSONNE.NOM ENSEIGNANT ----g----> PERSONNE La dépendance référentielle est un cas particulier de dépendance d'inclusion {VALEURS DE X} inclus dans {VALEURS DE Y} et Y EST CLE EXEMPLE : ABUS.NV inclus dans VINS.NV

Association des contraintes Une contrainte d'intégrité peut être : Associée à un domaine Spécifiée au travers de la clause CREATE DOMAIN Associée à une relation Spécifiée au travers de la clause CREATE TABLE Dissociées Spécifiée au travers de la clause CREATE ASSERTION

Contraintes associées aux domaines CREATE DOMAIN <nom> <type> [valeur] [CONSTRAINT nom_contrainte CHECK (condition) ] Exemple: CREATE DOMAIN couleur_vins CHAR(5) DEFAULT 'rouge' CONSTRAINT couleurs_possibles CHECK (VALUE IN ('rouge', 'blanc', 'rosé'))

Contraintes associées aux relations CREATE TABLE <nom_table> (<def_colonne> * [<def_contrainte_table>*]) ; < def_colonne > ::= <nom_colonne> < type ½ nom_domaine > [CONSTRAINT nom_contrainte < NOT NULL ½ UNIQUE ½ PRIMARY KEY ½ CHECK (condition)½ REFERENCES nom_table (liste_colonnes) > ] [NOT] DEFERRABLE < def_contrainte_table > ::= CONSTRAINT nom_contrainte < UNIQUE (liste_colonnes)½ PRIMARY KEY (liste_colonnes)½ CHECK (condition)½ FOREIGN KEY (liste_colonnes) REFERENCES nom_table (liste_colonnes) >

Contraintes associées aux relations CREATE TABLE VINS ( NV INTEGER PRIMARY KEY, couleur COULEURS_VINS, cru VARCHAR(20), millesime DATE, degre CHECK (degre BETWEEN 8 AND 15) NOT DEFERRABLE, quantite INTEGER, CONSTRAINT dependance_fonctionnelle CHECK (NOT EXISTS (SELECT * FROM VINS GROUP BY cru,millesime HAVING COUNT(degre) > 1) NOT DEFERRABLE) ;

Contraintes référentielles FOREIGN KEY (liste_colonnes) REFERENCES nom_table (liste_colonnes) [ON DELETE {CASCADE ½ SET DEFAULT ½ SET NULL}] [ON UPDATE {CASCADE ½ SET DEFAULT ½ SET NULL}] [NOT] DEFERRABLE Les contraintes référentielles caractérisent toutes les associations Problème des contraintes référentielles croisées ==> mode DEFERRABLE En cas de violation de la contrainte, la mise à jour peut être rejetée ou bien une action de correction est déclenchée ==> ON DELETE spécifie l'action à effectuer en cas de suppression d'un tuple référencé ON UPDATE spécifie l'action à effectuer en cas de mise à jour de la clé d'un tuple référencé

Contraintes référentielles: exemple CREATE TABLE ABUS ( NB INTEGER NOT NULL, NV INTEGER NOT NULL, date DATE, qte QUANTITE, UNIQUE (NB, NV, date) CONSTRAINT référence_buveurs FOREIGN KEY NB REFERENCES BUVEURS (NB) ON DELETE CASCADE DEFERRABLE ) ;

Contraintes dissociées CREATE ASSERTION nom_contrainte CHECK (condition) Remarque: les contraintes dissociées peuvent être multi-tables Exemple: CREATE ASSERTION quantite_produite CHECK ( (SELECT SUM(quantite) FROM VINS) > ( SELECT SUM(quantite) FROM ABUS) )

2. Vérification des contraintes (1) Méthode par détection d'incohérence toute mise à jour m est exécutée sur la base D; l'état de la base D est changée en Dm ; si Dm est détecté incohérent, on doit restituer l'état D . Notion de post-test: A et A' sont des assertions A' est un post-test pour A et m ssi { D / A => Dm / A} <=> Dm / A' Difficultés : (i) trouver un A' plus simple à vérifier que A (ii) défaire la transaction en cas d'incohérence.

Vérification des contraintes (2) Méthode par prévention des incohérences une mise à jour m n'est exécutée que si l'état résultant de la base Dm est garanti être cohérent notion de pre-test A et A' sont des assertions A' est un pré-test pour A et m ssi {D / A => Dm / A} <=> D / A' problèmes: (i) Comment laisser passer les seules mises à jour permises ? (ii) Modifier la mise à jour en ajoutant condition : généralité ?

Vérification des contraintes (3) Exemple de vérification préventive PRE-TEST A' = Update(A) L'algorithme ajoute conjonctivement l'assertion A à la condition de la mise à jour. Exemple: SAL> SMIC UPDATE EMPLOYE SET SAL=SAL*0.9 WHERE NOM = 'RALEUR' Devient: AND SAL*0.9 > SMIC

Vérification des contraintes (4) * NOTION DE PRE-TESTS DIFFERENTIELS EXEMPLE : ABUS REFERENCE VINS PRE-TEST+ (ABUS) : ABUS+.NV = VINS.NV PRE-TEST- (ABUS) : RIEN PRE-TEST+ (VINS) : RIEN PRE-TEST- (VINS) : COUNT (ABUS.NV WHERE (ABUS.NV=VINS-.NV) = 0 TRES EFFICACE MAIS COMPLEXE A IMPLANTER TUPLES A = R + {PRETEST } + INSERER DANS R MISES ? A COMMIT JOUR SUR R TUPLES A = R - {PRETEST } - SUPPRIMER DE R MEM. CACHE DISQUE

Exemples de tests différentiels

3. Déclencheurs (Triggers) action ou ensemble d'actions déclenchée(s) automatiquement lorsqu'une condition se trouve satisfaite après l'apparition d'un événement Un déclencheur est une règle ECA Evénement = mise à jour d'une relation Condition = optionnelle, équivaut à une clause <WHERE> Action = exécution de code spécifique (requête SQL de mise à jour,exécution d'une procédure stockée, abandon d'une transaction, ...) De multiples usages sont possibles : contrôle de l'intégrité maintien de statistiques mise à jour de copies multiples, ...

Définition des triggers CREATE TRIGGER <nom-trigger> <événement> [<condition>] <action *> <événement> ::= BEFORE ç AFTER {INSERT ç DELETE ç UPDATE [OF <liste_colonnes>]} ON <nom_de_table> <condition> ::= [REFERENCING OLD AS <nom_tuple> NEW AS <nom_tuple>] WHEN <condition_SQL> <action> ::= {requête_SQL [FOR EACH ROW] ç exec_procédure ç COMMIT ç ROLLBACK}

Exemples de trigger CREATE TRIGGER degré_croissant BEFORE UPDATE OF degre ON VINS REFERENCING OLD AS old_vin NEW AS new_vin WHEN (new_vin.degre < old_vin.degre) ROLLBACK FOR EACH ROW CREATE TRIGGER référence_vins BEFORE DELETE ON VINS DELETE FROM ABUS WHERE ABUS.NV = VINS.NV

4. Conclusion Le modèle relationnel offre Problèmes difficiles : des contraintes d'intégrités riches des mécanismes de vérification efficaces Des mécanismes événementiels puissants Problèmes difficiles : Contraintes avec agrégats Triggers récursifs