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

Programme Introduction aux BD et aux SGBD Le modèle relationnel
INTEGRITE ET BD ACTIVES
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
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é.
SQL: Contraintes et Triggers
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Contraintes et Triggers Chapitre 5,
Bases de Données Avancées - TP2: SQL
INTEGRITE ET BD ACTIVES
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.
Le modèle relationnel Plan 1. Concepts descriptifs
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.
Définition des contraintes Vérification des contraintes Triggers
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.
Cours n°2 Implémentation et exploitation
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.
RAPPEL SUR LES BASES DE DONNÉES, LE SQL 1 er trimestre V1.0 06/01/2015.
1- Régles de normalisation 2ème partie : normalisation Modèle Conceptuel des Données 2- Les Formes Normales 3- Dépendances Fonctionnelles 4- Recap - Méthodologie.
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
SQL partie 5 1 LMD create – update – primary key secondary key.
Le langage de définition de données B.T.S. S.I.O – SI3 –
SQL : 4 fonctions d'exploitation de SGBD SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage informatique ayant pour.
SQL query - 1 / D. Berrabah SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes Agrégats et groupement.
1- phpMyAdmin 3ème partie : Manipulation des données Le langage SQL 2- Gérer les tables 3- Gérer les données.
SQL partie 1 Langage de Définition de Données. SQL est un langage de définition de données  SQL est un langage de définition de données (LDD), c'est-à-dire.
LE MODELE RELATIONNEL Inventé par T. Codd (IBM Recherche) Publication ACM Concepts pour la description 2. Concepts pour la manipulation 3. Concepts.
Chapitre 3: SQL-ORACLE. Concepts de SQL SQL est un langage d’interrogation de base de données relationnelles pour  Définir les données (LDD)  Interroger.
Intégration web & Base de données 1 Intégration Web & Base de DonnéesMariem Farhat Intérêt des bases de données pour le Web Cours préparé par : Mariem.
Les Bases de données Définition Architecture d’un SGBD
ملخص Initiation à la sgbdr
Structured Query Language SQL DDL
LE LANGAGE DE REQUETES SQL
Langage de manipulation de données (LMD)
Structured Query Language
Généralité sur les bases de données
Langage de Manipulation des Données LMD
SQL LID – INTERROGATIN DES DONNEES
Maria Berger - Maîtrise d'AES Algèbre relationnelle.
SQL LMD FICHE 4.6.
Manipulation D’Une Base De Données
Structure D’une Base De Données Relationnelle
Langage d’interrogation des Données LID
6. PRODUCTION DU CODE DE LA BASE DE DONNEES
Protection de l’information
I Copyright © 2004, Oracle. Tous droits réservés. Introduction.
2 Copyright © 2004, Oracle. Tous droits réservés. Restreindre et trier les données.
8 Copyright © 2004, Oracle. Tous droits réservés. Manipuler les données.
9 Copyright © 2004, Oracle. Tous droits réservés. Utiliser des instructions LDD pour créer et gérer des tables.
Préface Introduction Objectifs du chapitre I-2 Objectifs du cours I-3 Oracle10g I-4 Oracle Database 10g I-6 Oracle Application Server 10g I-7 Oracle Enterprise.
Remarque : Un nombre ou une lettre en gras fait référence à un chapitre entier ou à une annexe entière. A Affichage des dates par défaut 02-06, Ajouter.
3. LE LANGAGE SQL DML (2) Version 2 - Janvier 2012
1. LE LANGAGE SQL DDL Version 2 - Janvier Le langage SQL-DDL
7 Contraintes d’intégrité en SQL
Info Bases de données avancées
Langage SQL ENCG-Tanger Le Langage SQL (1) INTRODUCTION
Systèmes d’Information et Application
SQL: Contraintes et Triggers
1. LE LANGAGE SQL DDL Version 1 - Mai 2009 corrigé le 11/2/2011
Systèmes d’Information et Application
Systèmes d’Information et Application
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 TYPE 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 (types) CREATE TYPE <nom> <type> [valeur] [CONSTRAINT nom_contrainte CHECK (condition) ] Exemple: CREATE TYPE 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