Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf ·...

299
1 Systèmes de Gestion de Bases de Données Nicolas Anciaux [email protected] Ressources web pour ce cours www-smis.inria.fr/~anciaux/ENSTA/ASI13

Transcript of Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf ·...

Page 1: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

1

Systèmes de Gestion

de Bases de Données

Nicolas Anciaux – [email protected]

Ressources web pour ce cours

www-smis.inria.fr/~anciaux/ENSTA/ASI13

Page 2: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

2

Objectifs du module

• Pré requis: connaissances de base (IN206)

– Conception de BD : modèle entité association, modèle relationnel

– Programmation SGBD : SQL, programmation SQL

– Propriétés transactionnelles : Concurrence d’accès

• Objectifs des sessions

– Connaissance générales (culture)

• Raison d’être d’un SGBD

• Fonctionnalités : indépendance physique/logique, vues, langage de

manipulations, cohérence (contraintes d’intégrité et triggers), standards…

– Connaissances avancées

• Optimisation de requêtes

• Droits d’accès

• Tolérance aux pannes

• Audit des accès

• Chiffrement et anomymisation des données

Page 3: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

3

1

2

Planning des sessions

– Approche bases de données et fonctionnalités essentielles d’un SGBD

– Conception de bases de données: modèle entité associations

– Modèle relationnel et Algèbre relationnelle

– Exercices de conception et d’algèbre

– Le langage SQL et programmation SQL

– L’optimisation de requêtes

– Création de base de données relationnelle en SQL (Oracle XE)

– Expériences sur l’optimisation de questions

– Contraintes d’intégrité

– Triggers SQL et PL/SQL

– Déclaration SQL de contraintes d’intégrité et triggers SQL3

– Politique de contrôle d'accès

– Modèles DAC-SQL, RBAC, MAC

– Bases de données privées virtuelles (Oracle VPD), Sécurité multi-niveau (Oracle Label Security)

– Expériences d'implantation de droits d'accès, principe du moindre privilège

– Tolérance aux pannes, algorithmes de journalisation et de reprise

– Audit des accès : triggers d’audit et outils internes au SGBD

– Expériences mettant en évidence les techniques de tolérance aux pannes

– Outils d’audit disponibles sur Oracle XE

– Place de la cryptographie dans la sécurité d'un SGBD

– Chiffrement de données et anonymat dans un SGBD

– Utilisation des outils cryptographiques disponibles sur OracleXE

Examen

Rappel:

(1h30)

TD: (2h)

Rappel:

Cours:

TD:

Cours:

TD:

Cours:

TD:

Cours:

TD:

Cours:

TD:

4

5

6

7

3

2/11

7/11

14/11

6/12

7/12

8/12

12/12

Page 4: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

4

Compétences à acquérir

• Concevoir une base de données

– Réaliser un modèle conceptuel avec le modèle E/A

– Concevoir un modèle relationnelle de base de données

• Créer une application base de données

– Ecrire des requêtes SQL d’interrogation/mise à jour

– Interfacer un programme Java/JDBC avec une base de données

– Ecrire et invoquer des fonctions et procédure stockées en PL/SQL Oracle

– Implanter des triggers sur une base de données en PL/SQL Oracle

• Administrer une base de données en vue d’optimiser les performances

– Optimiser une base de données multi utilisateurs (gestion de la concurrence)

– Créer des index

– Réécrire des requêtes SQL pour obtenir un plan d’exécution plus performant

• Administrer une base en vue d’en assurer la sécurité

– Créer des utilisateurs/rôle et des droits d’accès (DAC-SQL, RBAC-SQL)

– Implanter une stratégie de tolérance aux pannes

– Auditer les accès

– Chiffrer des données sensibles

Page 5: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

5

L’approche bases de données

Fonctionnalités logicielles principales

Page 6: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

6

L’approche ‘‘Bases de données’’ (1)

• Modélisation des données

Éliminer la redondance de données

Centraliser et organiser correctement les données

Plusieurs niveaux de modélisation

Outils de conception

• Logiciel «Système de Gestion de Bases de Données»

Factorisation des modules de contrôle des applications

- Interrogation, cohérence, partage, gestion de pannes, etc…

Administration facilitées des données

Page 7: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

7

L’approche ‘‘Bases de données’’ (2)

BD VIII - Concurrence

d’accès

VII - Gestion des

pannes

I- Indépendance

Physique

IX - Gestion de la

confidentialité

II- Indépendance

Logique

VI - Gestion de la

cohérence

X - Standards

V - Optimisation des

questions

III – Langage de

manipulation

IV - Gestion des

vues

Page 8: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

8

I - Indépendance Physique

• Indépendance des programmes d'applications

vis à vis du modèle physique :

– Possibilité de modifier les structures de stockage

(fichiers, index, chemins d'accès, …) sans modifier les

programmes;

– Ecriture des applications par des non-spécialistes des

fichiers et des structures de stockage;

– Meilleure portabilité des applications et indépendance

vis à vis du matériel.

Page 9: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

9

II - Indépendance Logique

Les applications peuvent définir des vues logiques de la BD

Intérêt: dév. d’app. simplifié, intégration app., évolutivité BD…

Gestion des médicaments Cabinet du Dr. Masse

Nombre_Médicaments

Id-M Nom Description Nombre

1 Aspegic 1000 …………………………….. 30

2 Fluisédal …………………………….. 20

3 Mucomyst …………………………….. 230

…. …….. …………………………….. …..

Visites

Id-D Id-P Id-V Date Prix

2 2 3 13 juillet 350

2 3 4 1 mars 250

Visites

Id-D Id-P Id-V Date Prix

2 2 3 13 juillet 350

2 3 4 1 mars 250

Patients

Id-P Nom Prénom Ville

1 Lebeau Jacques Paris

2 Troger Zoe Evry

3 Doe John Paris

4 Perry Paule Valenton

…. ……. ……. …….

Patients

Id-P Nom Prénom Ville

1 Lebeau Jacques Paris

2 Troger Zoe Evry

3 Doe John Paris

4 Perry Paule Valenton

…. ……. ……. …….

Prescriptions

Id-V Ligne Id-M Posologie

1 1 12 1 par jour

1 2 5 10 gouttes

2 1 8 2 par jour

2 2 12 1 par jour

2 3 3 2 gouttes

…. …. …. …………

Prescriptions

Id-V Ligne Id-M Posologie

1 1 12 1 par jour

1 2 5 10 gouttes

2 1 8 2 par jour

2 2 12 1 par jour

2 3 3 2 gouttes

…. …. …. …………

Médicaments

Id-M Nom Description

1 Aspegic 1000 ……………………………..

2 Fluisédal ……………………………..

3 Mucomyst ……………………………..

…. …….. ……………………………..

Médicaments

Id-M Nom Description

1 Aspegic 1000 ……………………………..

2 Fluisédal ……………………………..

3 Mucomyst ……………………………..

…. …….. ……………………………..

Docteurs

Id-D Nom Prénom

1 Dupont Pierre

2 Durand Paul

3 Masse Jean

…. …….. ……

Docteurs

Id-D Nom Prénom

1 Dupont Pierre

2 Durand Paul

3 Masse Jean

…. …….. ……

Visites

Id-D Id-P Id-V Date Prix

1 2 1 15 juin 250

1 1 2 12 août 180

2 2 3 13 juillet 350

2 3 4 1 mars 250

Visites

Id-D Id-P Id-V Date Prix

1 2 1 15 juin 250

1 1 2 12 août 180

2 2 3 13 juillet 350

2 3 4 1 mars 250

Patients

Id-P Nom Prénom Ville

1 Lebeau Jacques Paris

2 Troger Zoe Evry

3 Doe John Paris

4 Perry Paule Valenton

…. ……. ……. …….

Patients

Id-P Nom Prénom Ville

1 Lebeau Jacques Paris

2 Troger Zoe Evry

3 Doe John Paris

4 Perry Paule Valenton

…. ……. ……. …….

Prescriptions

Id-V Ligne Id-M Posologie

1 1 12 1 par jour

1 2 5 10 gouttes

2 1 8 2 par jour

2 2 12 1 par jour

2 3 3 2 gouttes

…. …. …. …………

Prescriptions

Id-V Ligne Id-M Posologie

1 1 12 1 par jour

1 2 5 10 gouttes

2 1 8 2 par jour

2 2 12 1 par jour

2 3 3 2 gouttes

…. …. …. …………

Médicaments

Id-M Nom Description

1 Aspegic 1000 ……………………………..

2 Fluisédal ……………………………..

3 Mucomyst ……………………………..

…. …….. ……………………………..

Médicaments

Id-M Nom Description

1 Aspegic 1000 ……………………………..

2 Fluisédal ……………………………..

3 Mucomyst ……………………………..

…. …….. ……………………………..

Page 10: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

10

III - Manipulation aisée

• La manipulation se fait via un langage déclaratif

– La question déclare l’objectif sans décrire la méthode

– Le langage suit une norme commune à tous les SGBD

– SQL : Structured Query Langage

• Syntaxe (aperçu !)

Select <Liste de champs ou de calculs à afficher>

From <Liste de relations mises en jeu>

Where <Liste de prédicats à satisfaire>

Group By <Groupement éventuel sur un ou plusieurs champs>

Order By <Tri éventuel sur un ou plusieurs champs>

Page 11: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

11

IV – Gestion des vues

• Les vues permettent d’implémenter l’indépendance

logique en permettant de créer des objets virtuels

• Vue = Question SQL stockée

• Le SGBD stocke la définition et non le résultat

– Le SGBD transforme la question sur les vues en question

sur les relations de base

– Les mises à jours sont reportées sur les relations de base

• Exemple : la vue des patients parisiens

Create View Parisiens as (

Select Id, Nom, Prénom, Ville

From Patients

Where Patients.Ville = ’Paris’ )

Page 12: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

12

V – Exécution et Optimisation

• Traduction automatique des questions déclaratives

en programmes procéduraux :

Utilisation de l’algèbre relationnelle

• Optimisation automatique des questions

Utilisation de l’aspect déclaratif de SQL

Gestion centralisée des chemins d'accès (index,

hachages, …)

Techniques d’optimisation poussées

• Economie de l'astuce des programmeurs

– milliers d'heures d'écriture et de maintenance de logiciels.

Page 13: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

13

VI - Intégrité Logique

• Objectif : Détecter les mises à jour erronées

• Contrôle sur les données élémentaires

– Contrôle de types: ex: Nom alphabétique

– Contrôle de valeurs: ex: Salaire mensuel entre 5 et 50k€

• Contrôle sur les relations entre les données

– Contraintes structurelle (modèle relationnel)

• Clé primaire, clé étrangère

– Relations entre données élémentaires:

• Prix de vente > Prix d'achat

– Relations entre objets:

• Un électeur doit être inscrit sur une seule liste électorale

Page 14: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

14

VII - Intégrité Physique

• Motivations : Tolérance aux fautes – Transaction Failure : Contraintes d'intégrité, Annulation

– System Failure : Panne de courant, Crash serveur ...

– Media Failure : Perte du disque

– Communication Failure : Défaillance du réseau

• Objectifs : – Assurer l'atomicité des transactions

– Garantir la durabilité des effets des transactions commises

• Moyens : – Journalisation : Mémorisation des états successifs des

données

– Mécanismes de reprise

Page 15: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

15

VIII – concurrence d’accès

BD

• Le SGBD gère les accès concurrents

Chacun à l’impression d’être seul (Isolation)

Cohérence conservée (Verrouillage)

Page 16: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

16

IX – Confidentialité: droits sur les vues

Id-E Nom Prénom Poste Adresse Ville Salaire

1 Ricks Jim 5485 ………. Paris 230

2 Trock Jack 1254 ………. Versailles 120

3 Lerich Zoe 5489 ………. Chartres 380

4 Doe Joe 4049 ………. Paris 160

Id-E Nom Prénom Poste

1 Ricks Jim 5485

2 Trock Jack 1254

3 Lerich Zoe 5489

4 Doe Joe 4049

Nombre

d’employés

Masse

Salariale

4 890

Employés

Service des

ressources

humaines

Public

Page 17: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

17

X - Standardisation

• L’approche bases de données est basée sur plusieurs

standards

– Langage SQL (SQL1, SQL2, SQL3)

– Communication SQL CLI (ODBC / JDBC)

– Transactions (X/Open DTP, OSI-TP)

• Force des standards

– Portabilité

– Interopérabilité

– Applications multi sources…

Page 18: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

18

Conception de bases de données

(Production du modèle conceptuel de

données)

Page 19: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

19

Réel

Modèle

conceptuel

• Indépendant du

modèle de

données

• Indépendant du

SGBD

Modèle

logique

•Dépendant du

modèle de

données

• Indépendant du

SGBD

Codasyl Relationnel Objet XML

Modèle

Physique

•Dépendant du

modèle de

données

•Dépendant du

SGBD

• Organisation physique des données

• Structures de stockage des données

• Structures accélératrices (index)

Modélisation du réel

Médecin effectue Visite

Page 20: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

20

GENERATION AUTOMATIQUE POSSIBLE !

Approche proposée

1/ Définir l’application (~MCT)

– Que veut-on faire exactement, définir les sorties (états)

2/ Définir les données (~MCD)

– quelles sont les données nécessaires ? Comment les organiser ?

3/ Définir les questions nécessaires pour l’application (~MLT)

4/ Validation : Est ce que la structure choisie permet de

répondre aux questions ? Sinon, retour en 1/ ou 2/

5/ Passer du MCD au MLD

6/ Définir les requêtes nécessaires pour l’application (~MPT).

Normalement, le MLD doit permettre de répondre aux

requêtes ?

7/ Passer du MLD au MPD

Page 21: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

21

Modèle Entités-Associations

Page 22: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

22

Déf° (1) : entité / type d’entité

• Entité : représentation d’un objet du monde réel …

… par rapport au problème à modéliser. Une entité peut donc être …

… concrète : ex. un docteur, un médicament, un client

… abstraite : ex. une visite médicale, une commande

• Type d'entité : représentation d'un ensemble d'entités perçues comme similaires et ayant les mêmes caractéristiques

– Ex. docteurs, patients, médicaments, clients, visites, commandes

Profs

Bouganim

Luc

.....

Profs

Crenn

Isabelle

....

Entités Type d'entité

Nom

Prénom

Adresse

Profs

Page 23: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

23

Déf° (2) : association / type d’association

• Association : représentation d'un lien non orienté entre plusieurs entités

(qui jouent un rôle déterminé).

– Ex. Un prof enseigne un cours

– lien non orienté : un prof enseigne un cours un cours est enseigné par

un prof.

• Type d'association : représentation d'un ensemble d'associations

ayant la même sémantique et les mêmes caractéristiques

– Ex. enseigner

• Question : quid de visite : entité ou association ???

– Un docteur visite un patient association

– Un docteur effectue une visite concernant un patient

– Différence ? Et clients - commandes - produits ?

Page 24: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

24

Déf° (3) : Propriétés / Identifiants

• Propriété : donnée élémentaire permettant de décrire une entité ou une

association – Le nom du patient, la date de la visite, l’adresse du patient

• Identifiant d’entité : Une entité est identifiée de manière unique par au moins une propriété (généralement une)

– Ex. n° de sécurité sociale du patient, référence d’un produit

• Identifiant d’association : il n’existe pas

– On peut identifier une association par l’ensemble des identifiants des entités associées

– Ex. pour enseigne : Code du prof, Code du cours

Page 25: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

25

Exemple : Profs et cours...

CodeProf

Nom

Prénom

Adresse

CodeCours

NomCours

enseigne

NbreHeures

Profs

3

Lewis

Jerry

....

Profs

1

Crenn

Isabelle

....

Profs

2

Bouganim

Luc

.....

Cours

1

Maths

.....

Cours

2

Info

s

...

enseigne

55

enseigne

16

enseigne

24

Cours Prof

Page 26: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

26

Déf°(4) : Cardinalités

• Cardinalité : Exprime le nombre minimum et maximum

d’association(s) par entité. Il est indiqué sur chaque arc,

entre le type d’entité et le type d’association concernées

• Pour un prof donné, combien d’enseignements ?

– Au minimum : Min=0

– Au maximum : Max=n

Un prof enseigne de 0 à n cours

• Pour un cours donné, combien d’enseignements ?

– Au minimum : 0

– Au maximum : 1

– Un cours est enseigné par 0 à 1 prof

0,n

0,1

Profs Cours enseigne

Profs Cours enseigne

Page 27: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

27

27

Règles (1) : respect des règles de gestion

• Il faut vérifier que le MCD correspond bien au ‘réel’,

c’est à dire aux règles fixées (celles que l’application

doit respecter)

• par exemple:

– un prof enseigne plusieurs cours

– une matière est enseignée par plusieurs profs (info/anglais)

– les notes peuvent être données par n’importe quel prof ou

par plusieurs profs enseignant une matière... (info par

exemple)

– On peut redoubler une fois....

– etc...

Page 28: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

28

28 Règles (2) : propriétés élémentaires,

calculées, constantes

• Toute propriété doit être élémentaire – sinon, complexité de traitement

– Ex. de propriétés élémentaires : Age, Salaire, N° de rue

– Ex. de propriétés non élémentaires : Adresse (complète), N°SS

– la notion d’élémentaire dépend de l’application. L’adresse peut devenir élémentaire si elle est toujours manipulée comme telle (on ne cherchera jamais à faire, par exemple, un tri par ville)

« Il n’est pas gênant d’éclater des propriétés qui devrait être groupés, mais on ne peut pas grouper des propriétés qui devrait être éclatées»

• Une propriété calculée n’est pas à stocker ! – Sinon, c’est redondant source d’incohérence

• Une propriété constante n’est pas à stocker – Sinon, c’est redondant source d’incohérence

– On utilisera une table de constantes ...

Page 29: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

29

29

Règles (3) : propriétés répétitives

• Pour une entité, il ne peut y avoir qu’une instance de chaque propriété de l’entité – exemple: Cours ne peut être une propriété de Prof, puisqu’un prof

enseigne plusieurs cours...

– Remarque : Si un prof ne peut enseigner qu’un seul cours, cours peut être une propriété de prof

• Attention aux propriétés n’ayant pas le même nom mais la même sémantique – Ex. : Enfant1, Enfant2, Enfant3 (cf. Slide 16)

– Ex. : différents types de notes d’un étudiant

• Remarque : pour éviter d’éventuelles erreurs, on nommera différemment des propriétés de différentes entités : – Ex. NomPatient, NomDocteur, etc.

– Du coup une propriété n’apparaît que dans une seule entité ou association.

Page 30: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

30

30

Règles (4) : propriétés sans signification

• Une propriété ne peut être sans signification pour une

partie des entités ou associations

– exemple : si un prof ne peut enseigner qu’un seul cours,

mais qu’on a choisi de créer une entité ‘personnel’ et non

‘prof’, on ne stockera pas le cours dans l’entité ‘personnel’

car il serait sans signification pour une secrétaire...

– contre exemple : Téléphone et Fax pour un étudiant...

Page 31: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

31

31

Règles (5) : identifiants d’entités

• Toute entité doit être identifiée !

• Un identifiant doit être pérenne. Ex. nom et prénom

peut être l’identifiant de l’étudiant, mais ça peut être

insuffisant.

– il ne faut pas concevoir le MCD en observant les données

telles qu’elles sont (ex. l’école tel qu’elle est). Il faut le

concevoir pour le cas à modéliser (ex. l’école telle qu’elle

peut être.... et telle que l’on se propose de la gérer.... )

• Plusieurs identifiants peuvent coexister

– En choisir un…

• Si vous ne trouvez aucun identifiant, votre « entité »

est sans doute une association …

Page 32: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

32

32 Règles (6) : dépendance pleine

de l’identifiant • Toute propriété doit dépendre pleinement de l’identifiant

(et non d’une partie de celui-ci)

– Sinon on introduit des redondances

• Les propriétés d’une association doivent dépendre de la

totalité des entités associées

– Sinon, les déplacer, voire créer une nouvelle association…

• Exemple :

Prof Groupe

Cours

enseigne

Heure

1/ la salle dépend du prof, du cours et du

groupe OK

2/ la salle ne dépend que du prof

Not OK (dans prof)

3/ la salle ne dépend que du prof et du cours

not OK (nouvelle association entre

prof et cours)

?

Salle

Salle

Salle

Page 33: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

33

33

Règles (7) : entités et associations

• 2 entités ne peuvent être directement liées : il faut une

association !

• Cependant:

– Une association peut ne pas avoir de « nom »

• Il est des fois difficile à trouver…

– Une association peut ne pas avoir de propriété

• C’est un cas très fréquent

Groupe

Enseigne

Heure

?

Salle

Prof

Cours

Page 34: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

34

34

Règles (8) : pas de dépendance transitive

• Une propriété ne peut dépendre d’une autre propriété qui ne

soit pas l’identifiant

– Permet d’éliminer des sous-entités incluses dans une entité

• Exemple :

– Etudiant(nom, adresse, ville, pays)

– Le pays dépend de la ville or l’identifiant d’étudiant est le nom.

CodeProf

Nom

Prénom

Ville

Pays

Prof

CodeProf

Nom

Prénom

Prof

est dans

NomVille

Pays

Ville 1,1 0,n

Page 35: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

35

Modèle relationnel

Page 36: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

36

Le modèle relationnel

• En 1970, Edward Codd, Prix Turing 1981, chercheur chez IBM,

propose le Modèle Relationnel, basé sur la Logique du premier ordre

définie par les mathématiciens de la fin du 19e siècle pour formaliser

le langage des mathématiques

A Relational Model of Data for Large Shared Data Banks,

CACM 13, No. 6, June 1970

• Il définit le Calcul Relationnel et l’Algèbre Relationnelle, sur lesquels

sont basés SQL (Structured Query Language), le langage standard de

manipulation (LMD) et de définition des données (LDD) de tous les

SGBD Relationnels actuels

Théorème de Codd: une question est exprimable en calcul relationnel si

et seulement si elle peut être évaluée avec une expression de l’algèbre

relationnelle – de plus, il est facile de transformer une requête du calcul

relationnel en une expression algébrique qui évalue cette requête.

Page 37: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

37

Domaine

• ENSEMBLE DE VALEURS

• Exemples:

– ENTIER

– REEL

– CHAINES DE CARACTERES

– EUROS

– SALAIRE = {4 000..100 000}

– COULEUR= {BLEU, BLANC, ROUGE}

Page 38: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

38

Produit cartésien

• Le produit cartésien D1x D2x ... x Dn est l’ensemble

des tuples (n-uplets) <V1,V2,....Vn> tels que ViDi

• Exemple:

– D1 = {Bleu,Blanc,Rouge}

– D2 = {Vrai, Faux}

Bleu Vrai Bleu Faux Blanc Vrai Blanc Faux Rouge Vrai Rouge Faux

D1x D2 =

Page 39: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

39

Relation, attribut

• Relation = sous-ensemble du produit cartésien d’une liste de domaines – Une relation est caractérisée par un nom

– Exemple:

• D1 = COULEUR

• D2 = BOOLEEN

• Plus simplement … – Une relation est une table à deux dimensions

– Une ligne est un tuple

– Un nom est associé à chaque colonne afin de la repérer indépendamment de son numéro d'ordre

• Attribut = – nom donné à une colonne d'une relation

– prend ses valeurs dans un domaine

Bleu Faux

Blanc Vrai

Rouge Vrai

CoulVins Coul Choix

Page 40: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

40

Exemple de relation

CHENAS 1983 BEAUJOLAIS ROUGE

TOKAY 1980 ALSACE BLANC

TAVEL 1986 RHONE ROSE

CHABLIS 1986 BOURGOGNE BLANC

ST-EMILION 1987 BORDELAIS ROUGE

VINS CRU MILL REGION COULEUR

Page 41: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

41

Clé

• Définition = Groupe d’attributs minimum qui détermine un tuple unique dans une relation

• Exemples – {CRU,MILLESIME} DANS VINS

– NSS DANS PERSONNE

• Contrainte d’entité – Toute relation doit posséder au moins une clé documentée

Page 42: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

42

Clé Etrangère

• Définition = Groupe d’attributs devant apparaître

comme clé dans une autre relation

• Les clés étrangères définissent les contraintes

d'intégrité référentielles

– Lors d'une insertion, la valeur des attributs doit exister dans

la relation référencée

– Lors d'une suppression dans la relation référencée les tuples

référençant doivent disparaître

• Elles correspondent aux liens obligatoires entre les

entités (modèle E/A)

Page 43: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

43

Schéma

• Schéma de relation

– Définition = Nom de la relation, liste des attributs avec

domaines, et clé de la relation

– Exemple

• VINS(NV: Int, CRU:texte, MILL:entier, DEGRE: Réel,

REGION:texte)

– Par convention, la clé primaire est soulignée

• Intention et extension de relation

– L'intention de la relation = le schéma de la relation

– Une instance de table représente une extension de la

relation

• Schéma d’une BD relationnelle = l'ensemble des

schémas des relations composantes

Page 44: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

44

Exemple de Schéma

• BUVEURS (NB, NOM, PRENOM, TYPE)

• VINS (NV, CRU, MILL, DEGRE)

• ABUS (NB, NV, DATE, QUANTITE)

• CLES ETRANGERES (italique)

–ABUS.NV référence VINS.NV

–ABUS.NB référence BUVEURS.NB

NB NV DATE QUANTITE ABUS

NV CRU MILL. DEGRE VINS NB NOM PRENOM TYPE BUVEURS

NB NV DATE QUANTITE

Page 45: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

45

Passage de niveau conceptuel au

niveau logique • Le modèle conceptuel est un compromis entre la flexibilité

de la langue courante et la rigueur nécessaire d’un

traitement informatisé.

• Le niveau logique est une étape de plus vers cette

informatisation

– Utilisation du formalisme du modèle relationnel : • tables (ou relations)

• attributs

• domaine

• clefs

• contrainte d’intégrité référentielles (relations entre tables)

– Simplification du schéma de la base

• Des règles trop strictes entraînent des schémas trop complexes

• On ‘‘tolère’’ un peu de redondance ou quelques valeurs nulles....

Page 46: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

46

Propriétés, Entités

• Règle 1 : Chaque propriété devient un attribut.

• Règle 2 : Chaque entité devient une table et son

identifiant devient sa clef primaire

• Règle 3 : Une association peut :

– être ‘‘absorbée’’ par l’une ou l’autre des entités

– devenir une table

Page 47: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

47

Cardinalités 1-1

• Un prof enseigne un et un seul

cours

• Un cours est enseigné par un et

un seul prof

Nom Prénom Adresse NomCours Description NbreHeures

Bouganim Luc Paris Info Informatique 44

Crenn Isabelle Paris Math Mathématiques 78

Rousseau Martine Versailles Droit Droit 26

Solution 1

Solution 2

Nom Prénom Adresse

Bouganim Luc Paris

Crenn Isabelle Paris

Rousseau Martine Versailles

NomCours Description

Info Informatique

Math Mathématiques

Droit Droit

Nom NomCours Nbreheures

Bouganim Info 44

Crenn Math 78

Rousseau Droit 26

Profs

Nom

Prénom

Adresse

Cours

NomCours

Description

Enseigne

NbreHeures

1,1 1,1

Page 48: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

48

Cardinalités 0-1

• Un prof enseigne un et un seul

cours

• Un cours est enseigné par un

prof ou n’est pas enseigné

Nom Prénom Adresse NomCours Description NbreHeures

Bouganim Luc Paris Info Informatique 44

Crenn Isabelle Paris Math Mathématiques 78

Droit Droit

Nom Prénom Adresse NomCours NbreHeures

Bouganim Luc Paris Info 44

Crenn Isabelle Paris Math 78

NomCours Description

Info Informatique

Math Mathématiques

Droit Droit

Solution 1

Solution 2

Profs

Nom

Prénom

Adresse

Cours

NomCours

Description

Enseigne

NbreHeures

1,1 0,1

Page 49: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

49

Cardinalités 0-n

• Un prof enseigne un et un seul

cours

• Un cours est enseigné par un

ou plusieurs profs

Nom Prénom Adresse NomCours Description NbreHeures

Bouganim Luc Paris Info Informatique 20

Crenn Isabelle Paris Info Informatique 24

Rousseau Martine Versailles Droit Droit 26

Nom Prénom Adresse NomCours NbreHeures

Bouganim Luc Paris Info 20

Crenn Isabelle Paris Info 24

Rousseau Martine Versailles Droit 26

NomCours Description

Info Informatique

Droit Droit

Solution 1

Solution 2

Profs

Nom

Prénom

Adresse

Cours

NomCours

Description

Enseigne

NbreHeures

1,1 1,n

Page 50: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

50

Conclusion

• Objectifs

– Ne pas créer de tables inutiles

– Ne pas dégrader le modèle conceptuel (pas de propriété

répétitive ni sans signification)

• Méthode

– Si possible, passer les propriétés de l’association dans

l’une ou l’autre des entités mais:

• Si la cardinalité minimum est 0, on ne peut le faire car, pour

certaines entités, il y aurait des valeurs nulles (ex. un prof ne

donnant pas de cours)

• Si la cardinalité maximum est n, on ne peut le faire car il y aurait

des attributs répétitif (ex. un prof donnant plusieurs cours)

– Sinon, créer une table pour l’association contenant

• les clefs des entités associées

• les propriétés de l’association

Page 51: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

51

Algèbre relationnelle

Page 52: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

52

Algèbre relationnelle

OPERATIONS PERMETTANT D'EXPRIMER LES

REQUETES SOUS FORME D'EXPRESSIONS

ALGEBRIQUES

• Avantages – Concis

– Sémantique simple

– Représentation graphique

– Utile pour raisonner (cf. TD) – peu d’erreur de syntaxe !

– Utile pour l’optimisation de requêtes

Page 53: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

53

Projection

• Elimination des attributs non désirés et suppression

des tuples en double

• Relation Relation notée: a1,a2,...Ap (R)

VINS Cru Mill Région Qualité

VOLNAY BOURGOGNE

CHENAS BEAUJOLAIS

JULIENAS BEAUJOLAIS

(VINS) Cru Région

VOLNAY 1983 BOURGOGNE A

VOLNAY 1979 BOURGOGNE B

CHENAS 1983 BEAUJOLAIS A

JULIENAS 1986 BEAUJOLAIS C

Cru,Région

Cru,Région (VINS) =

Page 54: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

54

Restriction

• Obtention des tuples de R satisfaisant un critère Q

• Relation Relation, notée Q(R)

• Q est le critère de qualification de la forme :

– Ai Valeur, = { =, <, ≥, >, ≤ , != }

– Il est possible de réaliser des "ou" (conjonction) et des "et" (disjonction)

de critères simples

MILL>1983

VINS Cru Mill Région Qualité

VOLNAY 1983 BOURGOGNE A

VOLNAY 1979 BOURGOGNE B

CHENAS 1983 BEAUJOLAIS A

JULIENAS 1986 BEAUJOLAIS C

VINS Cru Mill Région Qualité

JULIENAS 1986 BEAUJOLAIS C Mill>1983 (VINS) =

Page 55: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

55

Jointure

• Composition des deux relations sur un domaine commun

• Relation Relation Relation

– notée

• Critère de jointure

– Attributs de même nom égaux • Attribut = Attribut

• Jointure naturelle

– Comparaison d'attributs • Attribut1 Attribut2

• Théta-jointure

• Cas particulier : équi-jointure

Page 56: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

56

Exemple de Jointure

VINS Cru Mill Qualité

VOLNAY 1983 A

VOLNAY 1979 B

CHABLIS 1983 A

JULIENAS 1986 C

LIEU Cru Région QualMoy

VOLNAY Bourgogne A

CHABLIS Bourgogne A

CHABLIS Californie B

VINSREG Cru Mill Qualité Région QualMoy

VOLNAY 1983 A Bourgogne A

VOLNAY 1979 B Bourgogne A

CHABLIS 1983 A Bourgogne A

CHABLIS 1983 A Californie B VINS

Cru=Cru

LIEU =

Page 57: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

57

Exemple de -Jointure

RESPONSABLE DEPT SALAIRE

1

2

3

4

230 250 300 270

RESULTAT

DURAND

DUPONT

EMPLOYES

MARTIN

DURAND

DUPONT

DUPOND

1

1

2

3

NOM DEPT SALAIRE

130 235 280 150

NOM DEPT E.SALAIRE

1

2 235

280

R.SALAIRE

230

250

EMPLOYES E RESPONSABLE R = E.salaire > R.salaire et E.dept = R.dept

NB : signification de la requête ?

Employés ayant un salaire supérieur à celui du responsable de leur département

Page 58: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

58

Unions, intersections, différences

• Opérations binaires

– Relation Relation Relation

• Opérations pour des relations de même schéma

– UNION notée

– INTERSECTION notée

– DIFFERENCE notée —

• Extension pour des relations de schémas différents

– Ramener au même schéma avec des valeurs nulles

Page 59: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

59

Petite classe :

Exercice de conception

Exercice d’algèbre

Page 60: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

60

Le langage SQL

Structured Query Langage

Page 61: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

61

SQL : pour quoi faire ? • Avant SQL, rechercher des données satisfaisant une

qualification ressemblait à : [notations CODASYL]

Select B.plage

From Nageurs N, Baignade B

Where N.qualité = ‘excellent’

and B.date between ‘O1-08-89’

and ’31-08-89’and N.idn = B.idn

Page 62: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

62

LANGAGE DE DEFINITION DE DONNEES

CREATE TABLE

CREATE VIEW

ALTER ….

...

LANGAGE DE MANIPULATION DE DONNEES

SELECT

INSERT

UPDATE

DELETE

INTEGRATION AUX LANGAGES DE PROGRAMMATION

EXEC SQL

MODULE

PROCEDURE ...

LANGAGE DE CONTROLE

GRANT

REVOKE

COMMIT WORK

ROLLBACK WORK

Le standard SQL

Page 63: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

63

EXEMPLE DE BASE DE DONNEES

Page 64: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

64

Création de table

CREATE TABLE <nom_table>

(<def_colonne> * [<def_contrainte_table>*]) ;

< def_colonne > ::= <nom_colonne> < type > [CONSTRAINT nom_contrainte <

NOT NULL |

UNIQUE |

PRIMARY KEY |

CHECK (condition) |

REFERENCES nom_table (colonne) > ]

< def_contrainte_table > ::= CONSTRAINT nom_contrainte <

UNIQUE (liste_colonnes) |

PRIMARY KEY (liste_colonnes) |

CHECK (condition) |

FOREIGN KEY (liste_colonnes) REFERENCES nom_table (liste_colonnes)>

Page 65: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

65

Exemple de création de table CREATE TABLE RDV(

NumRdv Integer,

DateRDV Date,

NumDoc Integer,

NumPat Integer,

Motif Varchar(200),

CONSTRAINT Clé_Primaire_RDV PRIMARY KEY (NumRdv),

CONSTRAINT Référence_DOC FOREIGN KEY (NumDoc) REFERENCES

DOC,

CONSTRAINT Référence_PAT FOREIGN KEY (NumPat) REFERENCES PAT);

L'association d'un nom à une contrainte est optionnelle. Ce nom peut être utilisé

pour référencer la contrainte (ex: messages d'erreurs).

• Exercice 1

– Donnez l’expression SQL de la création des tables DOC et DET

Page 66: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

66

Index, modification du schéma

• Création d’index

– CREATE [UNIQUE] INDEX nom_index ON nom_table (<nom_colonne> * );

• Suppression

– DROP TABLE <nom_table>

– DROP INDEX <nom_index>

• Modification

– ALTER TABLE <nom_table> ADD COLUMN <def_colonne>

– ALTER TABLE <nom_table> ADD CONSTRAINT <def_contrainte_table >

– ALTER TABLE <nom_table> MODIFY <def_colonne>

– ALTER TABLE <nom_table> DROP COLUMN <nom_colonne>

– ALTER TABLE <nom_table> DROP CONSTRAINT <nom_contrainte >

• Exemples

– CREATE INDEX Index_date_RDV ON RDV (DateRDV) ;

– ALTER TABLE RDV ADD COLUMN Commentaires varchar(300);

– ALTER TABLE RDV ADD CONSTRAINT MotifNN NOTNULL(Motif);

• Exercice 2

– Créez un index sur le nom du docteur

– Supprimez l’attribut Motif de la table RDV

– Ajoutez une contrainte de clé primaire à la table MED (sur NumMed)

Page 67: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

67

Insertion de données : INSERT

INSERT INTO < nom_table >

[( attribute [,attribute] … )]

{VALUES (<value spec.> [, <value spec.>] … ) |

<query specification>} ;

• Exemples :

– INSERT INTO DOC VALUES (1, ‘Dupont’, ‘Paris’);

– INSERT INTO DOC (NumDoc, NomDoc) VALUES (2, ‘Toto’);

– INSERT INTO PAT (NumPat, NomPat, VillePat)

SELECT NumDoc, NomDoc, VilleDoc FROM DOC;

Page 68: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

68

Mise à jour : UPDATE

SYNTAXE :

UPDATE <relation_name>

SET <attribute> = value_expression [, <attribute> = value_expression ] …

[WHERE <search condition> ];

EXEMPLES :

Mettre “Inconnue” quand VilleDoc n’est pas renseignée

UPDATE DOC SET VilleDoc = “Inconnue” WHERE VilleDoc IS NULL

Mettre en majuscule le nom des docteurs qui n’ont jamais prescrit

UPDATE DOC SET NomDoc = UPPER(NomDoc) WHERE NumDoc NOT IN

(SELECT NumDoc FROM ORD)

ATTENTION AUX CONTRAINTES D’INTEGRITE REFERENTIELLES !!!

Page 69: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

69

Suppression : DELETE

SYNTAXE :

DELETE FROM <relation_name>

[WHERE <search_condition>];

EXEMPLES :

Supprimer les docteurs quand VilleDoc n’est pas renseignée

DELETE FROM DOC WHERE VilleDoc IS NULL

Supprimer les docteurs qui n’ont jamais prescrit

DELETE FROM DOC WHERE NumDoc NOT IN (SELECT NumDoc FROM ORD)

ATTENTION AUX CONTRAINTES D’INTEGRITE REFERENTIELLES !!!

Page 70: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

70

SELECT : forme générale

SELECT [DISTINCT| ALL] { * | <value exp.> [, <value exp.>]...}

FROM relation [alias], relation [ alias]…

[WHERE <search condition>]

[GROUP BY <attribute> [,<attribute>]...]

[HAVING <search condition>]

[ORDER BY <attribute> [{ASC | DESC}] [,<attribute>[{ASC | DESC}] ]...]

* EXPRESSION DE VALEURS

- Calculs arithmétiques

- Fonctions agrégats

* CONDITION DE RECHERCHE

- Sélection, projection, jointure

- Recherche textuelle

- Recherche par intervalle

- Recherche sur valeur nulle

Page 71: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

71

Forme générale de la condition de recherche

<search condition> ::= [NOT]

<nom_colonne> IS [NOT] NULL

<nom_colonne> constante <nom_colonne>

<nom_colonne> LIKE <modèle_de_chaîne>

<nom_colonne> IN <liste_de_valeurs>

<nom_colonne> (ALL ANY/SOME) <liste_de_valeurs>

EXISTS <liste_de_valeurs>

UNIQUE <liste_de_valeurs>

<tuple> MATCH [UNIQUE] <liste_de_tuples>

<nom_colonne> BETWEEN constante AND constante

AND OR <search condition>

avec

::= < = > <>

Remarques:

<liste_de_valeurs> et <liste_de_tuples> peuvent être déterminés par une requête

<tuple> ::= (<nom_colonne> [,<nom_colonne>]…)

Page 72: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

72

Projections et restrictions simples

Liste des médicaments de plus de 500 FF NomMed

SELECT NomMed FROM MED WHERE Prix> 500 ; Liste des médicaments de plus de 100 € NomMed (prix stocké en FF)

SELECT NomMed FROM MED WHERE Prix/6,55957 > 100 ; Nom des docteurs de LAON NomDoc

SELECT NomDoc FROM DOC WHERE VilleDoc = “Laon” Quelles ont été les motifs de consultations de 25/12/2006 Motif

SELECT DISTINCT Motif FROM RDV WHERE DateRDV = #25/12/2006#

Page 73: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

73

Restrictions complexes et jointures

Liste des patients ayant un RDV avec le docteur "Dupont" NomPat

SELECT DISTINCT PAT.NomPat FROM PAT, RDV, DOC WHERE PAT.NumPat = RDV.NumPat and RDV.NumDoc = DOC.NumDoc and DOC.NomDoc like “dupont”; Médicaments commençant par « ASPI » prescrits le 25/12/2006 NomMed

SELECT DISTINCT M.NomMed FROM MED M, DET D, ORD O WHERE M.NumMed = D.NumMed and D.NumOrd = O.NumOrd and O.Date = #25/12/2006# and NomMed like “ASPI%”; Docteurs ayant le même nom qu’un patient NomDoc

SELECT D.NomDoc FROM PAT P, DOC D WHERE P.NomPat = D.NomDoc;

Page 74: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

74

Requêtes imbriquées : IN et EXIST

Liste des patients ayant un RDV avec le docteur "Dupont" NomPat

SELECT DISTINCT P.NomPat FROM PAT P, RDV R, DOC D

WHERE P.NumPat = R.NumPat and R.NumDoc = D.NumDoc and D.NomDoc = “Dupont”;

SELECT P.NomPat FROM PAT P WHERE P.NumPat in

(SELECT R.NumPat FROM RDV R WHERE R.NumDoc in

(SELECT D.NumDoc FROM DOC WHERE D.NomDoc = “Dupont”));

SELECT P.NomPat FROM PAT P WHERE EXISTS

(SELECT * FROM RDV R WHERE P.NumPat = R.NumPat and EXISTS

(SELECT * FROM DOC D WHERE R.NumDoc=D.NumDoc and D.NomDoc = “Dupont”));

SELECT P.NomPat FROM PAT P WHERE EXISTS

(SELECT * FROM RDV R WHERE EXISTS

(SELECT * FROM DOC D WHERE P.NumPat = R.NumPat and R.NumDoc = D.NumDoc

and D.NomDoc = “Dupont”));

Page 75: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

75

Calculs d'agrégats

Les fonctions d’agrégation (Count, Sum, Avg, Min, Max) permettent de réaliser des calculs sur des ensembles de données

• Calcul de statistiques globales – Nombre de patients : SELECT count(*) FROM PAT

– Prix moyen des médicaments : SELECT avg(Prix) FROM MED

• Calcul de statistiques par groupe – Nombre de patients par ville :

SELECT VillePat, count(*) NbPatient FROM PAT GROUP BY VillePat

– Nombre de patients par ville ayant consulté pour un mal de tête

SELECT VillePat, count(DISTINCT(NumPat)) NbPatient FROM PAT, RDV

WHERE PAT.NumPat = RDV.NumPat and Motif = ‘mal de tête’ GROUP BY VillePat

– Ville où plus de 10 patients ont consulté pour un mal de tête

SELECT VillePat FROM PAT, RDV

WHERE PAT.NumPat = RDV.NumPat and Motif = ‘mal de tête’

GROUP BY VillePat

HAVING count(DISTINCT(NumPat)) > 10

Page 76: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

76

Union/Inter°/Différence

<requêteSQL_A>

UNION | INTERSECT | EXCEPT [ALL][CORRESPONDING [BY <liste_de_colonnes>]]

<requêteSQL_B>

• Ensemble des personnes de la base médicale

SELECT NomDoc NomPers FROM DOC

UNION

SELECT NomPat NomPers FROM PAT

• Patients qui sont aussi médecins

SELECT NomPat PatDoc FROM PAT

INTERSECT

SELECT NomDoc PatDoc FROM DOC

• Patients qui ne sont pas médecins

SELECT NomPat Patient FROM PAT

EXCEPT

SELECT NomDoc Patient FROM DOC

Page 77: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

77

Évaluation « sémantique » d’une requête SQL

1. FROM Réalise le produit cartésien des relations

2. WHERE Réalise restriction et jointures

3. GROUP BY Constitue les partitions (e.g., tri sur l’intitulé du groupe)

4. HAVING Restreint aux partitions désirées

5. SELECT Réaliser les projections/calculs finaux

6. ORDER BY Trier les tuples résultat

XXX

XXX

YYY

ZZZ

XXX

XXX

YYY

ZZZ

AGG1

AGG2

AGG3

XXX

ZZZ

AGG1

AGG3

AGG1 ZZZ

AGG3 XXX

Page 78: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

78

Programmation SQL

(OBDC/JDBC, PL/SQL, Triggers)

Page 79: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

79

Programmation SGBD: objectif

• Comment passer une commande dans la base telle que :

*cette procédure peut être déclenchée par un trigger !

• Impossible en SQL pur (SQL n’est pas un langage complet)

– Pas de structure de contrôle : itérations, tests …

– Besoin d’un langage complet pour programmer des actions sur les BD

• Les différentes possibilités

– Utiliser un langage traditionnel (C, C++, Java, Cobol, …)

...qui puisse parler avec la BD (avec SQL grâce à SQL CLI, JDBC, ODBC, …)

– Utiliser un langage propriétaire (PL/SQL Oracle, TSQL MS-SQLServer, …)

…fourni par l’éditeur du SGBD

… pour créer des procédures stockées coté serveur

PROCEDURE COMM

Si le client n’est pas encore dans la base Insérer les informations du client dans la table client

Si l’article est disponible dans la quantité commandée ET le livreur disponible à la date de livraison désirée Insérer sa commande dans la base

Sinon abandonner la commande

Page 80: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

80

Programmation SGBD : les outils

• Utiliser un langage traditionnel – Qui appelle des API Propriétaires fournies par l’éditeur de SGBD

• Ex: OCI (Oracle), DB-Lib (Sybase), …

• Programme écrit dans un langage classique (C, C++, Cobol, etc.)

… avec des appels à ces API non standards fournies par l’éditeur du SGBD

– Qui appelle des API indépendantes du SGBD • SQL-CLI (Call Level Interface)

• Popularisé par les médiateurs ODBC, JDBC

– Embedded SQL (générateur de code + API propriétaires) • Ex: Pro*C (Oracle), ECPG (Postgres), Pro*Cobol (Oracle), etc…

• Programme écrit dans un langage classique (C, C++, Cobol, etc.)

… avec des instructions SQL directement dans le programme

• Précompilation : le source (ex: C+SQL) … … est transformé en code compilable (ex: C pur)

• Suivi d’une compilation classique (ex: C pur)

• Utiliser un langage « SGBD » propriétaire (fourni par l’éditeur) – Ex: PL/SQL Oracle, PL/pgSQL (PostgreSQL), T-SQL (SQLServer), …

– Extension de SQL à des éléments de programmation procédurale • Instructions conditionnelles, itérations, variables, etc.

Page 81: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

81

Optimisation de requêtes

Page 82: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

82

Du stockage à l’optimisation

• A la base de tout, le hardware

– Cache CPU, RAM, disques magnétiques, disques Flash

• Organisation des données

– Stockage des attributs, tuples, pages, fichiers

– Indexation des données

• Exécution de requêtes (algorithmes)

• Optimisation de requêtes

• Mises en oeuvre dans Oracle

Page 83: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

83

Problème de l’optimisation

• Un problème global

– Touche l’ensemble des acteurs (pas seulement l’éditeur…)

Select

From

Where

Requête SQL Arbre logique Arbre Physique

Optimisation

Page 84: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

84

84

Un problème d’équivalence sémantique

• Une question

• Plusieurs expressions

équivalentes en SQL

• Plusieurs expressions

équivalentes en algèbre

• Plusieurs algorithmes

algébriques équivalents

Co

ût

Plans sémantiquement équivalents

Ex. 9 jointures 17 Milliards de plans…

Page 85: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

85

85

Objectifs de l’optimisation

• Objectif de l’optimiseur : trouver le meilleur plan … – Donnant les résultats le + vite ….

• Optimisation pour le temps de réponse (response time)

– Minimisant la consommation de ressources • Optimisation du travail total (Total work)

– Minimisant le temps de délivrance des premiers tuples • Optimisation de la latence (Latency / First tuples …)

• Qui optimise ? – Idéalement 2 requêtes équivalentes même plan, le meilleur !

Seuls les concepteurs de SGBD doivent maîtriser l’optimisation

– Pratiquement, ce qui conduit à des plans différents • 2 modèles conceptuel/physiques différents (d’un même problème)

• 2 opérations sémantiques équivalentes (série de requêtes SQL différentes)

• 2 requêtes SQL équivalentes

Le concepteur et le programmeur BD jouent un rôle majeur

Page 86: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

86

86

Importance du Schéma Physique

• L'utilisation d'index

– accélère l'exécution des sélections et des jointures

– ralentit l'exécution des mises à jour et des insertions

– offre des informations statistiques à l'optimiseur

– permet le contrôle efficace de contraintes d'intégrité

• L'organisation des données

– égaliser les I/O entre disques (log et bases, index et tables,

partitions de tables sur ° disques) Ex: tablespaces en Oracle

• Le choix des "bons" index et l'organisation des

données sont déterminants pour les performances

Page 87: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

87

87

Indexation (principe et B+Tree)

• Objectif : accès rapide à partir d’une clé

• Moyen : ajout de structures de données

(généralement hiérarchiques)

• Exemple : B+Tree

• Attention :

– Surcoût lors des mises à jour !

– Un accès par index plus coûteux qu’un parcours séquentiel ?

C’est parfois vrai…. Pourquoi ?

Jean

Adam

Alain

Ben

Claire

Felix

Gil

Hilda

Jean

Karine

Martin

Nicole

Paul

Sophie

Théo

Tom

Zoe

Page 88: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

88

Index primaire vs. secondaire

Tuples triés sur la clé de l’index

Index

Table

Tuples rangés aléatoirement sur la clé de l’index

Index

Table

Index primaire : 1 seul par table Index secondaire : n par table

NB: Index couvrant une requête : les clés (composites) contiennent

tous les attributs nécessaires à la requête

=> Inutile d’accéder aux tuples…

Page 89: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

89

89

Optimisation logique

Patients Visites

Visites

Patients

Select Patients.Nom, Patients.Prénom

From Patients, Visites

Where Patients.Id-P = Visites.Id-P

and Patients.Ville = ’Paris’

and Visites.Date = ’15 juin’

Page 90: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

90

90

Optimisation Physique

Sélection

– FTS (Full Table Scan) ?

– Index Scan (B+tree) ?

– Index Scan (Bitmap) ?

Jointure

– Nested Loop Join ?

– Index Join ?

– Hash Join ?

– Sort Merge Join ?

Visites

Patients

Page 91: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

91

91

Algorithmes de jointure

• Nested loop Join : Jointures par boucle imbriquées – Pour chaque visite, parcourir les patients

• Index Join : Utilisation d’index sur une des relations – Pour chaque visite, retrouver le patient grâce à l’index

• Sort Merge Join – Trier les visites sur le N° de patient

– Trier les patients sur le N° de patient

– Fusionner les deux tables triées (jointure ‘à deux doigts’)

• Hash Join – Hacher les patients sur le N° de patient

– Pour chaque visite, calculer la valeur de hachage et chercher dans la table de hachage le patient correspondant

Page 92: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

92

92

Optimiseur heuristique

• L’optimisation est indépendante des données

– Dépend uniquement de la requête SQL…

• Exemple d’heuristiques classiques

– Effectuer les sélections en premier

– Ajouter un maximum de projections

– Utiliser tous les indexes disponibles

– Utiliser les ‘meilleurs’ algorithmes de jointure, dans l’ordre

1. Hash join

2. Sort merge join

3. Nested Loop join avec index

4. Nested loop join

• Conclusion

– L’ordre des opérations dépends de l’expression SQL

• Ex = ordre des jointures déterminé par leur ordre d’apparition

– Présent dans Oracle = Rule Based Optimizer (RBO)

Page 93: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

93

Optimiseur basé sur un modèle de coût

Générateur de

Plans

Graphe d'opérations

Heuristiques

de choix

Plan d'exécution

Optimal

Schéma interne

Plans d'exécution (espace de recherche)

Statégie de

Recherche

Bibliothèque de

transformations

Modèle de coût

• Dépend des caractéristiques des données

• Présent dans Oracle (Cost Based Optimizer ou CBO)

• Plus efficace que le RBO !

Page 94: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

94

Difficultés de l’optimisation basée coût

• Espace de recherche (plans candidats) – Plusieurs algorithmes pour chaque opérateur

– Coûts et comportement différents

– Plusieurs ordonnancement pour les opérations binaires

• Sans considérer les algorithmes, il y a 1620 ordres possibles pour joindre 5 relations, et 17 milliards pour 10 relations !

Utilisation d’heuristiques et de programmation dynamique

• Modèle de coût (choix du plan) – Difficulté pour estimer le coût de chaque opérateur

– Difficulté encore plus importantes pour estimer la taille des résultats intermédiaires (permettant de calculer l’opérateur suivant)

– Propagation exponentielle des erreurs (dans l’arbre d’exécution) !

Utilisation de statistiques re-calculés fréquemment

Page 95: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

95

95

Les statistiques

• Possibilité d’histogrammes

– RunStat(<Table>, <attribut>) construction et stockage d’un

histogramme de variation de l’attribut dans la table.

– Utilisation par le modèle de coût

– Sinon, hypothèse d ’uniformité

• Exemple :

– Personnes ayant un salaire entre 2K€ et 4 K€ ?

– Personnes ayant 2 véhicules ?

– Personnes ayant 2 véhicules et un salaire entre 2 et K4 K€?

0 0.5 1 1.5 2.0 2.5 3.0 3.5 4

20%

0 1 2 3 4

15%

20%

15%

3% ? Non !

En fait, 14%

Page 96: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

96

96

Qualité de l’optimisation

1. Qualité du schéma physique

– Indexes

– Partitionnement, placement

– Configuration

2. Qualité de l'optimiseur (heuristique/coût)

– Qualité du modèle de coût utilisé

– Qualité de la stratégie de recherche de l'optimiseur

3. Qualité de l’administration

– Qualité des traces ou indicateurs générés par le système

– Qualité des outils d'aide à l'administration

– Qualité de l’administrateur !

4. Qualité des développeurs d’application ?

Page 97: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

97

97

Réglage du SGBD – Database Tuning

• Réglages du SGBD, amélioration des performances

– Manuel par l’administrateur BD

– par des outils externes de diagnostiques

– par des outils intégrés automatiques

• Oracle : Automatic SQL Tuning

• SQL Server : Database Tunning Advisor

Page 98: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

98

Oracle : Automatic SQL Tuning

Statistiques

manquantesSQL Profile

Index

manquants

Mauvaises

constructions SQL

SQL Tuning Advisor

Requête SQL

Automatic Tuning Optimizer

Analyse des Statistiques

SQL Profiling Analyse des chemins d’accès

Analyse des structures SQL

Page 99: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

99

99

Conclusion sur l’optimisation

• Mécanismes puissant mais complexes à maîtriser

• Fort impact sur les performances du système

• Les performances dépendent d’autres facteurs

– Schéma physique

– Configuration du serveur (mémoire, disques, etc.)

– Administration adéquate

• De plus en plus de tâches automatiques ou automatisables

– Gestion de la mémoire automatique dans Oracle 9

– Automatic SQL Tuning dans Oracle 10

– Database Tunning Advisor dans SQL Server 2005

– Etc.

• Mais aussi : une bonne application BD

des concepteurs qui connaissent le SGBD

Page 100: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

100

Petite classe : exercices de SQL

et d’optimisation de requêtes

Page 101: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

101

Contraintes d’intégrité -

Triggers

- ENSTA Nicolas Anciaux

Page 102: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

102

Plan

1. Contrôle de l’intégrité des données – Typologie et spécification des contraintes d’intégrité

• Norme SQL2

• Implémentation dans Oracle (bcp de différences avec la norme !)

– Analyse, contrôle des contraintes par le SGBD

2. Les déclencheurs – Définition de la norme SQL2

– Implémentation dans Oracle (bcp de diff. avec la norme !)

3. Exercices sur Oracle – Création de contraintes : SQL pur, SQL check ou Trigger ?

Exercices

Page 103: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

103

Contrôle d’intégrité

• But

– Détecter les mises à jour erronées

– Réagir

• rejeter la transaction

• compenser les erreurs

• Mise en oeuvre

– Langage de définition de contraintes d'intégrité

– Processus de vérification automatique des contraintes

• Bénéfice supplémentaires de cette implémentation

– Simplifie le code des applications

– Mise en commun des contraintes

– Cohérence globale des contraintes

Page 104: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

104

Types de contraintes

• Contraintes structurelles – Spécifient la structure des données de la base

• Tables, colonnes, lignes

– Trois sortes de contraintes structurelles • Contrainte d’entité

• Contrainte référentielle

• Contrainte de domaine

• Contraintes comportementales – Spécifient une règle d’évolution des données

– Plusieurs sortes de contraintes comportementales • Domaine de variation

• Contraintes temporelles

• Contraintes équationnelles

• Dépendances généralisées, …

Page 105: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

105

Contraintes structurelles • Contrainte d‘entité

– Contrainte de clé

• Un groupe d’attributs clé par relation

• Ex: identifiant de chaque personne

– Contrainte de non nullité

• Valeur d’attribut doit être renseignée

• Ex: nom de chaque personne

– Contrainte d’unicité

• Valeur d’attribut doit être unique

• Ex: numéro de sécurité sociale

• Contrainte référentielle

– Valeurs d’un d’attribut existent

comme clé d’une relation

• Contrainte de domaine

– typage des valeurs de l’attribut

CREATE TABLE personne

(

id INTEGER PRIMARY KEY,

nom VARCHAR(15) NOT NULL,

num_sécu NUMBER(15) UNIQUE NOT NULL,

nom_ent VARCHAR(15) REFERENCES entreprise

);

Page 106: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

106

Contraintes comportementales (1)

• Domaine de variation

– Précise l’ensemble des valeurs

permises d’un attribut

– L’ensemble peut être une liste de

valeurs discrète ou non

– Ex: couleur rouge, blanc, rosé

• Contraintes temporelles (SQL2)

– Comparent ancienne et nouvelle

valeurs d’un attribut

– Ex : degré du vin ne peut décroître

• Contraintes équationnelles

– Comparent des expr. arithmétiques

sur les données de base

– Peuvent être temporelles

(ancienne et nouvelle valeur)

– Ex : qté produite qtés bues

CREATE TABLE Vin

(…,

couleur VARCHAR(5) CHECK ( couleur IN

('rouge', 'blanc', 'rosé') ),

…)

CREATE ASSERTION quantite_produite

CHECK ( ( SELECT SUM(qte) FROM Vins) >

( SELECT SUM(qte) FROM Buveur) )

TRIGGER degré_croissant

BEFORE UPDATE OF degré ON vin REFERENCING

OLD ROW AS vin_avant

NEW ROW AS vin_après

FOR EACH ROW

WHEN (vin_après.date > vin_avant.date AND

vin_après.degré < vin_avant.degré )

BEGIN

lancerException

END

Page 107: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

107

Contraintes comportementales (2) • Dépendances fonctionnelles

– valeur {attributs}

valeur {autres attributs}

– Ex : cru et année d’un vin degré

• Dépendances multivaluées

– valeur {attributs}

! {valeurs {autres attributs}}

– Ex : prix vente > coût production

• Dépendances d’inclusion

– {valeurs {attributs}}

{valeurs {autres attributs}}

– Ex : client.nom personne.nom

– Cas part. : dépendance référentielle

• {valeurs {attributs}}

{valeurs {attributs_clé}}

• Ex : client.nom_ent ent.nom

CREATE ASSERTION dependance_fonctionnelle

CHECK( NOT EXISTS (SELECT * FROM Vin V1, Vin V2

WHERE V1.cru = V2.cru AND

V1.année = V2.année AND

V1.degré V2.degré ));

CREATE ASSERTION dependance_nultivaluée

CHECK( NOT EXISTS (SELECT * FROM Vente V1,

Vente V2

WHERE V1.prix > V2.cout));

CREATE ASSERTION dependance_inclusion

CHECK ( NOT EXISTS ( SELECT * FROM Cli C

WHERE nom NOT IN (

SELECT C.nom

FROM Pers P

WHERE C.nom = P.nom)

)

);

CREATE TABLE Client

(…,

nom_ent VARCHAR(20) REFERENCES Ent(nom),

…)

Page 108: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

108

Expression des contraintes en SQL2

• Une contrainte d’intégrité peut être – Associée à un domaine

• Spécifiée

– Au travers de la clause CREATE DOMAIN

– Lors de la définition de l’attribut dans la clause CREATE TABLE

– Associée à une relation • spécifiée

– Après la définition des attributs de la clause CREATE TABLE

– Après la définition de la table avec ALTER TABLE

– Dissociées • Spécifiée au travers de la clause CREATE ASSERTION

– Tout ceci peut être spécifié par la langage SQL2…

Page 109: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

109

SQL2 : contrainte de domaine (1)

• Définition possible dans la clause CREATE DOMAIN

• Ensuite, le domaine peut servir à typer des attributs

CREATE DOMAIN <nom> <type> [DEFAULT VALUE ‘valeur’]

[CONSTRAINT <nom_contrainte> CHECK (VALUE expr) ]

expr ::=[NOT|IS NOT] EXISTS|IN|BETWEEN|LIKE|NULL requete_sql | <val>*

Exemple

CREATE DOMAIN couleur_vins CHAR(5) DEFAULT VALUE 'rouge'

CONSTRAINT couleurs_possibles

CHECK ( VALUE IN ('rouge', 'blanc', 'rosé') )

Page 110: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

110

SQL2 : contrainte de domaine (2)

• Spécification possible dans la clause CREATE TABLE

Exemple

CREATE TABLE <nom_table>

(

<nom_colonne type|nom_domaine>* [<contrainte_colonne>*]

[<contrainte_table>*]

)

<contrainte_colonne>::=

[CONSTRAINT nom_contrainte]

< NOT NULL|UNIQUE|PRIMARY KEY|

REFERENCES nom_table(liste_colonnes)|

CHECK(expr)>

[NOT] DEFERRABLE

CREATE TABLE Vin

(

id INTEGER PRIMARY KEY,

couleur COULEURS_VINS,

cru VARCHAR(20),

millesime DATE,

degre INTEGER CHECK(degre BETWEEN 8 AND 15) NOT DEFERRABLE,

quantite INTEGER

);

Page 111: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

111

Exemple

SQL2 : contraintes de relations (1)

• Spécification possible dans la clause CREATE TABLE

CREATE TABLE Vin

(id INTEGER PRIMARY KEY,

couleur COULEURS_VINS,

cru VARCHAR(20),

millesime DATE,

degre INTEGER 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);

CREATE TABLE <nom_table>

(

<nom_colonne type|nom_domaine>* [<contrainte_colonne>*]

[<contrainte_table>*]

)

< contrainte_table > ::=

[CONSTRAINT nom_contrainte ]

< UNIQUE (liste_colonnes)|PRIMARY KEY (liste_colonnes)|

CHECK (expr)|

FOREIGN KEY (liste_colonnes) REFERENCES nom_table (liste_colonnes)>

[NOT] DEFERRABLE

Page 112: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

112

Exemple

SQL2 : contraintes de relations (2) • Sous-cas important : les contraintes référentielles

– Caractérisent toutes les associations

– Peuvent être croisées mode DEFERRABLE

• En cas de violation de la contrainte

– Mise à jour peut être rejetée

– Action de correction peut être déclenchée

• ON DELETE : action à effectuer si suppression d'un tuple référencé

• ON UPDATE : action à effectuer si MAJ de la clé d'un tuple référencé

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

CREATE TABLE Abus

( id INTEGER NOT NULL,

id_vin INTEGER NOT NULL,

date DATE,

CONSTRAINT référence_buveurs FOREIGN KEY id REFERENCES Buveurs (id)

ON DELETE CASCADE DEFERRABLE

);

Page 113: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

113

Exemple

SQL2 : contraintes dissociées • Spécification sous forme d’assertion (règle)

• Ex: la quantité bue reste < 100 pour chaque buveur

• NB : les contraintes dissociées peuvent être multi-tables

Exemple

CREATE ASSERTION <nom_contrainte> CHECK (condition)

CREATE ASSERTION quantite_produite

CHECK ( (SELECT SUM(quantite) FROM Vins) >

( SELECT SUM(quantite) FROM Abus) )

CREATE ASSERTION quantite_produite

CHECK ( NOT EXIST (SELECT Id FROM Buveur

GROUP BY Id

HAVING SUM(qté)>100)

Page 114: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

114

Dans les SGBD commerciaux…

• Contraintes de la norme SQL2 pas totalement implémentée

• Oracle – Domaine et d’assertion non supportés

– Clause check ne peut contenir de requête

• Sybase, SQL Server – Clause check ne peut contenir de requête

– Une contrainte par attribut au maximum

• IBM DB2 – Contraintes de la clause create table sur les valeurs d’un même tuple

– Une contrainte par attribut au maximum

• MsAccess – Aucune clause check

– Pas de domaine

• Comment palier à ces limitations ?

Page 115: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

115

Palier aux limitations sur les contraintes

• Domaines remplacés par des tables et des clés étrangères

• SQL2 introduit le concept de déclencheur (cf. partie suivante)

– Si un Evènement se produit sur la base

– Et qu’une Condition est vérifiée

– Le moteur déclenche une Action (traitement)

Les utiliser pour spécifier les contraintes complexes

CREATE TABLE Ville

( nom VARCHAR(128),

CONSTRAINT nom PRIMARY KEY );

TRIGGER degré_croissant

BEFORE UPDATE OF degré ON vin

REFERENCING OLD ROW AS vin_avant NEW ROW AS vin_après FOR EACH ROW

WHEN (vin_après.date > vin_avant.date AND vin_après.degré < vin_avant.degré )

BEGIN

lancerException

END

CREATE TABLE Personne

( …,

ville VARCHAR(128) REFERENCES Ville,

… );

Page 116: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

116

Contraintes structurelles Oracle (1)

• Contrainte d‘entité (clé de relation, non nullité, unicité)

– Spécifiées lors de la création de la table

• En tant que contrainte de colonne

• En tant que contrainte de table

– Ajoutée après la création de la table (contrainte de table)

– Retirées (si nommée):

CREATE TABLE Ville

( id NUMBER CONSTRAINT pk PRIMARY KEY,

… );

CREATE TABLE Ville

( id NUMBER,

… ,

CONSTRAINT pk PRIMARY KEY (id) );

ALTER TABLE Ville ADD ( CONSTRAINT pk PRIMARY KEY(id) );

ALTER TABLE Ville DROP CONSTRAINT pk;

Page 117: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

117

Contraintes structurelles Oracle (2)

• Contraintes référentielles (clé étrangère) – Spécifiées lors de la création de la table

• En tant que contrainte de colonne

• En tant que contrainte de table

– Ajoutée après la création de la table (contrainte de table)

– NB: on delete cascade OK, on update cascade non supporté

– Retirées de la même manière que les contraintes d’entité

ALTER TABLE Ville ADD ( CONSTRAINT fk FOREIGN KEY (dept_id) REFERENCES Dept(Id) );

CREATE TABLE Ville

( …,

dept_id NUMBER CONSTRAINT fk REFERENCES Dept(Id),

… );

CREATE TABLE Ville

( …,

dept_id NUMBER,

…,

CONSTRAINT fk FOREIGN KEY (dept_id) REFERENCES Dept(Id) );

Page 118: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

118

Contraintes structurelles Oracle (3)

• Contrainte de domaine

– Typage de l’attribut lors de la création de la table

• Domaine de variation

– Exprimée avec la clause CHECK (sans requête)

• En tant que contrainte de colonne

• En tant que contrainte de table

CREATE TABLE Dept

( …,

code CHAR(2) CONSTRAINT code_dept

CHECK (code BETWEEN 1 AND 99)

… );

CREATE TABLE Dept

( …,

code CHAR(2)

…,

CONSTRAINT code_dept CHECK (code BETWEEN 1 AND 99) );

Page 119: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

119

Contraintes comportementales Oracle

• Contraintes temporelles

• Contraintes équationnelles

• Dépendances généralisées

Exprimées avec des triggers ?

Page 120: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

120

Vérification des contraintes

• Nécessite un travail (non trivial) de la part du SGBD – Souvent pour cela que tout SQL2 n’est pas supporté dans les produits

• Lors de la création de la contrainte – Le SGBD vérifie la cohérence des contraintes

– La non-redondance des contraintes

– Par des mécanismes de preuve

• Lors de mise à jour dans la base – On résout les transgressions de contraintes suivant 2 méthodes

• Par prévention d’incohérence

– Des règles empêchent les mises à jours transgressant les contraintes

• Par détection d’incohérence et abandon de mise à jour

– Associe un traitement de vérification sur insert, delete, update

– Il s’agit autant que possible d’un test différentiel (ne pas tout re-tester!)

Page 121: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

121

• Par prévention d’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 pré-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

• Nécessité de définir toutes les mises

à jour permises

• Non généralité

Prévention / détection de transgression

• Par détection d’incohérence

– Toute mise à jour m est exécutée

– L’état D de la base devient Dm

– Si Dm est détecté incohérent, on

restitue 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

• Trouver un A' plus simple à vérifier

que A

• Défaire la transaction en cas

d'incohérence

• 2 méthodes pour assurer la cohérence vis à vis des contraintes

Performant, détaillé dans la suite

Page 122: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

122

devient

Exemple de vérification préventive

– Pré-test : A‘ = A Q

– L’algorithme ajoute conjonctivement l’assertion A à la sous

formule conditionnant l'exécution de la mise à jour

– Exemple : A = salaire > SMIC

UPDATE employé

SET salaire = salaire * 0.9

WHERE nom = 'Raleur';

UPDATE employé

SET salaire = salaire * 0.9

WHERE nom = 'Raleur'

AND salaire * 0.9 > SMIC;

Page 123: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

123

• Simplification des vérifications de contraintes lors de modification de la base

• Ex : la relation Abus référence la relation Vins

• Pré-tests simplifiés – Insertion (Abus) : Abus+.id_vin = Vins.id

– Suppression (Abus) : rien à faire

– Insertion (Vins) : rien à faire

– Suppr. (Vins) : Count (Abus.id_vin) where (Abus.id_vin = Vins-.idm) = 0

Très efficace mais complexe à implanter…

Notion de pré-tests différentiels

MEM. CACHE

Tuples à

insérer

dans R

Tuples à

supprimer

de R

R+

R-

Mises à

jour de R

DISQUE

Pré-test

commit

Page 124: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

124

Exemples de pré-tests différentiels

• Tests différentiels de contraintes classiques

Opération

Type de contrainte insertion suppression modification

K clé primaire de R Clés de R+ uniques et ne sont

pas dans R Rien à faire

Clés de R+ uniques et ne

sont pas dans R-R-

A clé étrangère de R

référence RefK de S

Tuples de R+ référencent un

tuple de S

S: clés K de S- ne

figurent pas dans A de R

Tuples de R+ référencent

un tuple de S

A domaine de R Domaine A sur R+ Rien à faire Domaine A sur R+

Non nullité Non-nullité sur R+ Rien à faire Non-nullité sur R+

Dépendance fonctionnelle

AB

t tuple de R+, u tuple de R

tel que t.A = u.A t.B = u.B Rien à faire Pas de forme simplifiée

Contrainte temporelle sur

attribut Rien à faire Rien à faire

Vérifier les tuples de R+

par rapport à ceux de R-

Page 125: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

125

Conclusion contraintes d’intégrité

• Assurent la cohérence de la BD

• Définies dans la Norme SQL2 – Du papier…

• Sont vérifiées par le moteur du SGBD (sur le serveur) – Lors de la validation du traitement ou au cours du traitement

– La centralisation permet

• De vérifier la validité globale

• Un gain en bande passante

• Implantation dans les systèmes réels – Contraintes simples

• Définition avec SQL associée à celle des objets de la base

– Contraintes complexes ?

• Par déclenchement (éventuellement conditionnels) de traitements écrits dans un langage procédural (triggers SQL2)

Page 126: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

126

Les triggers

Leur utilisation dans

Oracle

Page 127: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

127

SQL2 : déclencheurs (Triggers) • Définition

– 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 – Événement = mise à jour d'une relation (INSERT, DELETE, UPDATE)

– Condition = optionnelle, équivaut à une clause WHERE

– Action = exécution de code spécifique (ordre SQL ou PL/SQL) • Requête SQL de mise à jour, exécution d'une procédure stockée, abandon

d'une transaction, ...

• De multiples usages sont possibles – Étendre les mécanismes de contrôle d’intégrité

• Validation des données entrées, maintien de règles d’intégrité complexes

– Contrôle dynamique et évolutif des manipulations de la BD • Maintien de statistiques, audit de la base (sécurité)

– Duplication • Mise à jour de copies multiples, Dérivation des données additionnelles

– Mise à jour au travers de vues

Page 128: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

128

SQL2 : définition des triggers

CREATE TRIGGER <nom-trigger> <événement> [<condition>] <action>*

<événement> ::=

BEFORE | AFTER | INSTEAD OF

{INSERT | DELETE | UPDATE [OF <liste_colonnes>]}

ON <nom_de_table>

<condition> ::=

[REFERENCING OLD AS <nom_tuple> NEW AS <nom_tuple>

FOR EACH ROW]

WHEN <condition_SQL>

<action> ::=

{requête_SQL [FOR EACH ROW] | exec_procédure |

COMMIT | ROLLBACK}

CREATE TRIGGER référence_vins

BEFORE DELETE ON Vins

FOR EACH ROW

DELETE FROM Abus

WHERE Abus.id_vin = Vins.id

CREATE TRIGGER degré_croissant

BEFORE UPDATE OF degre ON Vins

REFERENCING

OLD AS old_vin

NEW AS new_vin

FOR EACH ROW

WHEN (new_vin.degre < old_vin.degre)

ROLLBACK

Exemples

Page 129: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

129

SQL2 : Gestion des Triggers

• La création d’un trigger déclenche son activation

• On peut remplacer la version précédente d’un trigger

• On peut manuellement activer/désactiver un trigger

CREATE [OR REPLACE ] TRIGGER <nom-trigger>

<événement> [<condition>] <action>*

DROP TRIGGER <nom-trigger>

ALTER TRIGGER <nom-trigger> ENABLE

ALTER TRIGGER <nom-trigger> DISABLE

Page 130: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

130

Mises en garde : interactions

• L’action d’un trigger peut déclencher d’autres triggers

• L’action d’un trigger peut causer la vérification des

contraintes d’intégrité

• Les actions de réaction aux contraintes d’intégrité

peuvent déclencher des triggers

– on delete cascade trigger delete

– on update cascade / set default / set null

on delete set default / set null trigger update

Page 131: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

131

Triggers des SGBD commerciaux

• Différences avec le standard

• Oracle – 1 seul trigger déclenché par un même évènement

– Condition : ne peut contenir de requête SQL

– Action : • 1 bloc PL/SQL anonyme sans COMMIT/ROLLBACK

• Pas de mise à jour de la table ayant levé le trigger

• Pas de lecture de la table ayant levé le trigger ligne

• Informix9 – Condition : ne peut contenir de requête SQL

– Action • 1 seul ordre PL/SQL

• ou 1 seul appel de procédure/fonction

Page 132: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

132

Définition globale des triggers Oracle

• Lors d’une requête de MAJ sur une table…

– Insert, delete, update

• […si la clause when est vérifiée…]

– Condition sur le tuple mis à jour

• … exécution du bloc PL/SQL

– Une fois trigger ordre

• Avant ou après l’ordre

– Une fois par tuple mis à jour trigger ligne

• Avant ou après chaque mise à jour

– Pour la syntaxe détaillée du PL/SQL, voir cours PL/SQL…

– NB : des clauses PL/SQL sont propres aux triggers

• INSERTING, DELETING, UPDATING utilisables dans les IF

CREATE TRIGGER <nom-trigger>

<BEFORE | AFTER>

<INSERT | DELETE | UPDATE>

ON <nom_de_table>

[WHEN (<condition_sur_la_ligne>)]

[FOR EACH <ROW|STATEMENT>]

-- BLOC PL/SQL

DECLARE …

BEGIN …

END;

Page 133: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

133

Triggers ordre Oracle (1)

CREATE TRIGGER <nom-trigger>

<qd_executer> <ordre_sql> ON <nom_table>

[FOR EACH STATEMENT]

<bloc_plsql>

<qd_executer> ::= BEFORE | AFTER

<ordre_sql> ::= < INSERT | DELETE | UPDATE [OF<liste_colonnes>] >

[OR <ordre_sql>]

CREATE TRIGGER vérif_qté

AFTER INSERT OR UPDATE OF qté ON Abus

DECLARE

qté_produite NUMBER;

qté_bue NUMBER;

BEGIN

SELECT SUM(qté) into qté_produite FROM Vins;

SELECT SUM(qté) into qté_bue FROM Abus;

IF qté_produite > qté_bue THEN

raise_application_error(-20001, ‘mise à jour incohérente’);

END IF;

END;

Exemple

Page 134: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

134

Triggers ordre Oracle (2)

• Exécution du trigger avant ou après la requête (ordre)

– Avant : mises à jour de l’ordre toutes invisibles

– Après : mises à jour de l’ordre toutes visibles

– Dans le trigger : mise à jour impossible de la table modifiée

• Ex. du trigger vérif_qté

Ch

ron

olo

gie

SCN = 8

SCN = 9

SCN = 10

SCN = 7

SCN = 11

Transaction

Insert into Abus as select…

R

eq

uête

SCN = 9

SCN = 8

Trigger vérif_qté

Abus

Déclenche

(après insertions)

SCN =11

Page 135: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

135

Exercice 1

• Créer un trigger ordre qui s’assure que les

modifications sur la table Emp ont bien lieu pendant

les jours ouvrables (du lundi au vendredi)

– Vous pourrez utiliser la fonction TO_CHAR(SYSDATE, ‘DY’)

qui retourne le jour courant ‘MON’, ‘TUE’, ‘WED’, ‘THU’,

‘FRI’, ‘SAT’, ‘SUN’

CREATE TRIGGER emp_changements_permis

BEFORE DELETE OR INSERT OR UPDATE ON Emp

BEGIN

IF TO_CHAR(SYSDATE,‘DY’)=‘SAT’ OR TO_CHAR(SYSDATE,‘DY’)=‘SUN’ THEN

raise_application_error(-20001, ‘pas de changement le week end’);

END IF;

END;

Page 136: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

136

Triggers ligne Oracle (1)

• Variables de transition old et new – nommées implicitement old et new, ou explicitement dans le referencing

– utilisables dans le bloc PL/SQL par :new.nom_col et :old.nom_col

– NB: pas de new lors d’un delete, pas de old lors d’un insert

• Clause when – Attribut = valeur du tuple avant ou après (old.nom_col ou new.nom_col)

– Valeur = attribut ou ‘xxx’, mais ne peut être résultat d’une requête

CREATE TRIGGER <nom-trigger> [INSTEAD OF]

<qd_executer> <ordre_sql> ON <nom_table>

[REFERENCING OLD AS <nom_old> NEW AS <nom_new>]

FOR EACH ROW

WHEN(<condition>)

<bloc_plsql>

<qd_executer> ::= BEFORE | AFTER

<ordre_sql> ::= < INSERT | DELETE | UPDATE [OF<liste_colonnes>] >

[OR <ordre_sql>]

<condition> ::= <attribut> <|>|!=|=|[NOT]<IN|BETWEEN|LIKE> <valeur>

Page 137: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

137

Triggers ligne Oracle (2)

• Exécution avant ou après chaque mise à jour de tuple

• Difficile de gérer les requêtes sur la table en mutation

– Les exécution du trigger devraient pouvoir lire la table

– Mais lecture de la table mise à jour erreur ‘mutating table’

• Raison technique : mise à jour des index en fin de requête, update et

delete posent des verrous sur les tuples à modifier ou supprimer, …

Ch

ron

olo

gie

SCN = 8

SCN = 9

SCN = 10

SCN = 7

SCN = 11

Transaction

Update from Vin where…

R

eq

uête

Req

uête

SCN = 9

SCN = 8

SCN = 11

Trigger degrès_croissant

Vin

Déclenche

SCN =9

Déclenche

SCN =9

Trigger degrès_croissant

Page 138: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

138

Exercice 2

• Créer un trigger ligne qui s’assure que lorsqu’un employé est

embauché pour un type d’emploi, son salaire soit dans les

bornes admises pour ce type d’emploi. Les tables ont la

structure suivante :

– Employés (Id, Nom, Prénom, Salaire, Emploi, Dept)

– TypeEmploi (Emploi, Sal_inf, Sal_sup)

CREATE TRIGGER verif_salaire

BEFORE INSERT OR UPDATE OF salaire, emploi ON Emp

FOR EACH ROW

DECLARE

min_sal NUMBER;

max_sal NUMBER;

BEGIN

SELECT Sal_inf, Sal_sup INTO min_sal, max_sal

FROM TypeEmploi WHERE Emploi = :NEW.Emploi;

IF min_sal > :NEW.Salaire OR max_sal < :NEW.Salaire THEN

raise_application_error(-20001,

‘Salaire hors limite pour ’|| :NEW.Nom);

END IF;

END;

Page 139: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

139

Commandes Oracle relatives aux triggers

• DROP TRIGGER… : efface le trigger

• Slash (/) : permet de compiler le trigger dans SQLPlus

• SHOW ERRORS

– affiche les erreurs dans le cas où le trigger aurait été crée

avec des erreurs de compilation dans SQLPlus

• CREATE OR REPLACE TRIGGER… : permet de

remplacer le trigger s’il existe déjà

Page 140: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

140

Résumé des limites des triggers Oracle

• Un trigger – Ne peut contenir de COMMIT ou de ROLLBACK

– Ne peut mettre à jour la table qui le déclenche

• Un trigger ordre – ne peut utiliser OLD et NEW

• Un trigger ligne – Ne peut selectionner (lire) la table qui le déclenche, sauf dans le cas

d’un BEFORE INSERT déclenché par un ordre SQL unitaire du type INSERT INTO <table> VALUES(…);

• Un trigger INSTEAD OF – Ne peut etre déclenché lors d’un ordre sur autre chose qu’une vue (ex:

une table)

Page 141: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

141

Exercice 3

• Dire ce qu’il se passe quand on exécute les triggers suivants

CREATE TRIGGER auto_count

AFTER INSERT OR DELETE ON employee

DECLARE

i NUMBER;

BEGIN

SELECT COUNT(*) INTO i FROM employes ;

INSERT INTO stat VALUES (‘nombre d’employes = ’|| i);

END;

CREATE TRIGGER audit_temp

AFTER DELETE ON temp

BEGIN

INSERT INTO temp VALUES (‘suppression de ligne:’||SYSDATE);

END;

CREATE TRIGGER dates_commandes_croissante

AFTER INSERT ON commande

FOR EACH ROW

DECLARE

max_date NUMBER;

BEGIN

SELECT MAX(date_com) INTO max_date FROM commande;

IF :NEW.date_com < max_date THEN

RAISE_APPLICATION_ERROR(20001, ‘date invalide’);

END IF;

END;

Page 142: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

142

Oracle PL/SQL

Procedural Language / Structured Query

Language

(Langage propriétaire Oracle)

Page 143: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

143

Langage PL/SQL

• Langage propriétaire Oracle

– Types SQL, tests conditionnels, itérations

• Simple

• Performant

• Utilisé pour

– Créer des packages

– Des fonctions

– Des procédures stockées

– …. Et des Triggers

Page 144: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

144

Bloc PL/SQL

• Bloc de déclaration de variables:

• Suivi d’un bloc d’instructions et exceptions:

DECLARE

<liste des variables utiles au programme>

BEGIN

<liste d’instructions du programme PL/SQL>

[ EXCEPTION

<instructions exceptionnelles> ]

END;

/

Page 145: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

145

Types des variables PL/SQL (1)

• Types de base

– Types Oracle (CHAR, NUMBER, DATE...)

– Type Booléen : boolean

– Types référençant le dictionnaire de données : table.col%TYPE

• Types complexes

– Record

• TYPE monType IS RECORD (champ1 NUMBER, champ2

VARCHAR2);

– Table

• TYPE maListe IS TABLE OF NUMBER ;

– Curseurs (cf. plus loin)

Page 146: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

146

Types et variables PL/SQL (2)

• Déclaration des variables dans le bloc declare

• Affectation de valeur

– Dans toutes les sections avec l’opérateur :=

– Dans la section begin end avec l’opérateur into

• Appel de variables extérieures dans le bloc begin end

– Variables SQL*FORMS préfixées par :

– Variables SQL*PLUS préfixées par &

Select max(table.col) into maVar from table;

DECLARE

maVar VARCHAR2 DEFAULT ‘ROUGE’;

maVar Personne.nom%TYPE; -- type de l’attribut concerné

maVar Personne%ROWTYPE; -- type RECORD

maVar MonCurseur%ROWTYPE; -- type RECORD

maVar := 2;

Page 147: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

147

Structures de contrôle PL/SQL

• Traitement conditionnel

• Itérations

IF condition THEN traitement1

[ELSIF condition THEN traitement2]

[ELSE traitement3]

END IF;

WHILE condition LOOP

traitement

END LOOP;

FOR i IN 1..n LOOP

traitement

END LOOP;

LOOP

traitement

EXIT WHEN condition END LOOP;

Page 148: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

148

Curseurs PL/SQL : déclaration

• Résultat d’une requête SQL géré comme un fichier

séquentiel

• Déclaration

• Curseurs avec paramètres

– Paramètre fixés à l’ouverture du curseur

DECLARE

CURSOR monCurseur IS requête_SQL;

DECLARE

CURSOR monCurseur (nomRecherche IN VARCHAR2) IS

SELECT nom, adresse FROM Personne

WHERE nom = nomRecherche;

Page 149: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

149

Curseurs PL/SQL : manipulation (1)

• Attributs de curseur

– %NOTFOUND, %FOUND, %ISOPEN, %ROWCOUNT

– S’évaluent à true, false, null, ou au numéro de tuple

• commandes classiques d’ouverture, lecture, fermeture • OPEN, FETCH, CLOSE

DECLARE

CURSOR dept_10 IS SELECT Nom, Salaire

FROM employes WHERE NumDept = 10;

tuple dept_10%ROWTYPE;

BEGIN

OPEN dept_10;

LOOP

FETCH dept_10 INTO tuple;

.........

EXIT WHEN(dept_10%NOTFOUND) END LOOP;

CLOSE dept_10;

END;

Page 150: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

150

Curseurs PL/SQL : manipulation (2)

• Manipulation simplifiée

– Déclaration implicite du curseur

– Déclaration implicite de l’enregistrement récepteur

– Ouverture et fermeture du curseur implicites

– Ordre de lecture pas à pas fetch implicite

– Condition de sortie implicite

BEGIN

FOR tuple IN

(SELECT Nom, Salaire FROM employes WHERE NumDept = 10)

LOOP

.........

END LOOP;

END;

Page 151: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

151

• Augmente de 5% le salaire des employés du service

compta…

DECLARE

CURSOR Compta IS

SELECT nom, salaire FROM Employe WHERE service = ‘comptabilité’;

Emp Compta%ROWTYPE;

BEGIN

OPEN Compta;

FETCH Compta INTO Emp;

WHILE Compta%FOUND LOOP

IF Emp.salaire IS NOT NULL AND Emp.Salaire < 30.000 THEN

UPDATE Employe SET salaire = salaire*1,05 WHERE nom = Emp.nom;

END IF;

FETCH Compta INTO Emp;

END LOOP;

CLOSE Compta;

END;

Curseurs PL/SQL : exemple

Page 152: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

152

Procédures et fonctions PL/SQL (1)

• Stockées sous forme compilée dans la base de données,

de la même façon qu’un objet de la base

– soumise aux mécanismes de sécurité ou de confidentialité

• Partagées par plusieurs applications et utilisateurs

– à condition d’avoir le privilège EXECUTE

• Procédure

– unité de traitement qui peut contenir des instructions

• SQL (sauf DDL), PL/SQL, variables, constantes, curseurs et

gestionnaire d’erreurs

• Fonction

– procédure qui retourne une valeur

Page 153: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

153

Procédures et fonctions PL/SQL (2)

• Création de procédure

• Création de fonction

• Re-compilation de procédure et fonction en cas de

modification du schéma de la BD

• Suppression de procédure et fonction

CREATE [OR REPLACE] PROCEDURE nom_procédure [(liste_arguments)]

<IS|AS> declaration_variables

bloc_PLSQL

liste_arguments ::= nom_argument_1 {IN | OUT | IN OUT} type,

nom_argument_2 {IN | OUT | IN OUT} type,

…...

nom_argument_n {IN | OUT | IN OUT} type

CREATE [OR REPLACE] FUNCTION nom_fonction [(liste_arguments)]

RETURN type {IS | AS} declaration_variables

bloc_PLSQL

ALTER <PROCEDURE | FUNCTION> nom COMPILE;

DROP {PROCEDURE | FUNCTION} nom;

Page 154: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

154

Procédures et fonctions PL/SQL (3)

• Exemple de procédure

– Modifie le prix d’un article d’un certain taux

• Exemple de fonction

– Calcule le chiffre d’affaire

CREATE FUNCTION chiffre_affaire (id IN NUMBER) RETURN NUMBER

IS

ca NUMBER;

BEGIN

SELECT SUM(montant) INTO ca FROM vendeurs WHERE id_vendeur = id;

RETURN ca;

END;

CREATE PROCEDURE modif_prix (id IN NUMBER, taux IN NUMBER)

IS

BEGIN

UPDATE article a

SET a.prix_unitaire = a.prix_unitaire*(1+taux)

WHERE a.id_article = id;

END;

Page 155: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

155

Package PL/SQL

• Package

– regroupement de programmes dans un objet de la BD

Visible par l’application

(public)

Interne au package (privé)

CREATE [OR REPLACE] PACKAGE nom_Package

<IS|AS>

déclaration_variables

déclaration_exceptions

déclaration_procédures

déclaration_fonctions

END nom_Package;

CREATE [OR REPLACE] PACKAGE BODY nom_Package

<IS|AS>

déclaration_variables_globales

corps_procédures

corps_fonctions

END nom_Package

Page 156: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

156

Package PL/SQL : exemple

CREATE PACKAGE traitements_vendeurs IS

FUNCTION chiffre_affaire (id_Vendeur IN NUMBER) RETURN NUMBER;

PROCEDURE modif_com (id IN NUMBER, tx IN NUMBER);

END traitements_vendeurs;

CREATE PACKAGE BODY traitements_vendeurs IS

FUNCTION chiffre_affaire (id_Vendeur IN NUMBER) RETURN NUMBER

IS

ca NUMBER;

BEGIN

SELECT SUM(montant) INTO ca FROM vendeurs WHERE id_vendeur = id;

RETURN ca;

END;

PROCEDURE modif_com (id IN NUMBER, taux IN NUMBER)

IS

BEGIN

UPDATE vendeur v

SET v.com = v.com*(1+taux)

WHERE v.id_vendeur = id;

END;

END traitements_vendeurs;

Page 157: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

157

Conclusion langages dédiés

• Les langages de type PL/SQL constituent le mode

d'utilisation le plus courant des bases de données

relationnelles

– Utilisé pour programmer des procédures stockées ou

des triggers

– Performant (réduit le transfert réseau)

– Bien adapté aux clients légers (ex: smartphone …) car

déporte des traitements sur le serveur

• Utilisé par les outils de développement de plus

haut niveau (SQLforms)

Page 158: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

158

Petite classe : création de

contraintes d’intégrité en SQL et

avec des triggers SQL3 (PL/SQL)

Page 159: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

159

Droits d’accès SGBD

Page 160: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

160

Politique de contrôle d’accès (ie, ensemble de règles)

• Précise qui est autorisé à faire quoi sur quelles

données et dans quelles conditions

• Format des règles :

Sujet

Permission

Interdiction

Obligation

Action

Objet

Ensemble d ’objets

avoir

avoir

avoir

réaliser

réaliser

réaliser

agir

sur

agir

sur

Page 161: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

161

Ex. Système d’information médical

• Sujets = Personnels du

groupe médical

• Objets = Dossiers des

patients

• Actions = Ex.

Jean

Jeanne

Médecin

Nadine

Secrétaire

médicale

Dossier_Patient

Dossier_Admin

Dossier_Médical

Dossier_Soins_Infirmiers

Partie_Admin

Partie_Secu_Sociale

Ausculter un patient

Créer le dossier d’un nouveau patient

Consulter le dossier

Mettre à jour les parties

« Dossier_médical » et « Dossier_soins_Infirmiers »

Renseigner « Dossier_Admin »

Page 162: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

162

Exemple de règles

• Règles indépendantes du contenu

– Les plus simples

– Règle qui permet d’accéder un objet indépendamment de son contenu

– Ex.

• R1 : La secrétaire médicale a la permission de gérer le « Dossier_Admin »

d’un patient du groupe médical

• Permet de consulter et de mettre à jour n’importe quelle information du

« Dossier_Admin » d’un patient

• Règles dépendant du contenu

– La permission d’accéder à un objet dépend du contenu de cet objet

– Ex.

• R2 : Le médecin a la permission de consulter l’intégralité du dossier d’un de

ses patients (permet de consulter un dossier médical à condition qu’il

s’agisse d’un patient de ce médecin)

• R3 : Le médecin a la permission de mettre à jour les parties

« Dossier_Medical » et « Dossier_Soins_Infirmiers » d’un de ses patients

Page 163: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

163

Exemple de règles (suite)

• Règles dépendant du contexte – La permission d’accéder à un objet dépend d’une condition

associée au contexte d’exécution et indépendante du contenu de cet objet

• Exemples : – R4 : En l ’absence de la secrétaire médicale, le médecin a le droit

de créer le « dossier_admin » d’un nouveau patient

– R5 : La secrétaire médicale a accès au « Dossier_Admin » du patient uniquement pendant les heures de travail

– R6 : La secrétaire médicale a accès au « Dossier_Admin » du patient uniquement à partir d’un poste interne à la clinique

– R7 : en cas d’urgence, tout membre de l’équipe soignante à accès au dossier du patient

• Contrôle a posteriori de la réalité de la situation d’urgence

Page 164: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

164

Exemple de règles (suite)

• Délégation et transfert de droit – Règles liées à l’administration de la politique de contrôle

d’accès

• Exemple : – R8 : Un médecin du groupe médical a la permission

d’autoriser la secrétaire médicale à mettre à jour la prescription contenue dans le « Dossier_médical » du patient

• Contrepartie de la délégation – La secrétaire médicale ayant reçu autorisation a la

permission de mettre à jour la prescription du « Dossier_médical » du patient

Page 165: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

165

Modèle discrétionnaire (DAC)

• DAC = Discretionary Access Control

– Contrôle d’accès discrétionnaire

• Principes de DAC

– Le créateur d’un objet fixe la politique de contrôle d’accès

sur cet objet

– Les sujets reçoivent des permissions pour réaliser des

actions sur des objets

– Les sujets ont l’autorisation de transférer certaines

permissions à d’autres sujets

– Modèle par essence décentralisé

très souple

difficile à administrer

Page 166: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

166

Modèle discrétionnaire (DAC) • Exemple de matrice d’accès

– La matrice peut être immense

• Deux approches pour renseigner la matrice accès

– Capacité (Capability List)

• la matrice est gérée par ligne

• Une liste d’autorisations, appelée capability list, est affectée à chaque utilisateur

– ACL(Access Control List)

• la matrice est gérée par colonne

• Une liste d’autorisations est affectée à chaque objet

Nom Salaire . . .

Dupont read write read

Robert

Durand read

Page 167: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

167

Exemple typique de DAC

• Gestion des droits dans UNIX

Répertoire

F

Contenu

du fichier F

User Group Other

R W X R W - R - -

Owner

Jean

• Concept de propriétaire

– Dans UNIX, chaque objet a un propriétaire

– C’est le propriétaire qui a les droits

discrétionnaires sur l’objet

• Le propriétaire décide des droits des autres sujets

Page 168: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

168

Principe du modèle DAC-SQL

U Utilisateur

P Permission

V Vue

A Action

O Objet

= N-uplet

Remarque : modèle fermé, basé exclusivement sur des autorisations

Page 169: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

169

Politique de sécurité dans DAC-SQL

• Modèle DAC – SGBD vs OS – Grand nombre d’objets à protéger

– Objets de granule très hétérogène (relations, tuples, attributs)

– Protection d’objets logiques (tables) ou virtuels (vues), [et non physiques (fichiers)]

La matrice d’accès peut être immense, son implémentation difficile

• Basée sur le concept de « Vue » – Permet de diviser la base de données en plusieurs parties

– Ex: la vue dossier_patient_de_Jean… CREATE VIEW dossier_patient_de_Jean AS

SELECT *

FROM dossier_patient

WHERE dossier_patient.medecin_traitant = ”Jean” ;

…contient tous les dossiers des patients de Jean

• Instruction GRANT/REVOKE – Permet de donner/retirer des privilèges à certains utilisateurs

Page 170: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

170

Création d’utilisateur – Ex. d’Oracle (1)

Créés par l’administrateur…

… ou tout utilisateur ayant la permission de créer des utilisateurs

CREATE USER <utilisateur> IDENTIFIED {BY <mot de passe> | EXTERNALLY }

[DEFAULT TABLESPACE <tablespace>] /* Tablespace par défaut : SYSTEM */

[TEMPORARY TABLESPACE <tablespace>]

[QUOTA { entier [K,M] | UNLIMITED } ON <tablespace…>]

/* Tablespace par défaut : SYSTEM */

[PROFILE <profile>] /* Profile par défaut: sans l’imitation de ressource */

[PASSWORD EXPIRE] /* Force le changement de mot de passe */

Ex. CREATE USER biblio IDENTIFIED BY auteur

DEFAULT TABLESPACE data

TEMPORARY TABLESPACE temp

QUOTA UNLIMITED ON data

QUOTA UNLIMITED ON indx

PASSWORD EXPIRE;

DROP USER utilisateur [CASCADE]; /* CASCADE supprime aussi les objets créés */

Page 171: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

171

Création d’utilisateur – Ex. d’Oracle (2)

• Un profil = un ensemble nommé de :

– limites de ressources

– Contraintes sur le mot de passe

CREATE PROFILE <profile> LIMIT

SESSIONS_PER_USER {int | DEFAULT | UNLIMITED}

CPU_PER_SESSION {int | DEFAULT | UNLIMITED}

CONNECT_TIME {int | DEFAULT | UNLIMITED}

IDLE_TIME {entier | DEFAULT | UNLIMITED}

FAILED_LOGIN_ATTEMPTS {entier | DEFAULT | UNLIMITED}

PASSWORD_LIFE_TIME

PASSWORD_REUSE_TIME

ressources

Mot de passe

Page 172: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

172

Privilèges SQL

• Deux types: Privilèges « objets » et « système »

• Privilèges objets – SELECT : permet la consultation de la table

– INSERT : permet l ’insertion de nouvelles données dans la table

– UPDATE : permet la mise à jour de n ’importe quelle colonne de la table

– UPDATE(nom_colonne) : permet la mise à jour d ’une colonne spécifique de la table

– DELETE : permet de supprimer n ’importe quelle donnée de la table

– Etc.

• Privilèges systèmes – CREATE/ALTER/DROP TABLE : Modifier la définition d’un objet

– EXECUTE : Compiler et exécuter une procédure utilisée dans un programme

– REFERENCE : référencer une table dans une contrainte

– INDEX : Créer un index sur une table

– Etc.

• Les privilèges sont stockés dans la métabase

– Oracle: dba_sys_privs, dba_tab_privs, dba_role_privs, …

Page 173: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

173

Commandes SQL Grant

GRANT <liste privileges>

ON <table ou vue>

TO <liste utilisateurs>

[ WITH GRANT OPTION ] /* pour les privilèges objets */

[ WITH ADMIN OPTION ] /* pour les privilèges système*/

;

– WITH GRANT ou ADMIN OPTION

• est optionnel

• signifie que l ’utilisateur qui obtient le privilège peut ensuite accorder

ce privilège à un autre utilisateur

Page 174: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

174

Commande SQL Revoke

REVOKE [ GRANT OPTION FOR ] <liste privileges>

ON <table ou vue>

FROM <liste utilisateurs>

[option] ;

– [GRANT OPTION FOR]

• signifie que seul le droit de transfert est révoqué

– [option] = RESTRICT ou CASCADE

• Si A accorde le privilège p à B et B accorde ensuite p à C:

CASCADE => si A révoque p à B alors C perd aussi le privilège

RESTRICT => si A révoque p à B alors la révocation échoue

Et si un utilisateur U a reçu le privilège p de A et de B

(sans relation entre A et B) ?

Page 175: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

175

Gestion des vues

• Les vues permettent d’implémenter l’indépendance

logique en créant des objets virtuels

• Vue = expression d’un requête SQL

• Le SGBD stocke la définition et non le résultat

• Exemple : la vue du dossier patient

CREATE VIEW dossier_patient AS

SELECT *

FROM dossier_admin DA, dossier_medical DM, dossier_soins_infirmiers DSI

WHERE DA.id_patient = DM.id_patient AND

DA.id_patient = DSI.id_patient

Page 176: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

176

Gestion des vues

Le SGBD transforme la question sur les vues en

question sur les relations de base

Requête Q sur des vues

Gestionnaire de Vues

Définition des vues

Requête Q’ sur les relations

de base

Exécution de requête

Résultat

Page 177: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

177

Confidentialité via les vues

Principe : Restreindre l'accès à la BD en

distribuant les droits via des vues :

Vérification des droits

Requête Q sur des vues

Gestionnaire de Vues

Requête Q’ sur les relations

de base

Exécution de requête

OK

OK Résultat

Définition des

droits

Définition des vues

Page 178: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

178

Confidentialité via les vues

Id-E Nom Prénom Poste Adresse Ville Salaire

1 Ricks Jim 5485 ………. Paris 230

2 Trock Jack 1254 ………. Versailles 120

3 Lerich Zoe 5489 ………. Chartres 380

4 Doe Joe 4049 ………. Paris 160

Id-E Nom Prénom Poste

1 Ricks Jim 5485

2 Trock Jack 1254

3 Lerich Zoe 5489

4 Doe Joe 4049

Nombre

d’employés

Masse

Salariale

4 890

Service des

ressources

humaines

Employés

(intranet)

Public

(internet)

Page 179: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

179

Application du modèle DAC-SQL

• Politique de sécurité du groupe médical

– Quels sont les privilèges respectifs ?

– NB : aussi, quels utilisateurs ont des privilèges système ?

• Sujets = Utilisateurs

• Objets = 3 relations

– dossier_admin

– dossier_medical

– dossier_soins_infirmiers

• Définition du dossier du patient CREATE VIEW dossier_patient AS SELECT *

FROM dossier_admin DA, dossier_medical DM, dossier_soins_infirmiers DSI

WHERE DA.id_patient = DM.id_patient AND

DA.id_patient = DSI.id_patient

Page 180: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

180

Expression des règles (exemples)

• R1 : La secrétaire médicale a la permission de gérer le « Dossier_Admin » des patients du groupe médical

GRANT ALL PRIVILEGES

ON dossier_admin

TO Nadine ;

• R2 : Le médecin a la permission de consulter l’intégralité du dossier de ses propres patients

CREATE VIEW dossier_patient_du_medecin AS SELECT *

FROM dossier_patient

WHERE dossier_patient.medecin_traitant = CURRENT_USER ;

(CURRENT_USER : opérateur prédéfini SQL)

GRANT SELECT ON dossier_patient_du_medecin

TO Jean, Jeanne ;

Page 181: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

181

Expression des règles (exemples)

• R4 : En l’absence de la secrétaire médicale, le médecin a la permission de créer le « dossier_admin » d’un nouveau patient

– Deux tables

• user_status (nom, status) => à créer (et à maintenir)

• user_role (nom, role) => existante dans la métabase

– Définition d’une vue

CREATE VIEW dossier_admin_medecin AS

SELECT * FROM dossier_admin

WHERE NOT EXIST (SELECT *

FROM user_status, user_role

WHERE user_status.nom = user_role.nom

AND user_role.role = ”secretaire_medicale”

AND user_status.status = ”present” ) ;

GRANT INSERT ON dossier_admin_medecin TO Jean, Jeanne ;

– Puissance d’expression élevée mais définition complexe

Page 182: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

182

Expression des règles (exemples)

• R5 : les dossiers administratifs ne sont accessibles que pendant les

heures ouvrables

– CREATE VIEW dossier_ouvrable

AS SELECT * FROM dossier_admin

WHERE TO_CHAR(SYSDATE,'HH') BETWEEN '08' AND '18'

en dehors de la période 8H – 18h le predicat est faux!

• R6 : les dossiers administratifs ne sont accessibles qu’à partir des

terminaux du secrétariat

– CREATE VIEW dossier_ouvrable

AS SELECT * FROM dossier_admin

WHERE sys_context(‘USERENV’, 'IP_ADDRESS') IN (‘T1', ‘T2')

le prédicat est faux pour tous les postes clients autres que T1 et T2 !

Page 183: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

183

Règle de délégation

• R8 : Un médecin a la permission d’autoriser la secrétaire médicale à mettre

à jour la prescription contenue dans le « Dossier_médical » de ses patients

– Création d ’une vue

CREATE VIEW prescription_du_medecin AS

SELECT dossier_medical.nom_patient, dossier_medical.prescription

FROM dossier_medical

WHERE dossier_medical.medecin_traitant = CURRENT_USER ;

GRANT SELECT, UPDATE(prescription)

ON prescription_du_medecin

TO Jean, Jeanne

WITH GRANT OPTION;

NB: pas de restriction possible des futurs grant

(eg, seulement à la secrétaire médicale…)

Page 184: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

184

Conclusion sur DAC-SQL

• Intérêt du concept de vue

– Permet d’exprimer des règles dépendant du contenu

– Permet d’exprimer certaines règles dépendant du contexte

• Règle de délégation

– Complexe à gérer

– « WITH GRANT OPTION » n’est pas suffisant

• Structuration des objets

– Grâce au concept de vue

• Contrôle d’accès basé sur l’identité des sujets

– Pas de structuration des sujets

Intérêt de RBAC

Page 185: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

185

R Rôle

P Permission

V Vue

A Action

O Objet

= N-uplet

U Utilisateur

RBAC : Role-Based Access Control

• Rôle = ensemble de privilèges

• Les accès des utilisateurs sont gérés en fonction de

leur rôle organisationnel

• Principe de la gestion des rôles dans SQL3 :

Page 186: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

186

RBAC introduit dans SQL3

• Instructions RBAC de SQL3

– CREATE ROLE <nom_role> ;

• Création d’un nouveau rôle nom_role

– DROP ROLE <nom_role> ;

• Suppression du rôle nom_role

– SET ROLE <liste_roles> ;

• Permet à un utilisateur d’activer un ensemble de rôle pendant la

durée d’une session SQL

Page 187: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

187

Adaptation de l’instruction GRANT

• Affectation des privilèges aux rôles GRANT <liste privileges>

ON <table ou vue>

TO <liste roles>

[ WITH GRANT OPTION ] ;

• Affectation des rôles aux utilisateurs GRANT <liste roles>

TO <liste utilisateurs>

• Rôle junior et rôle senior GRANT <role1> TO <role2>

Le rôle role2 reçoit tous les privilèges du rôle role1

Page 188: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

188

Ex. d’application du modèle

• Création des rôles

CREATE ROLE secretaire_medical ;

• R1 : La secrétaire médicale a la permission de gérer le

« Dossier_Admin » d’un patient du groupe médical

GRANT ALL PRIVILEGES

ON dossier_admin

TO secretaire_medicale ;

• Puis affectation de Nadine au rôle secretaire_medicale

GRANT secretaire_medicale to Nadine ;

Page 189: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

189

Hiérarchie de rôles

• Spécialisation/Généralisation

– R1 est un rôle senior de R2

si chaque fois qu’un utilisateur

joue le rôle R1, cet utilisateur

joue aussi le rôle R2

Personnel médical

Médecin

Généraliste Spécialiste

Cardiologue Rhumatologue . . .

• Hiérarchie organisationnelle

– R1 est un rôle senior de R2

si un utilisateur jouant le rôle R1

est un supérieur hiérarchique d’un

utilisateur jouant le rôle R2 Médecin

Chef de service

Directeur d ’un département

Directeur d ’un hôpital

Page 190: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

190

U Utilisateurs

R Rôles

P Permissions

.

.

. S Sessions Contraintes

Users-Role Assignment (URA)

Permission-Role

Assignment (PRA)

Hiérarchies

RBAC0 : le noyau (URA + PRA)

RBAC1 : Les hiérarchies

RBAC2 : les contraintes

RBAC3 : hiérarchies + contraintes

Le modèle RBAC complet

Page 191: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

191

Les contraintes dans RBAC

• Contrainte sur Utilisateur Rôle

– Contrainte de type « Séparation des pouvoirs »

• Exemple : rôles anesthésiste et chirurgien sont exclusifs

• u, ( URA(u,Anesthésiste) URA(u,Chirurgien) )

• Contrainte sur Session Rôle

– Un utilisateur peut cumuler plusieurs rôles mais pas les

activer dans une même session

• Contrainte de type « Séparation des tâches »

• Contrainte sur Rôle Permission

– Un rôle ne doit pas pouvoir cumuler certaines permissions

• Autre contrainte de type « Séparation des tâches »

Page 192: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

192

Exemple de politique RBAC

Page 193: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

193

Conclusion sur RBAC SQL

• Conservation des avantages de DAC-SQL

– Possibilité d’exprimer des règles dépendant du contenu et

du contexte

• Intérêt des concepts de vue et de rôle

– Les vues permettent de structurer la gestion des objets

– Les rôles permettent de structurer la gestion des sujets

• Limites des modèles DAC et RBAC (détail après...)

– DAC et RBAC : l’application utilisateur a des droits élevés

– Risque de programmes malveillants

Besoin du modèle MAC

Page 194: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

194

Gestion MAC dans un SGBD

• Limites des modèles DAC et RBAC – Hypothèse de DAC

• L’application utilisateur hérite des droits de l’utilisateur

– Hypothèse de RBAC • L’application utilisateur hérite des droits de la session

• Droit de la session = ensemble des rôles activés par l’utilisateur

• Risque de programmes malveillants – Cheval de Troie : programme qui a une fonctionnalité

apparente mais qui contient des fonctions cachées

• Lutte contre les chevaux de Troie – A la connexion, l’utilisateur réduit ses droits à la partie

strictement utile pour la session

– L’usage détourné des données est restreint

Page 195: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

195

Exemple de Cheval de Troie

Page 196: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

196

Exemple de Cheval de Troie

Page 197: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

197

MAC : Mandatory Access Control

• Basé sur le modèle de Bell-LaPadula

• Politique de sécurité multi-niveaux

– Niveaux de sécurité hiérarchiques: cloisonnement vertical

• Unclassified < Confidentiel < Secret < Très secret…

– Catégories: cloisonnement horizontal

• cardiologie, pédiatrie, rhumatologie, ...

– 1 niveau de sécurité + 1 catégorie = 1 classe d’accès

• Le niveau de sécurité d’une classe d’accès associée à un utilisateur

est appelé niveau d’accréditation

• Le niveau de sécurité d’une classe d’accès associée à un objet est

appelé niveau de classification

• Ex. de systèmes supportant un modèle mandataire

– Oracle Label Security, Label-Based Access Control DB2,

Label Security SQL-Server

Page 198: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

198

Dominance

• La décision d’accès est prise en comparant les deux

classes d’accès de l’objet et du sujet

– No read up : un sujet est autorisé à lire un objet seulement si

sa classe d’accès domine la classe d’accès de l’objet

– No write down : un sujet est autorisé à écrire un objet si

sa classe d’accès est dominée par la classe d’accès de

l’objet

• Une classe d’accès c1 domine () c2 ssi :

– Le niveau de sécurité de c1 >= niveau de sécurité de c2

– Les catégories de c1 c2

• Les deux classes c1 et c2 sont dites incomparables

ssi ni c1 c2 ni c2 c1 ne sont vérifiées

Page 199: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

199

Mandatory Access Control (2)

wri

tes

U

C

TS

S

wri

tes

wri

tes

wri

tes

….. TS

….. S

….. C

….. U

Flot d’information pour la confidentialité

Subjects Objects

Page 200: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

200

Mandatory Access Control (3)

Médecin

Le médecin se connecte comme un sujet Unclassified

Fichier D

Unclassified

Pirate

Unclassified

Martin ; pneumonia

David ; ulcer

Dossier médical

Secret

Unclassified

Médecin

Martin ; pneumonia

David ; ulcer

Dossier médical

Secret Secret

Fichier D

Unclassified

Pirate

Secret

Le médecin se connecte comme un sujet Secret

read

A la connexion, un utilisateur reduit ses droits à la partie strictement utile pour la session

Hélas, il est difficile de contrôler tous les moyens de transmettre une information…

Page 201: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

201

Synthèse sur les modèles de contrôle d’accès

• Principe fondateur

• DAC – Permet de structurer les Objets

• RBAC – Permet de structurer les Sujets

• MAC – Lutte contre les programmes malveillants

– Mais permet peu de souplesse dans la définition des politiques

=> Vers d’autres modèles (VPD) permettant une implantation de MAC plus souple (OLS)…

Sujet Action Objet Réaliser Agir sur

Page 202: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

202

Base de données privée virtuelle (VPD)

• Principe – Associer une règle de sécurité à une table ou une vue, en fonction d’un

contexte quelconque (lié à cet utilisateur et/ou à l’application)

– Si la VPD est activée, toute requête qui accède à cette relation ou cette vue est automatiquement modifiée en incluant une clause WHERE

• Egalement appelé ‘Fine-grained Access Control’ (FGAC)

Requête Q

Fonction d’ajout de

condition liée au contexte Exécution de

requête

Résultat

Requête Q’ Complétée en

fonction du contexte

Gestionnaire de VPD

Contexte

BD

Page 203: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

203

VPD : Contexte d’application

• Oracle a prévu un contexte par défaut

– USERENV : contient des informations système relatives à la

session courante (équiv. sys_context)

– Exemple : CURRENT_USER, HOST, ISDBA …

• Possibilité de créer un nouveau contexte et d’y

associer des attributs

– Exemple :

• Create context CTX_SEC_MEDICALE using

SCHEMA_MED.SEC_MEDICALE

• CTX_SEC_MEDICALE sera un contexte associé au package

PL/SQL nommé SEC_MEDICALE et stocké dans le schéma

SCHEMA_MED

Page 204: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

204

VPD : Définition des règles de sécurité • Les règles de sécurité sont écrites en PL/SQL

create package body SEC_MEDICALE as function DOSSIER_SEC return varchar2 is

MY_PREDICATE varchar2(2000) ;

begin

MY_PREDICATE := 'id_patient in

(SELECT id_patient

FROM dossier_medical

WHERE medecin_traitant = sys_context(‘USERENV’, ‘CURRENT_USER’))' ;

return MY_PREDICATE ;

end DOSSIER_SEC ;

end SEC_MEDICALE ;

• Puis associées à un objet DBMS_RLS.add_policy // RLS = Row Level Security

( policy_name => ‘mesdossiers', object_schema => 'SCHEMA_MED', object_name => ‘dossier_patient', policy_function => ' DOSSIER_SEC');

Une vue autorisée

Une clause where ad-hoc

Page 205: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

205

Exemple de transformation de requêtes • Supposons que Jean formule la requête suivante :

SELECT *

FROM dossier_patient

WHERE id_patient = 'Paul'

• L’application de la politique mesdossiers va automatiquement transformer cette requête en la requête suivante :

SELECT *

FROM dossier_patient

WHERE id_patient = 'Paul'

AND id_patient in (SELECT id_patient

FROM dossier_medical

WHERE medecin_traitant = 'Jean' ) ;

– Jean ne pourra ainsi accéder qu’aux dossiers médicaux de ses patients

Clause where ad-hoc renvoyée par

SEC_MEDICALE.DOSSIER_SEC()

Page 206: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

206

Oracle Label Security • Une adaptation de MAC…

• …construite au dessus de VPD et ne nécessitant pas de programmation

• Data label

– Constitué de 3 composants (Level, Compartment, Group)

– Intégré aux tuples dans une colonne additionnelle (déclarée par le DSA)

– Valeurs définies par le DSA

• Level

– Obligatoire, unique, hiérarchique, dénotant la sensibilité de la donnée

– Exemple: Confidential, Sensitive and Highly Sensitive

• Compartment

– Optionnel, non unique, non hiérarchique, utilisé pour compartimenter les données

– Exemple: types de données, liste de projets ou de secteur d’activité

• Group

– Optionnel, non unique, potentiellement hiérarchique, utilisé pour isoler les données par organisation

– Exemple: FBI, CIA

Page 207: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

207

Data Label (exemple)

Page 208: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

208

User Label

• User Label

– associé à chaque utilisateur

– Mêmes composants: Level, Compartment, Group

• Autorisations requises pour accéder aux données

UserLabel.level DataLabel.level

AND UserLabel.compartment DataLabel.compartment

AND UserLabel.group DataLabel.group

• Exemple

– Une donnée de “DataLabel” (L2: C1,C3: G1,G2)

est accessible avec un “UserLabel” (L2: C1,C2,C3: G1)

mais pas avec un “UserLabel” (L3: C1: G1,G2)

/!\ raffinement dans les slides suivants….

Page 209: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

209

Détail des composants du UserLabel (1)

Page 210: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

210

Détail des composants du UserLabel (2)

Page 211: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

211

Exercice

– C = Confidential, S = Secret

Page 212: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

212

Autorisations complémentaires

• Autorisations complémentaires pouvant être données à un

utilisateur ou une procédure stockée

– READ : Oracle ne vérifie plus les labels lors des SELECT

• les opérations update/delete/insert restent contrôlées

– FULL: Oracle ne vérifie plus aucun label

• mais les droits standards sur les objets continuent à s’appliquer (ex: un

GRANT SELECT ON T est toujours requis pour interroger T)

– WRITEUP – WRITEDOWN: donne le droit au user d’augmenter (resp.

réduire) le DataLabel.Level d’un tuple dans la limite de ses propres

capacités

– WRITEACCROSS: donne le droit de modifier Groups et Compartment

d’un DataLabel

• Performance ?

– Un test supplémentaire par tuple (sauf si READ, FULL)

– Création d’un index bitmap sur l’attribut Label est recommandé

Page 213: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

213

Synthèse sur les modèles de contrôle d’accès

• Via des vues

• DAC : Permet de structurer les Objets

• RBAC : Permet de structurer les Sujets

• MAC : Intègre l’hypothèse de programmes malveillants

– Lutte contre les chevaux de Troie

– Lourdeur d’implémentation (besoin de cartographier tout le système)

• VPD : Droits fins et contextuels

– Complexe à mettre en œuvre

• OLS: repose sur VPD, facilite (un peu) la mise en œuvre MAC

• Tout cela est TRES puissant… mais pas infaillible

– Nécessite d’avoir confiance dans les utilisateurs

– Nécessite de passer par la porte d’entrée

Audit des accès autorisés et chiffrement de la base

Page 214: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

214

Petite classe :

administration des droits d’accès

Page 215: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

215

Tolérance aux pannes

Page 216: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

216

La tolérance aux pannes

• Types de pannes qui peuvent survenir…

– Abandons de transaction (transaction failure)

– Pertes de la mémoire vive (system failure)

– Perte du disque (media failure)

• Ce que l’on veut éviter en cas de panne

– L’exécution partielle de transactions

– La perte de transactions validées

transgression des règles d’Atomicité / Durabilité

• Solution : des techniques de tolérance aux pannes

– Journalisation, sauvegardes

– Algorithmes de reprise après panne

Page 217: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

217

Pannes potentielles et but de la reprise • Abandon de transaction (trans. failure)

– Levée d’une contrainte d’intégrité

– Choix de l’utilisateur

– Plantage de l’application client

– Problèmes de concurrence

• Verrous mortels (verrouillage)

• Retard de transaction (estampillage)

• Défaillance de site (system failure)

– Plantage du SGBD

– Plantage système d’exploitation

– Coupure de courant

• Défaillance de mém. 2ndaire (media failure)

– Crash partiel/total du disque, incendie, etc.

Éliminer les effets de

l’exécution partielle de

la transaction

Revient à assurer Atomicité et Durabilité…

Rétablir les effets des

transactions validées

Annuler les effets des

transactions non validées

Rétablir les effets de toutes les transactions validées

Page 218: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

218

Abandon de transaction

Assurer l’Atomicité

A solde1

A A -

Solde1 A

A Solde2

A A +

Solde2 A

Commit

Transaction 1

Défaire sur disque

Base de données

Terminal 1 Terminal 2

Contrainte

d’intégrité

Plantage

client

Concurrence

Abort

client

Transaction 2

A solde

A A +

Solde A

Commit C

hro

no

log

ie

Page 219: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

219

Défaillance de site

Assurer l’Atomicité et la Durabilité

A solde1

A A -

Solde1 A

A Solde2

A A +

Solde2 A

Commit

Transaction 1

Base de données

Terminal 1 Terminal 2 Plantage

serveur

Panne de

courant

Transaction 2

A solde

A A +

Solde A

Commit

Ch

ron

olo

gie

Terminal 3

Transaction 3

A solde

A A +

Solde A

Commit

Défaire sur disque Défaire sur disque Refaire sur disque

Page 220: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

220

Défaillance de mémoire secondaire

Assurer la Durabilité

A solde1

A A -

Solde1 A

A Solde2

A A +

Solde2 A

Commit

Transaction 1

Base de données

Terminal 1 Terminal 2

Transaction 2

A solde

A A +

Solde A

Commit

Ch

ron

olo

gie

Terminal 3

Transaction 3

A solde

A A +

Solde A

Commit

Refaire sur disque

Incendie

Crash disque

Défaire sur disque Défaire sur disque

Page 221: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

221

Tolérer l’abandon de transaction

• Objectif

– Éliminer les effets de l’exécution partielle de la transaction

• Mise en œuvre

– Effacer la mémoire de la transaction abandonnée (son cache)

• Ne plus rien reporter sur disque de ses effets en cache

– Retirer les effets de la transaction sur disque

• Si aucune modification reportée sur disque Rien à faire…

• Sinon

– Remplacer les valeurs modifiées par leur valeur avant modification

– Retirer tous les objets ajoutés par la transaction

• Cela suppose

1 Pendant la transaction: Garder l’historique des valeurs avant

modification par la transaction

2 Au commit : Ajouter sur disque les pages modifiées*

et faire un commit atomique

*peut être effectué avant le commit de façon asynchrone

Page 222: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

222

• Pour retirer du disque les effets de la transaction abandonnée

– Journal avant

• Fichier séquentiel stockant les valeurs avant mise à jour de chaque objet modifié

– Mise à jour d’un objet par la transaction

écriture de sa valeur avant modification

– Validation de la transaction : écrire le fait qu’elle a validé

• Le journal est ensuite utilisé pour défaire les mises à jour reportées sur disque

• Utilisation: on part de la fin du journal, toute MAJ rencontrée effectuée par une

transaction non validée est annulée (en place) sur le disque

Abandon utilisant le journal avant

Mémoire

secondaire

Mémoire de la

transaction

Base de données

Mises à jour

Écrit p

age

Lit p

age

Lit p

age

Images avant

modification

Pourquoi ?

Page 223: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

223

Tolérer la défaillance de site • Perte du contenu de la mémoire vive

– S’appelle aussi la reprise à chaud

• But – Annuler les effets sur disque des transactions non validées

– Rétablir les effets sur disques des transactions validées avant la panne

• Mise en œuvre – Défaire les effets présents sur disque des transactions non validées

• Aucune modification reportée sur disque rien à faire…

• Sinon défaire avec le journal d’images avant

Journal avant en mémoire secondaire (support persistent) !

– Refaire les effets absents du disque des transactions validées • Si toutes les modifications sont déjà reportées sur disque

– rien à faire…

• Sinon

– Remplacer les valeurs par leur valeur après modification

– Écrire tous les objets crées par la transaction

A la validation d’une transaction, on journalise ses valeurs après mise à jour

Page 224: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

224

Reprise à chaud utilisant les journaux • Défaire les effets présents sur disque des transactions non validées

– Journal avant, sur un stockage persistant

• Refaire les effets absents du disque des transactions validées

– Journal après (en mémoire secondaire)

• Fichier séquentiel stockant les valeur après mise à jour de chaque objet modifié

• Mise à jour d’un objet par la transaction écriture de sa valeur après modification

• Le journal est ensuite utilisé pour refaire les mises à jour non reportées sur disque

• Utilisation : on part du début du journal après, on refait toutes les transactions sur disque

Mémoire

secondaire

Mémoire de la transaction

Base de données

Mises à jour

Écrit p

age

Lit p

age

Lit p

age

Journal après Journal avant

Refaire Défaire

Page 225: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

225

Conclusion intermédiaire… • Abandon de transaction

– Journal avant : défait les effets sur disque de la transaction

• Peut être en RAM

• Utile si on reporte le cache de la transaction sur disque avant validation

• Il contient les images avant de chaque transaction (non validée)

• Reprise à chaud – Journal avant : pour défaire

• Doit être en mémoire persistante

• Utile si on reporte le cache de la transaction sur disque avant validation

– Journal après : pour refaire

• Doit être en mémoire persistante

• Utile si on ne reporte pas le cache de la transaction après validation

• Il contient les images après des transactions validées

La gestion du cache détermine l’existence des journaux

Page 226: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

226

Politiques de gestion de cache

• Détermine l'instant du report sur disque des pages modifiées

– STEAL (resp. NO_STEAL)

• Des pages modifiées par des transactions non validées peuvent être reportées sur

disque

– FORCE (resp. NO_FORCE)

• À la validation d'une transaction, toutes les pages qu'elle a modifiées sont

obligatoirement présentes sur disque

• Politiques de gestion de cache possibles

– NO-STEAL / FORCE

– STEAL / FORCE

– NO-STEAL / NO-FORCE

– STEAL / NO-FORCE : aucune hypothèse sur la politique de gestion de cache

( politique considérée par les SGBD commerciaux)

Détermine le mode de gestion du journal en cas de reprise à chaud

Page 227: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

227

No-steal, Force

• Avantage: Presque rien à faire pour la reprise à chaud…

• Reprise à chaud des transactions validées

– Tous les effets de la transaction sont dans la base

Inutile de refaire des mises à jour

• Reprise à chaud : des transactions non validées…

– …. Dont les effets ne sont pas dans la base

Inutile de défaire des mises à jour

– Cas de la panne pendant le commit

• Mais: mauvaises performances…

– BUT: support du mode STEAL / NO FORCE

Mémoire de la transaction

Base de données

Mises à jour

Lit p

age

Lit p

age

Mini-journal

(temp.)

– Une partie des effets de la

transaction est dans la base

Gérer sur disque un mini-journal

temporaire d’images avant pour

défaire la transaction…

Page 228: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

228

• Des pages modifiées par des transactions non validées peuvent être déjà

reportées sur disque

• En cas de panne avant le commit, l’Atomicité n’est pas assurée

Stocker les images avant pour défaire éventuellement les mises à jour

• Règle du Write Ahead Logging (WAL)

– Toute mise à jour est précédée d'une écriture dans le journal d'images avant

permettant d'invalider cette mise à jour en cas de ‘panne’

Steal => journal avant

Journal avant

Mémoire de la transaction

Base de données

Mises à jour

Lit p

age

Lit p

age

Écrit pages

Ste

al

Mémoire

secondaire

WAL

Page 229: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

229

• Les pages modifiées par une transaction ne sont pas toutes nécessairement

reportées sur disque au commit

• En cas de panne après le commit, la Durabilité n’est pas assurée

Stocker les images après pour refaire éventuellement les mises à jour

• Règle du Force Log at Commit

– Toute validation de transaction doit être précédée de l'écriture de son journal

d'images après sur un disque différent de celui contenant la base de données

Mémoire

secondaire

No-force => journal après

Mémoire de la transaction

Base de données

Mises à jour

Co

mm

it Lit p

age

Lit p

age

Journal après Force log

Page 230: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

230

• Steal

– Mises à jour peuvent être effectuées dans la base avant le commit

Défaire les mises à jour non commises (journal avant)

• No-force

– Mises à jour pas forcément reportées dans la base après le commit

Refaire les mises à jour commises (journal après)

Les problèmes possibles : panne avant/après commit

Steal, No-force : défaire et refaire

Mémoire

secondaire

Mémoire de la transaction

Base de données

Mises à jour

Ste

al

Lit p

age

Lit p

age

Journal après Force log

Journal avant WAL

Refaire

Panne avant commit

Défaire

Panne après commit

Page 231: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

231

Tolérer la défaillance de mém. 2ndaire

• S’appelle aussi reprise à froid…

– Perte du contenu de la mémoire persistante

• Refaire sur disque les effets des transactions validées

– Reconstruction complète de la base avec le journal après

Journal après sur un autre disque !

Mémoire de la transaction

Base de données

Mises à jour

Écrit p

age

Lit p

age

Lit p

age

Journal après Journal

avant

Refaire

Défaire

Mémoire

secondaire

Force log WAL

Page 232: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

232

Algorithme de reprise à froid

• Performances: utilisation de « backup »

(ie, points de reprise ou « checkpoints »)

– Recharger la base avec le dernier « backup »

– Refaire les transactions validées du journal redo log (image après)

• NB: le backup peut être réalisé à partir du redo log…

Sauvegarde du

journal après

Chronologie

Journal après Force Log at Commit

Base de données

Réduit la taille

sur disque du

journal

Sauvegarde de

la BD

Pour

reconstruire

plus vite…

Disponible? Disponible!

Page 233: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

233

Conclusion sur la journalisation

• Journaux : qu'y trouve t-on ? – Identifiant de la transaction

– Identifiant de l'enregistrement de la BD

– Valeur avant

– Valeur après

• Défaire – Lecture de la fin vers le début du journal des images avant

– On défait toutes les transactions non commises

– Garantir l‘Atomicité des transactions

• Refaire – Lecture du début vers la fin du journal des images après

– On refait toutes les transactions validées

– Garantir la Durabilité

Page 234: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

234

Vrai ou faux ?

• Le concept de transaction (ACID) n’est nécessaire que dans le cas où il y a plusieurs utilisateurs

• Les protocoles de reprise assurent uniquement l’Atomicité et la Durabilité des données

• Le SGBD doit assurer la validation et la durabilité de la transaction dès qu’il reçoit le commit

• Le crash du disque servant à stocker le journal après empêche la reprise à froid

• Le group commit empêche de refaire les transactions validées du groupe en cours

• Le crash du journal avant empêche la reprise à chaud

• Un point de reprise ne sert qu’à accélérer la reprise à chaud

• Dans un système qui ne tombe jamais en panne, les journaux d’images avant et d’images après ne servent à rien.

Faux (même pour I!)

Quand il a répondu favorablement au commit

C’est son rôle

Le système répond aux commits seulement si tout le groupe est reporté sur disque

C’est son rôle

Une optimisation

Un ABORT n’est pas une panne et a besoin du journal avant (mais pas journal après)

Oui, par définition

Page 235: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

235

Tolérance aux pannes dans Oracle (1)

• Gestion de cache : steal, no-force

– Des pages modifiées par des transactions non validées

peuvent être reportées sur disque

– À la validation d'une transaction, toutes les pages qu'elle a

modifiées ne sont pas obligatoirement reportées sur disque

Gestion de journaux avant et après

• Journal avant : les Rollback segments

• Journal après : les fichiers Redo Logs

Page 236: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

236

Tolérance aux pannes dans Oracle (2) • Les Rollback Segments

– En cas de panne, servent à défaire des mises à jour

– Un Rollback Segment par transaction active

– Écritures en Rollback Segments protégées par le journal après

les premiers objets restaurés en cas de reprise après panne…

– Remarque : ce sont ces segments qui sont utilisés pour implémenter la lecture cohérente des données

NB : Read Consistency d’Oracle

Partie active

Partie inactive

T1 T2

Page 237: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

237

Tolérance aux pannes dans Oracle (3)

• Les Redo Logs – En cas de panne, servent à refaire des mise à jour

• Ils refont en premier les Rollback Segments

– Les Redo Logs sont remplis en mode circulaire • On en sauve un sur disque pendant que les autres se remplissent

• Il doit y avoir au moins deux fichiers formant les Redo Logs

– Écriture sur disque des Redo Logs • Au commit

• Quand le buffer cache stockant les logs est rempli au tiers

• Lors d’un checkpoint

• Après time-out

Fichier log 1 Fichier log 2

Sauvegarde du

journal après

« switch »

« switch »

Page 238: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

238

Conclusion – Tolérance aux pannes

• Le SGBD assure que chaque transaction reste

– Atomique

• Entièrement exécutée ou pas du tout

• Tolérance aux pannes (journal avant, commit atomiques, …)

– Cohérente

• Respecte les règles d'intégrité…

• Comment définir et implanter les contraintes ) voir la suite

– Isolée

• Seules les mises à jour validées sont visibles

• Contrôle de concurrence (verrouillage, estampillage, versionning, …)

– Durable

• Les mises à jour validées ne peuvent jamais être perdues

• Tolérance aux pannes (journal après, checkpoint, …)

Page 239: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

239

Audit Toutes les actions sont auditables…

Problèmes: quoi auditer ? Quoi rechercher ?

Page 240: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

240

Objectifs de l’audit

• Sécurité

– Identifier les usages illicites

• Utilisateurs cherchant à outrepasser leurs droits (inférences),

Injection SQL ou Attaque d’un Cheval de Troie (dump), Pertes de

données suspectes (suppressions), etc.

– Identifier les données / comptes compromis

– Tracer des usages exceptionnels (ex: bris de glace)

– Vérifier la conformité d’un usage (ex: prise de décision

médicale)

– Imputer des actions

• Performance

• Amélioration organisationnelle, financière, etc.

Page 241: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

241

Comment auditer ?

• L’audit du SGBD peut concerner les objets de la base

– Tables, vues, index, procédures, etc.

– Créations, modification, destruction, mises à jour, etc.

… et toutes les actions systèmes

– Connections à la base, attribution des privilèges, etc.

• Tout peut être audité

– Problème: le volume et l’exploitation de l’audit…

• Moyens:

– Audit par des déclencheurs (triggers)

– Audit en utilisant la commande AUDIT, peuplant la table

d’audit du SGBD

Page 242: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

242

Audit par Triggers

• Triggers crées par l’administrateur BD/sécurité

– Déclenchés sur des événements « systèmes » (LOGON,

CREATE, DROP…)

• Localité de l’événement contrôlable (dans un schéma, etc.)

– Déclenchés sur des événements « objets » (INSERT,

DELETE, UPDATE)

• Avantages: faible volume, analyse ciblée

– choix fin des actions à auditer, activation à la demande

• Limites: certaines actions son difficiles à auditer

– Ex: auditer les requêtes (SELECT)

Page 243: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

243

Le mode AUDIT du SGBD

• Les actions auditées sont stockées

– dans une table du SGBD (Oracle: SYS.AUD$)

– dans un fichier de l’OS (permet l’audit de plusieurs bases)

• Actions auditables sont

– les connexions à la base

– les actions qui affectent un type d’objet (table, rôle, etc.)

– les actions qui affectent un objet (table EMP)

… Aussi bien pour les actions réussies et non réussies

• Activer / désactiver l’audit:

– ALTER SYSTEM SET audit_trail=db,extended scope=spfile;

• Puis redémarrer l’instance Oracle…

– NOAUDIT ALL;

Page 244: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

244

Utilisation de la table d’audit

• Table d’audit Oracle

– SYS.AUD$ du tablespace SYSTEM

• L’archiver et la purger périodiquement

– Privilège DELETE_CATALOG_ROLE

• Pour consulter l’audit

– L’interroger en SQL la table SYS.AUD$

– Utiliser les vues de l’audit_trail

• DBA_AUDIT_OBJECT,

• DBA_AUDIT_STATEMENT,

• DBA_AUDIT_SESSION,

• etc…

Page 245: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

245

Types d’audit • Audit de connexion

– Audite chaque tentative de connexion:

Ex: AUDIT SESSION [WHENEVER [NOT] SUCCESSFUL];

– Résultat de l’audit: SYS.AUD$, DBA_AUDIT_SESSION

• Audit des actions

– Audite chaque tentative d’action d’un certain type

Ex: AUDIT CREATE TABLE; AUDIT ROLE;

AUDIT CONNECT; AUDIT DBA; …

• Résultat de l’audit: SYS.AUD$, DBA_AUDIT_STATEMENT

• Pour arrêter l’audit: commande NOAUDIT Ex: NOAUDIT CREATE TABLE, NOAUDIT

ROLE; …

• Audit des objets

– Audite un objet particulier (par session, ou par accès)

Ex . AUDIT INSERT ON EMP; AUDIT DELET ON COM BY SESSION

– Résultat de l’audit: SYS.AUD$, DBA_AUDIT_OBJECT

• Audit d’un utilisateur particulier

– AUDIT SELECT TABLE, UPDATE TABLE BY scott, blake;

Page 246: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

246

Conclusion sur l’audit

• Contrôler le volume et le contenu de la table d’audit

• Limiter le droit de supprimer dans la table

– Attention au DBA et à tous les utilisateurs ayant le privilège

DELETE_CATALOG_ROLE

• Toute action ou tentative d’action sur la table d’audit

peut être auditée elle aussi

Page 247: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

247

Petite classe

Expériences sur les pannes

et audit des accès

Page 248: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

248

Sécurité du SGBD

Page 249: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

249

Sécurité des SI (ITSEC) Information Technology Security Evaluation Criteria

• Confidentialité

– Seules les personnes autorisées ont accès aux ressources

• Intégrité

– Les ressources du SI ne sont pas corrompues

• Disponibilité

– L’accès aux ressources du SI est garanti de facon

permanente

• BD: les ressources sont les données de la BD + traitement

activables sur les données

• Et dans certains contexte

– Auditabilité, imputabilité

Page 250: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

250

DBMS : qui attaque ?

• Pirate externe – capable de s’infiltrer sur le serveur

BD et de lire ses fichiers

– capable de casser une clé de chiffrement avec un texte connu

• Pirate utilisateur – est reconnu par le SGBD et a accès

à une partie des données

– suivant le mode de chiffrement, il a accès à certaines clés

• Pirate administrateur (DBA) – employé peu scrupuleux ou pirate

s’étant octroyé ces droits

– a accès à des données inaccessibles aux autres pirates (journal)

– peut espionner le SGBD pendant l’exécution

Client C2

Pirate utilisateur

Client C3

Client C1

Pirate administrateur

BD P.M.E.

Serveur BD

BD

Pirate externe

Page 251: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

251

Principales défenses

Page 252: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

252

Chiffrement de BD

• Protection cryptographique pour

• Protéger les données de la BD

– Observation / altération illicite

• Protéger le moteur d’exécution de la BD

– Vérifier la complétude/exactitude des résultats

Page 253: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

253

Objectifs du chiffrement de la BD

• Seule solution pour résister aux attaques sur les fichiers => Chiffrer l’empreinte disque de la BD

• Questions: – Peut-on chiffrer une BD de manière sûre avec un algorithme de

chiffrement sûr ?

– A quel niveau faut-il chiffrer: OS / application / SGBD ?

– Quelle approche de chiffrement SGBD: serveur / client / matériel sûr ?

• Solutions commerciales: basées sur l’approche serveur – Procédures stockées de chiffrement: Obfuscation Toolkit

– SQL étendu au support du chiffrement: Transparent Data Encryption

– Séparation des tâches: Ex. Protegrity Data Security Platform

Page 254: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

254

Chiffrement Symétrique (“à clé secrête”)

• Auteur et destinataire des messages partagent un secret (clé) – Le secret permet de chiffrer et le déchiffrer les messages

• La sécurité repose sur ce seul secret – Tous les détails du système sont publics, même les fonctions de

chiffrement/déchiffrement

ALICE BOB

m c

MARVIN

c m

c = CK(m) m = DK(c)

= DK(CK(m))

Ch

iffr

e

ch

iffr

e

Secret partagé: clé

K

Page 255: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

255

Chiffrement symétrique (algos)

• Un algorithme sûr résiste aux attaques suivantes:

– L’attaquant connait le texte chiffré c il trouve m, ou mieux, la clé K

– L’attaquant connait des couples clair / chiffré (m, c) il trouve K, ou peut déchiffrer d’autres messages

• DES : Data Encryption Standard (1976 – 1997)

– Chiffrement par bloc de 64 bits

– Chiffrement/déchiffrement = même algorithme

– La clé fait 56 bits

• 3DES : Remplace DES (1997 – 2001)

– Nécessite 3 clés de 56 bits

– 3DES(k1k2k3, m) = DES(k3,DES(k2,DES(k1,m)))

• RIJNDAEL (AES) : Utilisé depuis 2001 (standard depuis 2002)

– Chiffrement par bloc de 128 bits

– La clé fait 128, 192 ou 256 bits

– Rapide, nécessite peu de mémoire

– 1997: 39 jours sur 10 000 Pentium

– 1998: une clé DES cassée en 56h (pour 250 000 $)

– 2007: 6.4 jours sur une machine parallèle ($10,000)

– La meilleure attaque connue nécessite 232

messages clairs connus, 2113 étapes, 290

chiffrements DES, et 288 mémoire !!

– 3DES est sûr (actuellement)

– Seules des attaques canal latéral ont été réussies

sur AES

– Voir www.cryptosystem.net/aes/ pour information

– AES est sûr (actuellement)

Puis-je chiffrer une BD avec 3DES ou AES sans problème ?

Page 256: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

256

Application du chiffrement à une BD

• Les algorithmes de chiffrement résistent aux attaques

… mais pas toujours leur mise en œuvre

• Le contexte BD a des spécificités difficiles à prendre en compte

– Gros volume de données

– Gros besoins de performance

– Motifs répétés, distribution qui peuvent être connues

– Données modifiables

Page 257: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

257

Problème du choix du mode opératoire

• Mode ECB => attaque par analyse de fréquence

– ECB : Motif en clair identiques => motif chiffré identique

• Mode CTR => attaque par comparaisons successives

– CTR : m XOR m’ = DK(m) XOR DK(m) => information sur le contenu des MAJ !

Les spécificités du contexte BD doivent être prises en compte…

Quid des “concessions” faites à la sécurité pour raisons de perf.?

3DES + Mode opératoire ECB

3DES + Mode opératoire CBC

Chiffrer une BD avec un algorithme sûr pose problème…

Page 258: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

258

Problème de performance

• Traiter directement les données chiffrées est

impossible

• Indexer des données chiffrées ne sert à rien

• SAUF SI: on dispose de chiffrement à propriétés

particulières

– Ex. Préservant l’égalité [Ora07, BoP02], l’ordre [AKS+04], ou

l’homomorphisme [GeZ07]

=> Compromis sécurité / performance…

Page 259: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

259

A quel niveau chiffrer ?

• Chiffrement niveau OS => chiffrement fichiers/stockage

– Transparent pour le SGBD et l’application

– … mais chiffrement non sélectif • Chiffrement non lié au droits d’accès

(1 clé par privilège)

• Chiffrement partiel proscrit => performances !

Encrypted Data

Storage layer

Encrypt/Decrypt

Server

RAM

Database Server

DBMS engine

Keys

Data

Application

Solution retenue par certains SGBD (ex: MS SQLServeur, IBM DB2)

Page 260: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

260

Chiffrer au niveau application

– Chiffrement sélectif possible

– Résistance aux attaques internes

– Aucune transparence pour l’application • L’application pilote chiffrement/déchiffrement

– Et gère les clés…

• Et prend en charge des traitements BD

– Requêtes, droits, contrôle d’intégrité…

– Dégradation importante des performances

– Le client peut attaquer les droits d’accès • Les données et les clés sont en clair sur le client

– Difficile d’implanter plusieurs applications

Database Server

Encrypted Data

Storage layer

Server

RAM

DBMS engine

Client

RAM

Keys

Data Application

Encrypt/Decrypt

Application

Solution toujours possible mais pose bcp de problèmes

Page 261: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

261

Chiffrer au niveau SGBD

– Chiffrement sélectif (spécifique)

• Chiffrer selon les privilèges utilisateur

• Chiffrer les données les plus sensibles

– au niveau table, ligne, colonne…

– … de façon conditionnelle (salaire >10K)

– Transparence pour l’application

– … mais mécanismes internes SGBD à revisiter

• Evaluation de requête + indexation sur des données chiffrées impossible

– sauf chiffrement à propriétés particulières (préservant égalité ou l’ordre => dangereux pour la sécurité)

• Surtout dans un contexte où le serveur n’est pas de confiance (approche client)

– … et problème de performance en perspective

Encrypted Data

Storage layer

Server

RAM

Database Server

DBMS engine

Keys

Data

Encrypt/Decrypt

Application

Solution retenue par certains SGBD (Oracle)

Page 262: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

262

Solution « crypto package »

• L’éditeur du SGBD fournit un « package »

– Procédures / fonctions de chiffrement / déchiffrement

– Ex: Oracle Obfuscation Toolkit

• Problèmes

– Difficile à mettre en œuvre

• Package utilisé par le programmeur du SGBD (trigger/proc.) / de l’application

• Gestion des clés laissée aussi à la charge du programmeur

• Impossible d’interroger des données chiffrées…

– Limites inhérentes à l’approche serveur

• Les packages peuvent être substitués (par le DBA, …)

• Les clés sont transmises (voire stockées) au serveur qui chiffre/déchiffre

• Les données apparaissent en clair sur le serveur à l’execution

En pratique: usage limité aux données très sensibles

(Ex: chiffrement des logins/mots de passe)

Page 263: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

263

Solution « chiffrement transparent »

• SQL étendu à la gestion du chiffrement

– Transparent pour les applications

• Chiffrement niveau attribut (Oracle 10g)

– Certaines colonnes sont chiffrées dans tous les tablespaces

(même temporaires), SGA, logs/backups…

• La colonne peut rester indexable (option NO_SALT)

…. Mais l’attaque par analyse de fréquence est alors possible !

– Certains tablespace sont chiffrés (Oracle 11g)

• Tablespaces complets chiffrés sur disque, déchiffrés en SGA

• Indexation classique (indexes chiffrés fabriqués sur le clair)

• Master key chiffrée par un mot de passe (admin.)

ou stockée dans un HSM

• Exemples: Oracle Transparent Data Encryption (TDE),

SQL server 2008 TDE, …

Page 264: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

264

Approche client : le principe

• Chiffrement coté client – Pas de transmission du texte clair ni des clés au serveur

– Le traitement s’effectue sur le client (pire cas)

• La BD est protégée coté serveur – Le serveur résiste aux attaque internes

– Mais… dégradation très importante des performances

Problème : déporter la majeure partie du traitement sur le serveur (données chiffrées), sans perte de sécurité

• Limites de l’approche client – Gestionnaire de droits côté client

– Données et clés en clair sur le client

– Or le client n’est pas forcément un site de confiance

– Donc ne convient pas à une BD partagée (BD privée uniquement)

Database Server

Encrypted Data

Storage layer

Server

RAM

DBMS engine

Client

RAM

Keys

Data Client

Encrypt/Decrypt

Page 265: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

265

Approche client : les techniques

• L’objectif est de déporter le plus possible de taches

sur le serveur sans compromettre la sécurité

• Indexation des données

– Indexation sur le chiffré

• Utilisation d’un mode de chiffrement avec des propriétés particulières

• Ex: préservant l’égalité [Ora07, BoP02], l’ordre [AKS+04], ou

l’homomorphisme [GeZ07]

• Le serveur maintient un index sur le chiffré

• Le client interroge en posant des questions sur le chiffré

• C’est un compromis sécurité / performance…

– Etiquetage des tuples

• Le client pose des étiquettes, pour sélectionner/joindre

• Les étiquettes sont statistiquement indistingables

Page 266: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

266

Solution par étiquetage [HIL+02]

• Granule de chiffrement = tuple

• Ajout d’étiquettes d’attributs

– Indique qu’un attribut de tuple appartient à une plage de

valeurs

– Permet des traitements (approximatifs) sur le serveur

• Sélection, jointure, groupement

id name salary age

Encrypted row Iid Iname Iage Isalary

tuple:

tuple chiffré:

étiquète

Page 267: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

267

• Partitionner le domaine de variation d’un attribut

Attributs numériques

Connaissance du client

Connaissance du serveur

32<Age<40

IAge= 12

OR

IAge= 3

Age=53

IAge= 9

h(1)=17

20 54

h(2)=4 h(3)=12 h(4)=3 h(5)=6 h(6)=1 h(7)=9

24 31 35 40 48 50

Inférences => distribution

uniforme

(nb tuples par partition identique)

• connaissance a priori vs.

updates?

• combinaison d’indices?

• (à suivre…)

E(R1) 3

E(R2) 9

E(R3) 4

(Age=37)

(Age=53)

(Age=26)

IAge

Page 268: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

268

Architecture

Encrypted User

Database

Query

Translator

Server Site

Temporary

Results

Query

Executer

Metadata

Original Query

Server Side

Query

Encrypted

Results

Final Results

Service Provider

User

Client Site

Client Side

Query

+vite

Page 269: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

269

Données personnelles

et anonymat

• Une donnée personnelle est reliée à un individu

• Une donnée est dite anonyme si elle ne peut pas, de

quelque manière que ce soit, être reliée à un individu donné

Page 270: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

270

Intérêt « industriel » pour l’anonymat

• Calculs statistiques sur des données personnelles

– Intérêt commercial évident…

– Marketing et publicité (profilage)

– Compagnies d’assurance et banque (évaluation du risque,

tarification des contrats)

– Santé, recherche (études épidémiologiques), etc.

• Mais des difficultés (au moins pour l’Europe)…

– 1) Obtenir le consentement de l’usager

– 2) L’informer du traitement statistique, etc.

… qui ne se posent pas si les données personnelles

sont rendues « anonymes »…

– Car ces données n’entrent pas dans le champ de la loi

(depuis 2004)

Page 271: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

271 271

Anonymisation : le principe

Données

personnelles

Serveur de

confiance

Serveur de

statistiques

Individus

Données anonymes

(non personnelles)

Page 272: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

272

Anonymisation : les techniques • Pseudonymat: remplace les identifiants par des pseudonymes

– Hachage (cryptographiques) des identifiants

– Conservation des colonnes sensibles utiles

• k-anonymat: cache chaque individu dans une classe de k individus

– Généralisation et suppression des quasi-identifiants

– Conservation des colonnes sensibles utiles

• l -diversité: diversifie les valeurs sensibles des classes

– Complète le k-anomymat

– Contrôle les valeurs sensibles présentes dans chaque classe

• t-fermeture: contrôle la distribution des valeurs sensibles

– Complète le k-anonymat et la l-diversité

– Contrôle la distribution des valeurs sensibles dans les classes

• Garantie différentielle de l’anonymat

– Ajoute de bruit

– Assure qu’un résultat anonyme change très peu avec ajout d’1 individu supplémentaire

• Suivi de cohorte

– M-invariance: les résultats successifs pour une population restent anonymes

Page 273: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

273

123 "M2 Stud." 22 Flu

456 "M1 Stud." 25 HIV

789 "L3 Stud." 20 Flu

SSN Activity Age Diag

ABC "M2 Stud." 22 Flu

MNO "M1 Stud" 25 HIV

XYZ "L3 Stud." 20 Flu

Pseudo Activity Age Diag

Le pseudonymat…

• Base du pseudonymat

– Retirer les identifiants et les remplacer par un pseudo

Données

personnelles Données anonymes

(non personnelles)

…ne garantie pas l’anonymat !

Identifiants

(ID)

Page 274: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

274

Etude de L. Sweeney – 2002 (1)

• Un fichier anomyme produit par une compagnie d’assurance

– Sans d’identifiant (ni nom, ni numéros de sécu, etc.)

– Avec des données sensibles (traitement médical, diagnostique, etc.)

– Et d’autres non sensibles (code postal, genre, etc.)

• Un fichier nominatif (liste de grands électeurs)

– Des identifiants (nom, adresse, parti politiques, etc.)

– Des champs non sensibles (code postal, genre, etc.)

• Ces deux fichiers étant publics…

– L’identité de certaines personnes ne peut pas être préservée

– Sweeney retrouve facilement le dossier médical du gouverneur W. Weld

Comment dé-anonymiser les données ?

Quelle est la proportion de personnes qui reste protégée?

Page 275: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

275

Etude de L. Sweeney – 2002 (2)

• Jointure des deux fichiers sur les données non sensibles

• Sur la base du recensement de 1990 aux USA

– « 87% of the population in the US had characteristics that likely made

them unique based only on {5-digit Zip, gender, date of birth} » [1].

[1] L. Sweeney. k-anonymity: a model for protecting privacy. Int. J. Uncertain.

Fuzziness Knowl.-Based Syst., 10(5), 2002.

Page 276: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

276

k-anonymat [Sweeney]

• Le k-anomynat répond au problème du pseudonymat

• Base du k-anonymat

1) classifier les données

2) retirer les identifiants (comme pour le pseudonymat)

3) supprimer et/ou généraliser les quasi-identifiants (restent vrais!) …

… de manière à former des classes d’individus équivalents de taille k

SSN Activity Age Diag

Identifiers

(ID)

Quasi-Identifiers

(QID)

Sensitive data

(SD)

"Student" [20, 22] Flu

"Student" [20, 22] HIV

"Student" [20, 22] Flu

"Teacher" [24, 27] Cancer

"Teacher" [24, 27] Cancer

"Teacher" [24, 27] Cancer

Activity Age Diag

Jeu 3-anonymes

(par généralisation)

Sue "M2 Stud." 22 Flu

Pat "MC" 27 Cancer

Dan "PhD" 26 Cancer

Bob "M1 Stud." 21 HIV

Bill "L3 Stud." 20 Flu

San "PhD" 24 Cancer

Name Activity Age Diag

Page 277: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

277

k-anonymat : algorithme de Mondrian

Page 278: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

278

Le k-anonymat garantit que…

• Un individu donné est toujours associé à

au moins k individus participants au jeu anonyme

– C’est-à-dire à tous ceux appartenant à une même classe

– Par exemple: « Sue » est associée à au moins 3 tuples du

jeu 3-anonyme

278

"Student" [20, 22] Flu

"Student" [20, 22] HIV

"Student" [20, 22] Flu

Activity Age Diag

Sue "M2 Stud." 22 Flu

Name Activity Age Diag

Jeu 3-anonyme

(par généralisation)

Page 279: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

279

… mais ne garantit pas tout

• Il n’y a pas de contrôle sur les valeurs des attributs

sensibles associées dans une même classe de taille k

– On peut donc avoir moins de k valeurs sensibles par classe

– Voire même une seule valeur sensible !

• Exemple:

– L’individu « Pat » est bien relié à une classe de taille 3…

… mais tous les individus de cette classe ont le même Diag !

Le k-anonymat ne protège pas contre

la dé-anonymisation des attributs sensibles !

"Teacher" [24, 27] Cancer

"Teacher" [24, 27] Cancer

"Teacher" [24, 27] Cancer

Activity Age Diag

Pat "MC" 27 Cancer

Name Activity Age Diag

Page 280: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

280

La l-Diversité

• Complète le k-anonymat

– Afin d’éviter la dé-anonymisation des attributs sensibles

• Assure que chaque classe contient au moins l valeurs

sensibles différentes et « représentatives »

– « représentatives » peut signifier différentes choses

[3] A. Machanavajjhala, D. Kifer, J. Gehrke, M. Venkitasubramaniam, L-diversity: Privacy

beyond k-anonymity, ACM Transactions on Knowledge Discovery from Data (TKDD), 2007.

"Student" [20, 23] Flu

"Student" [20, 23] HIV

"Student" [20, 23] Cancer

"University" [22, 24] Flu

"University" [22, 24] Cold

"University" [22, 24] Cancer

Activity Age Diag Name Activity Age Diag

Sue "M2 Stud." 22 Flu

Pat "MC" 27 Cancer

Dan "PhD" 26 Cancer

Bob "M1 Stud." 21 HIV

Bill "L3 Stud." 20 Flu

San "PhD" 24 Cancer

John "M2 Stud" 22 Cold

Jim "M2 Stud" 23 Cancer

Jeu 3-anonyme

et 3-divers

Page 281: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

281

La l-Diversité garantie que…

• Un individu donné est toujours associé à

au moins l valeurs d’attributs sensibles différentes

parmi les plus représentatives

– Par exemple: l’individu « Bob » est bien associé à trois

valeurs sensibles représentatives {Flu, HIV, Cancer}

– Mais elle ne garantit pas que la classe contienne des

valeurs sensibles reflétant la distribution globale

– Donc: possibilité de discriminer un individu s’il appartient à

une classe « à risque »…

"Student" [20, 23] Flu

"Student" [20, 23] HIV

"Student" [20, 23] Cancer

Activity Age Diag

Bob

Page 282: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

282

La t-fermeture

• Complète la l-Diversité

– Dans chaque classe d’individus, la distribution des valeurs

sensibles suit la distribution globale

(…s’y écarte au maximum d’un facteur t)

– L’appartenance d’un individu à une classe n’apprend rien de

plus sur l’individu que ce qui est connu (distribution globale)

– Exemple

[4] N.Li, T. Li, S. Venkatasubramanian. t-closeness: Privacy beyond k-anonymity and l-diversity. In IEEE

23rd International Conference on Data Engineering, 2007.

Même distribution

Age Gender Diag Count

< 40 M Flu 400

< 40 M Cancer 200

40 M Flu 400

40 M Cancer 200

40 F Flu 400

40 F Cancer 200

Page 283: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

283

Suivi de cohorte

• Objectif: produire successivement dans le temps un jeu de

données anonymes correspondant à un groupe d’usagers

(cohorte), pour voir comment les données évoluent

• Problème: les mises à jour des données (suite à un

changement de valeurs sensibles ou à l’entrée ou la sortie d’un

individu dans le groupe) permettent de dé-anonymiser…

– Example

"Student" [20, 23] Flu

"Student" [20, 23] HIV

"Student" [20, 23] Cancer

Activity Age Diag Name Activity Age Diag

t1

"Student" [19, 21] HIV

"Student" [19, 21] Cold

"Student" [19, 21] Dysp

Bob "M1 Stud." 21 HIV

Helen "L1 Stud." 18 Cold

Jules "L1 Stud" 19 Dysp. t2

Bob "M1 Stud." 21 HIV

Bill "L3 Stud." 20 Flu

Jim "M2 Stud" 23 Cancer

=> Sachant que Bob est toujours dans la cohorte, on connait son Diag…

Page 284: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

284

Introduction de bruit • Résolution par introduction de données factices

• La m-Invariance [5]

– Les données ne doivent pas (trop) varier d’une version à la version suivante

• La garantie différentielle d’anonymat

– Un algorithme offre une garantie différentielle d’anonymat SSI

sont résultat diffère au plus de 0 quand on retire 1 individu (n’importe lequel)

"Student" [20, 23] Flu

"Student" [20, 23] HIV

"Student" [20, 23] Cancer

Activity Age Diag Name Activity Age Diag

t1

"Student" [20, 23] HIV

"Student" [20, 23] Flu

"Student" [20, 23] Cancer

"University" [18, 24] Cold

"University" [18, 24] Dysp.

"University" [18, 24] Gast.

Bob "M1 Stud." 21 HIV

Helen "L1 Stud." 18 Cold

Jules "L1 Stud" 19 Dysp.

Gary "PhD" 24 Gast.

t2

Bob "M1 Stud." 21 HIV

Bill "L3 Stud." 20 Flu

Jim "M2 Stud" 23 Cancer

2 tuples

factices

[5] X. Xiao, Y. Tao. M-invariance: towards privacy

preserving re-publication of dynamic datasets, In

ACM SIGMOD 2007

Page 285: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

285

La garantie différentielle d’anonymat

• But: répondre à des calculs sur des données privées et fournir

un résultat anonyme avec une garantie

• Idée de base: que les données concernant un seul individu

soient présentes ou non, les résultat des requêtes doivent être

indistingable

• Ce modèle résiste aux attaques conduites par des attaquants

“informés” (ayant une connaissance antérieure)

Bob "M1 Stud." 21 HIV

Bill "L3 Stud." 20 Flu

Jim "M2 Stud" 23 Cancer

Algo.

(GDA)

R: Count « Flu » patients

R(D): 1 + bruit = p

R: Count « Flu » patients

R(D’): 0 + bruit = q

D:

Bob "M1 Stud." 21 HIV

Jim "M2 Stud" 23 Cancer

D’:

indistingables D et D’ sont des tables voisines

(ne diffère que par 1 seul tuple)

Page 286: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

286

Définition formelle

• Distribution des résultats possibles

• L’algo. A offre une garantie différentielle d’anonymat de A SSI:

Pro

ba

bili

Résultat de la requête (ensemble S) (count « Flu » patients)

Base D

Base D’

Paramètre d’anonymat

Page 287: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

287

La garantie différentielle d’anonymat (3)

• Des algorithmes d’anonymisation offrent ce type de garanties

– Ex: (a, b)algorithm [14]

• Problème:

– Le système ne peut plus fournir de résultats précis après un certain

nombre de requêtes

– L’analyste qui a consommé toutes ses requêtes est bloqué

[14] Vibhor Rastogi, Dan Suciu and Sungho Hong, The Boundary between privacy and utility in data publishing, in VLDB 2007

Page 288: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

288

Et les dossiers « historiques » ? Cas NetFlix (trace GPS, trace d’accès, etc.)

• NetFlix Prize :1M€

• Fin en 2010 suite à une

« class action »

• 500K recommandations

anonymes

– Arvind Narayanan & Vitaly

Shmatikov

– connaissance antérieur

prises dans Imdb

– www.cs.utexas.edu/~shmat/

shmat_oak08netflix.pdf

Page 289: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

289

Conclusion sur l’anonymat

• Permet de calculer des statistiques

– En sortant de la régulation sur les données personnelles

• De nombreuses techniques

– Pseudonymat

• Une phase incontournable mais très insuffisante

• Garanties d’anonymat très faibles voire inexistante

– k-anonymat, l-diversité, t-fermeture

• Le k-anonymat empêche la dé-anonymisation des tuples par jointure sur les

quasi-identifiants

• Le k-anonymat est préconisé aux USA

• Il ne garantie pas la dé-anonymisation des attributs sensibles

• Une famille de techniques complète les garanties d’anonymat

• … mais réduisent fortement l’usage

– Difficile d’assurer l’anonymat pour des versions successives

• Ou conduit à dégrader très fortement l’usage…

• Mais aucune ne garanti vraiment l’anonymat

Page 290: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

290

En guise d’ouverture: cloud personnel

• $2 milliards/an dépensés aux US dans

l’achat d’informations personnelles

[Rapport Forrester 30/09/2011]

• Retour sur investissement énorme

[$44.25/$1 selon Direct Marketers Association]

[77% selon Marketing Sherpa, 2013]

• “Personal data is the new oil” [Forum Economique Mondial]

Valeur boursière GAFA

Monétisées par les acteurs dominants du Web

e.g., Ye$Profile : l’utilisateur loue ses données

290

People recording

People listenning

St Peter's Place, Roma

Pope Benedikt

Pope Francis

n°mobile 0,60€

géolocalisation 1,00€

email 0,15€

pointure 0,15€

Page 291: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

Pour les gérer : modèle du Web actuel ?

Problèmes intrinsèques

Délégation vie privée

Très grands volumes sécurité

Fragmentation complétude

Pub. ciblée Profils

Res. sociaux Photos

Mail Banques

Achats

291

Capteurs Localisation

Plus de contrôle pour l’usager

Consensus : éco. (FEM), politique (EU)...

Dissémination contrôlée

Calculs globaux anonymes et participatifs

Analyses croisées Auto-évaluation

Web personnel : rendre les données

Analyses croisées (complétude de facto)

Dissémination contrôlée (information vs données)

Calculs globaux anonymes et participatifs

Quelles incitations ?

Quelles solutions techniques ?

Page 292: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

Comment rendre ses données au citoyen ?

Sur son ordinateur personnel ? Auto-administration, sécurité

Sur un service Cloud ? Aggravation du problème de vie privée

Principes fondateurs des architectures envisagées

Centrées sur l’individu, la propriété des données, et la vie privée

Cadre propice à la législation et aux recommandations des CNIL

Solution centralisées : établir des serveurs de confiance

Normes, labellisation, cadre contractuel

Ex: Cloud souverain, DB Hippocratiques (IBM), infomédiaires…

Sécurité renforcée : cryptographie / matériel résistant aux attaques

Ex: CryptDB [SOSP11], Oracle/Amazon avec HSM, TrustedDB [TKDE14]

Nouvelle approche : serveurs personnels de données

PDS/PlugDB@Inria [VLDB10], OpenPDS@MIT [PLOS14], CozyCloud, OwnCloud…

Blue Button (USA), MesInfo (FR), MyData (FIN) …

292

Page 293: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

Serveur personnel* de données …

Chaque serveur est personnel et de confiance pour son propriétaire

Le serveur d’un seul individu pas de concentration

Auto-administré sous le contrôle de l’individu pas de délégation

Exécution locale au serveur personnel

Régulation de la diffusion des données

Ex: OpenPDS@MIT [PLOS14]

+ Logiciel libre et plateforme isolée (matériel dédié ou virtualisé)

Vérification communautaire, sécurité renforcée vis-à-vis des applications

Ex: Freedombox, Owncloud, CozyCloud, CloudMask…

+ Sécurité matérielle

Résistance aux attaques physiques

Ex: PDS/PlugDB@Inria [VLDB10]

* PIMS, Cloud personnel, Web personnel, …

293

Page 294: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

Web personnel sécurisé

Une plateforme de Web personnel

… dotée d’un élément de sécurité matériel

Privacy-by-Design [Cavoukian12]

/!\ Il ne s’agit pas de cacher des secrets

Contrôle du cycle de vie des données

Assuré au plus proche des sources

Capteurs, objets intelligents, PC, smartphone……

Jusqu’à leur stockage & exploitation

Perspectives ( et défis technologiques)

Dossiers transverses hétérogénéité, sécurisation

P-b-D gestion de données confinées, collecte minimum

Calculs à grande échelle distribution, sécurisation

Exemple: PlugDB@Inria/CozyCloud

Cloud

Serveur

Personnel data Secure

HW

GPS

A

B

C

294

Page 295: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

295

PlugDB@Inria : https://project.inria.fr/plugdb/

Versailles Sciences Lab: http://vsl.prism.uvsq.fr/projets/systeme-dinformation-privacy-by-design-2/

295

SD card

Bluetooth

Fingerprint

reader

Smartcard

(data managt)

(secrets) (data)

MCU

USB

Page 296: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

296

Annexes

Page 297: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

297

Mode opératoire Electronic Code Book

• Les blocs sont chiffrés indépendamment

• Remarque : : P1=P2 => EK(P1)=EK(P2)

Plain-text 2 (P2)Plain-text 1 (P1) …

80

by tes

16

Cipher-text 2 (C2) …Cipher-text 1 (C1)

EK (P2)EK (P1)

Page 298: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

298

Mode opératoire Cipher Block Chaining

Init. Vector (IV)

Plain-text 2 (P2)Plain-text 1 (P1) …

80

by tes

16

Cipher-text 2 (C2) …Cipher-text 1 (C1)

EK (IV P1) EK (C1 P2) EK (…)

• les blocs chiffrés intégrent la valeur des

précédents

Page 299: Systèmes de Gestion de Bases de Données - anciaux/ENSTA/ASI13/1-cours/ENSTA-ASI13.pdf · ±Connaissances avancées ... ± Déclaration SQL de contraintes dintégrité et ... ±

299

Mode opératoire CTR

• Résultat du XOR entre le clair et un mot aléatoire

Init. Vector (IV)

Plain-text 2 (P2)Plain-text 1 (P1) …

80

by tes

16

Cipher-text 2 (C2) …Cipher-text 1 (C1)

EK (IV+1) P1+1

EK (IV+2) P2+2 +3