Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Contraintes et Triggers Chapitre 5, 5.7-5.8.

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) PL-SQL.
Les Systèmes de Gestion de Bases de Données (SGBD) Les vues.
Découverte de SQL Server par la pratique pour les administrateurs expérimentés Module 5 : Accès aux données Bertrand Audras Microsoft Technology Center.
OTB Analog module: Input configuration with TSX PREMIUM (TSXCPP110)
Vues.
Les technologies 3D appliquées à la formation aéronautique ETAT DE L ART et PERSPECTIVES.
1 Créer les Applications de BDs : SQL Imbriqué Witold Litwin.
INTEGRITE ET BD ACTIVES
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:
Faculté I&C, Claude Petitpierre, André Maurer Bases de données Javascript – SQL - LemanOS.
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,
Y and en Two little words with a lot of meaning. y.
10 Copyright © Oracle Corporation, Tous droits réservés. Autres concepts relatifs aux déclencheurs.
Cours VHDL Chap 3: sémantique VHDL
Mise en œuvre du langage MDX - 1 ère partie- Présentation de lexemple et des outils utilisés -1-
Langages du Web Sémantique
Les Webcasts Groupe des Utilisateurs SQL Server Avril 2014 – Statistiques Incrémentales Fred Pichaut – Microsoft Senior.
1 Développement des Applications des Bases de Données Chapitre 6, Sections
Cours N°2 Base de Données & Langage SQL
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.
Mise en œuvre du langage MDX
PLSQL ORACLE 8i Connecter VB à BD Oracle Les collections Question de révision Les blocs anonymes Les triggers REVISION Par : Joël Huot.
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections 15.5.
SQL: Contraintes et Triggers
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 CSI 2532 Lab5 Installation de JDBC Février 13, 2012.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Évaluation des Requêtes: Survol Chapitre 12.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Le Modèle Relationnel Chapitre 3.
1 CSI 2532 Lab2 20 Janvier 2012 Programmation SQL.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Gestion des Transactions: Survol Chapitre 16.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Gestion des Transactions: Survol Chapitre 16.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Développement des Applications des Bases de Données Chapitre 6, 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 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.
SQL partie3: Langage de définition des données
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
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Survol du Stockage et de lIndexage Chapitre 8.
SQL: Requêtes, Programmation et Triggers
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Développement des Applications des Bases de Données Chapitre 6.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections 15.5.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Calcul Relationnel Chapitre 4, Section 4.3.
SQL partie 3. SQL est un langage de définition de données SQL est un langage de définition de données (LDD), c'est-à-dire qu'il permet de créer des tables.
Modélisation des données Niveau conceptuel DON-2 V0-0.
Entrée en 6ème.  Transition from Primary School to Secondary School  New methods for new contents  Mandatory classes: French (common class + group),
Mise en œuvre du langage MDX
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
INTEGRITE ET BD ACTIVES
(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.
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.
Définition des contraintes Vérification des contraintes Triggers
PL/SQL Présentation.
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.
Le langage SQL.
Nicolas Ribot Introduction aux triggers Nicolas Ribot - Licence GNU FDL - Version 1.1.
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
Structured Query Language
6. PRODUCTION DU CODE DE LA BASE DE DONNEES
Définition des contraintes Vérification des contraintes Triggers
SQL: Contraintes et Triggers
Transcription de la présentation:

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Contraintes et Triggers Chapitre 5,

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke2 Contraintes Générales: CHECK Syntaxe: CHECK conditional-expression. Lexpression 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

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke3 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 ))

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke4 Contraintes CHECK: Exemples 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))) Contrainte: Les bateaux Interlake ne peuvent pas être réservés.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke5 Contraintes Générales: ASSERTION 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 quelle implique à la fois Sailors et Boats. Si Sailors est vide, le nombre de tuples de Boats peut être arbitraire, car lexpression conditionnelle nest pas requise dêtre satisfaite dans ce cas. Contrainte: le nombre de bateaux plus le nombre de navigateurs est < 100

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke6 Contraintes Générales: ASSERTION Lassertion nest associée avec aucune des tables impliquées. ASSERTION est la solution adéquate pour la raison ci haut. CREATE ASSERTION smallClub CHECK ( ( SELECT COUNT (S.sid) FROM Sailors S) + ( SELECT COUNT (B.bid) FROM Boats B) < 100 ) Contrainte: le nombre de bateaux plus le nombre de navigateurs est < 100

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke7 Contraintes Générales: Autres Exemples 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 dassignements à des projets pour chaque étudiant doit être dau plus 100%. Un TA doit avoir un cgpa plus élevé que celui de tout étudiant quil supervise. 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)

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke8 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 )

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke9 Contraintes Générales: Autres Exemples (2) Contrainte: Le pourcentage total dassignements à des projets pour chaque étudiant doit être dau 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)

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke10 Contraintes Générales: Autres Exemples (3) 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) Contrainte: Un TA doit avoir un cgpa plus élevé que celui de tout étudiant quil supervise.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke11 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é)

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke12 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.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke13 Triggers: Exemple (SQL:92) CREATE TRIGGER incr_count AFTER INSERT ON Sailors WHEN (new.age < 18) FOR EACH ROW BEGIN count:=count+1; END Illustre lusage de NEW pour referer à des tuples nouvellement insérés Existe depuis SQL:92 Incrémentez un compteur pour chaque navigateur nouvellement dont lage < 18.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke14 Triggers: Exemple (SQL:1999) 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 Stockez les navigateurs nouvellement insérés dont lage < 18 dans une table spéciale. Illustre lusage de NEW TABLE pour referer à un ensemble de tuples nouvellement insérés. Existe depuis SQL:1999

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke15 Triggers: Exemple plus Élaboré 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 Chaque fois que le cgpa dun étudiant est augmenté, Le cgpa de son TA doit aussi être augmenté pour être au moins aussi élevé que celui de létudiant. Illustre lusage de la syntaxe de PL/SQL en Oracle pour laction.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke16 Résumé SQL permet la spécification de contraintes dintégrité. Les triggers répondent aux changements dans la base de données.