SQL: Contraintes et 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
Créer une base de données MySQL Et création de tables, enregistrements, interaction avec PHP.
SQL - Subtilités.
Vues.
Fonctionnalités des SGBD
INTEGRITE ET BD ACTIVES
Faculté I&C, Claude Petitpierre, André Maurer Bases de données Javascript – SQL - LemanOS.
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
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
10 Copyright © Oracle Corporation, Tous droits réservés. Autres concepts relatifs aux déclencheurs.
Initiation aux bases de données et à la programmation événementielle
L’utilisation des bases de données
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
PLSQL ORACLE 8i Connecter VB à BD Oracle Les collections Question de révision Les blocs anonymes Les triggers REVISION Par : Joël Huot.
Le Modèle Relationnel Chapitre 3
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections 15.5.
Entreposage de Données et Aide à la Décision
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Le Modèle Relationnel Chapitre 3.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Contraintes et Triggers Chapitre 5,
Bases de Données II (Automne 2007)
Bases de Données Avancées - TP2: SQL
Bases de Données Avancées - TP2: SQL
Manipulation des données Requêtes simples
PL/SQL Noreddine GHERABI 1.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections 15.5.
1 CSI 2532 Lab3 6 Février 2012 Programmation avancée SQL.
OPTIMISATION DE BASE DE DONNEES ORACLE
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
Bases de données orientées objets Illustration sur ORACLE
Cours 4b: Introduction au SQL, le langage des SGBD Relationnels
 CREATE TABLE  DROP TABLE  ALTER TABLE  INSERT  UPDATE  DELETE  SELECT interrogation 2 Instruction de mise à jour structure.
Traduction des opérations sous MySQL
Créer des déclencheurs de base de données
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Créer des packages.
A L I M E N T A T I O N A G R I C U L T U R E E N V I R O N N E M E N T Réseau BD 11/12/08 Fonctionnalités et limites d’outils d’indexation et de recherche.
INTEGRITE ET BD ACTIVES
Transition Unit Personal Information Lesson 1
(Procedural Language / Structured Query Language)
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)
Les Contraintes.
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.
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Définition des contraintes Vérification des contraintes Triggers
PL/SQL Présentation.
Le Langage de Contrôle de Données 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.
Initiation aux bases de données et à la programmation événementielle
Nicolas Ribot Introduction aux triggers Nicolas Ribot - Licence GNU FDL - Version 1.1.
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Op é rateurs ensemblistes Module 4. 2 La clause GROUP BY La clause GROUP BY est nécessaire dès que l'on utilise des fonctions de calculs statistiques.
Introduction au langage PL/SQL
Bases de données – Cours 3
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.
Définition des contraintes Vérification des contraintes Triggers
SQL: Contraintes et Triggers
Transcription de la présentation:

SQL: Contraintes et Triggers Chapitre 5, 5.7-5.8 The slides for this text are organized into chapters. This lecture covers Chapter 5. Chapter 1: Introduction to Database Systems Chapter 2: The Entity-Relationship Model Chapter 3: The Relational Model Chapter 4 (Part A): Relational Algebra Chapter 4 (Part B): Relational Calculus Chapter 5: SQL: Queries, Programming, Triggers Chapter 6: Query-by-Example (QBE) Chapter 7: Storing Data: Disks and Files Chapter 8: File Organizations and Indexing Chapter 9: Tree-Structured Indexing Chapter 10: Hash-Based Indexing Chapter 11: External Sorting Chapter 12 (Part A): Evaluation of Relational Operators Chapter 12 (Part B): Evaluation of Relational Operators: Other Techniques Chapter 13: Introduction to Query Optimization Chapter 14: A Typical Relational Optimizer Chapter 15: Schema Refinement and Normal Forms Chapter 16 (Part A): Physical Database Design Chapter 16 (Part B): Database Tuning Chapter 17: Security Chapter 18: Transaction Management Overview Chapter 19: Concurrency Control Chapter 20: Crash Recovery Chapter 21: Parallel and Distributed Databases Chapter 22: Internet Databases Chapter 23: Decision Support Chapter 24: Data Mining Chapter 25: Object-Database Systems Chapter 26: Spatial Data Management Chapter 27: Deductive Databases Chapter 28: Additional Topics

Contraintes Générales: CHECK Syntaxe: CHECK conditional-expression. L’expression conditionnelle: Exprime une IC plus générale que les clés. Peut contenir des requêtes. Requiert d’être satisfait seulement lorsque la table associée est non vide. Peut être exprimée sur plusieurs tables; cependant elle est le plus souvent exprimée sur une seule table. Les contraintes CHECK peuvent être nommées: CONSTRAINT MyConstraint CHECK conditional-expression 8

Contraintes CHECK: Exemples Contrainte: Le niveau doit être entre 1 et 10 CREATE TABLE Sailors ( sid INTEGER, sname CHAR(10), rating INTEGER, age REAL, PRIMARY KEY (sid), CHECK ( rating >= 1 AND rating <= 10 )) 8

Contraintes CHECK: Exemples Contrainte: Les bateaux Interlake ne peuvent pas être réservés. CREATE TABLE Reserves ( sname CHAR(10), bid INTEGER, day DATE, PRIMARY KEY (bid,day), CONSTRAINT noInterlakeRes CHECK (`Interlake’ <> ( SELECT B.bname FROM Boats B WHERE B.bid=bid))) 8

Contraintes Générales: ASSERTION Contrainte: le nombre de bateaux plus le nombre de navigateurs est < 100 CREATE TABLE Sailors ( sid INTEGER, sname CHAR(10), rating INTEGER, age REAL, PRIMARY KEY (sid), CHECK ( (SELECT COUNT (S.sid) FROM Sailors S) + (SELECT COUNT (B.bid) FROM Boats B) < 100 ) Cette solution est compliquée, voire fausse: Elle est erronément associée seulement avec Sailors, bien qu’elle implique à la fois Sailors et Boats. Si Sailors est vide, le nombre de tuples de Boats peut être arbitraire, car l’expression conditionnelle n’est pas requise d’être satisfaite dans ce cas. 9

Contraintes Générales: ASSERTION Contrainte: le nombre de bateaux plus le nombre de navigateurs est < 100 CREATE ASSERTION smallClub CHECK ( (SELECT COUNT (S.sid) FROM Sailors S) + (SELECT COUNT (B.bid) FROM Boats B) < 100 ) L’assertion n’est associée avec aucune des tables impliquées. ASSERTION est la solution adéquate pour la raison ci haut. 9

Contraintes Générales: Autres Exemples Schéma: Students(sid: int, sname: string, age: int, cgpa: real) Works(sid: int, pid: int, pct_time: int) Projects(pid: int, budget: real, ta: int) Donnez une contrainte SQL (domaine, clé, clé étrangère, ou contrainte CHECK; ou assertions) pour les exigences suivantes: Les étudiants doivent avoir un cgpa minimum de 5. Chaque TA doit aussi être un étudiant. Le pourcentage total d’assignements à des projets pour chaque étudiant doit être d’au plus 100%. Un TA doit avoir un cgpa plus élevé que celui de tout étudiant qu’il supervise. 9

Contraintes Générales: Autres Exemples (1) Contrainte: Les étudiants doivent avoir un cgpa minimum de 5. CREATE TABLE Students ( sid INTEGER, sname CHAR(10), age REAL, cgpa REAL, PRIMARY KEY (sid), CHECK (cgpa >= 5)) Constraint: Chaque TA doit aussi être un étudiant. CREATE ASSERTION TAisStudent CHECK ( (SELECT COUNT (*) FROM Projects P WHERE P.ta_id NOT IN (SELECT sid FROM Students)) =0 ) 9

Contraintes Générales: Autres Exemples (2) Contrainte: Le pourcentage total d’assignements à des projets pour chaque étudiant doit être d’au plus 100%. CREATE TABLE Works ( sid INTEGER, pid INTEGER, pct_time INTEGER, PRIMARY KEY (sid,pid), FOREIGN KEY (sid) REFERENCES Students, FOREIGN KEY (pid) REFERENCES Projects, CHECK ((SELECT COUNT (W.stid) FROM Works W GROUP BY W.stid HAVING SUM(pct_time) > 100) = 0) 9

Contraintes Générales: Autres Exemples (3) Contrainte: Un TA doit avoir un cgpa plus élevé que celui de tout étudiant qu’il supervise. CREATE ASSERTION TAHigherCGPA CHECK ((SELECT COUNT(S.stid) FROM Students S, Students TA, Works W, Projects P WHERE S.sid=W.sid AND W.pid=P.pid AND P.ta=TA.sid AND S.cgpa > TA.cgpa) =0) 9

Triggers Trigger: procédure qui exécute automatiquement si des changements spécifiés surviennent dans la base de données. Il comportent trois partie: Événement (active le trigger) Condition (teste si le trigger devrait être exécuté) Action (ce qui survient si le trigger est exécuté)

Triggers BEFORE trigger: action exécuté avant que l’événement activant ne survienne. AFTER trigger: action exécuté après que l’événement activant ne survienne. INSTEAD trigger: action exécuté en lieu et place de l’événement activant. Trigger à exécution par ligne (Row-level trigger): exécuté une seule fois pour chaque tuple modifié (qui satisfait la condition du trigger). Trigger à exécution par commande (Statement-level trigger): exécuté une seule fois pour chaque commande. Variable de transition: NEW, OLD, NEW TABLE, OLD TABLE.

Triggers: Exemple (SQL:92) Incrémentez un compteur pour chaque navigateur nouvellement dont l’age < 18. CREATE TRIGGER incr_count AFTER INSERT ON Sailors WHEN (new.age < 18) FOR EACH ROW BEGIN count:=count+1; END Illustre l’usage de NEW pour referer à des tuples nouvellement insérés Existe depuis SQL:92

Triggers: Exemple (SQL:1999) Stockez les navigateurs nouvellement insérés dont l’age < 18 dans une table spéciale. CREATE TRIGGER youngSailorsUpdate AFTER INSERT ON Sailors REFERENCING NEW TABLE AS NewSailors FOR EACH STATEMENT /* This is the default */ INSERT INTO YoungSailors(sid, name, age, rating) SELECT sid, name, age, rating FROM NewSailors N WHERE N.age <= 18 Illustre l’usage de NEW TABLE pour referer à un ensemble de tuples nouvellement insérés. Existe depuis SQL:1999

Triggers: Exemple plus Élaboré Chaque fois que le cgpa d’un étudiant est augmenté, Le cgpa de son TA doit aussi être augmenté pour être au moins aussi élevé que celui de l’étudiant. CREATE TRIGGER bumpTAcgpa AFTER UPDATE ON Students WHEN OLD.cgpa < NEW.cgpa FOR EACH ROW BEGIN UPDATE Students S SET S.cgpa = NEW.cgpa WHERE S.cgpa < NEW.cgpa AND S.sid IN (SELECT P.ta FROM Students S1, Works W, Projects P WHERE S1.sid = NEW.sid AND S1.sid = W.sid AND W.sid = P.sid); END Illustre l’usage de la syntaxe de PL/SQL en Oracle pour l’action.

Résumé SQL permet la spécification de contraintes d’intégrité. Les triggers répondent aux changements dans la base de données.