conception de bases de données

74
Bases de données Luc Bouganim – [email protected] http://www-smis.inria.fr/~bouganim/afti • Conception de bases de données • Modèle Relationnel • SQL • JDBC • Transaction, Optimisation • Sécurité •… 2 3 Plan de la session (1) Jour 1: Matin Problèmes des approches fichiers, l’approche base de données Conception de bases de données (light) Æ Exercices sur un cas pratique Le modèle relationnel SQL : le LDD (Langage de Définition de Données) Jour 1: Après midi Æ Création d'une base Oracle, insertion, chargement massif Jour 2: Matin Vue d'ensemble des fonctionnalités des SGBD SQL : le LMD (Langage de Manipulation de données) SQL et JAVA : JDBC Jour 2: Après midi Æ Interrogation d'une base de données en SQL 4 Plan de la session (2) Jour 3: Matin Méthodologie SQL Optimisation, Concurrence d'accès, Sécurité / Confidentialité Jour 3: Après midi Æ Interrogation avancée d'une base de données en SQL Æ Interrogation d'une BD depuis un programme JAVA Jour 4: Matin (Cryptographie et bases de données) (Dictionnaire de données) Æ Injection SQL Æ Concurrence d'accès Jour 4: Après midi Examen (2h)

Upload: ngocong

Post on 05-Jan-2017

246 views

Category:

Documents


14 download

TRANSCRIPT

Page 1: Conception de bases de données

Bases de données

Luc Bouganim – [email protected]

http://www-smis.inria.fr/~bouganim/afti

• Conception de bases de données• Modèle Relationnel• SQL• JDBC• Transaction, Optimisation• Sécurité•…

2

3

Plan de la session (1)• Jour 1: Matin

– Problèmes des approches fichiers, l’approche base de données – Conception de bases de données (light)

Exercices sur un cas pratique– Le modèle relationnel– SQL : le LDD (Langage de Définition de Données)

• Jour 1: Après midiCréation d'une base Oracle, insertion, chargement massif

• Jour 2: Matin– Vue d'ensemble des fonctionnalités des SGBD– SQL : le LMD (Langage de Manipulation de données) – SQL et JAVA : JDBC

• Jour 2: Après midiInterrogation d'une base de données en SQL

4

Plan de la session (2)• Jour 3: Matin

– Méthodologie SQL– Optimisation, Concurrence d'accès, Sécurité / Confidentialité

• Jour 3: Après midiInterrogation avancée d'une base de données en SQL Interrogation d'une BD depuis un programme JAVA

• Jour 4: Matin– (Cryptographie et bases de données)– (Dictionnaire de données)

Injection SQLConcurrence d'accès

• Jour 4: Après midi– Examen (2h)

Page 2: Conception de bases de données

Problèmes des approches fichiers, l'approche base de données

6

Chirurgie

Psychiatrie

Systèmes de fichiers Caractéristiques

Comptabilité

Consultations

Problèmes

7Plusieurs applications CaractéristiquesPlusieurs applications

plusieurs formats

plusieurs langages

ProblèmesDifficultés de gestion

DupontSymptomes : yTurlututu : sqjSymptomes : yTurlututu : sddAnalyses : xxx

DupondTurlututusqjskSymptom: yyyyAnalyses xxxx

TurlututudhjsdAnalyses :xx

DuipontTurlututu : sq

SymptomyyyyAnalysesxxxx

Turlututudhjsd

Duhpon

Symptomes : yyAnalyses : xxxx

Symptomes : yy

8Redondance (données) CaractéristiquesPlusieurs applications

plusieurs formats

plusieurs langages

Redondance de données

ProblèmesDifficultés de gestionIncohérence des données

DupontSymptomes : yTurlututu : sqjSymptomes : yTurlututu : sddAnalyses : xxx

DupondTurlututusqjskSymptom: yyyyAnalyses xxxx

TurlututudhjsdAnalyses :xx

DuipontTurlututu : sq

SymptomyyyyAnalysesxxxx

Turlututudhjsd

Duhpon

Symptomes : yyAnalyses : xxxx

Symptomes : yy

Page 3: Conception de bases de données

9Interrogations CaractéristiquesPlusieurs applications

plusieurs formats

plusieurs langages

Redondance de données

Pas de facilité d’interrogation Question ⇒développement

ProblèmesDifficultés de gestionIncohérence des donnéesCoûts élevésMaintenance difficile

DupontSymptomes : yTurlututu : sqjSymptomes : yTurlututu : sddAnalyses : xxx

DupondTurlututusqjskSymptom: yyyyAnalyses xxxx

TurlututudhjsdAnalyses :xx

DuipontTurlututu : sq

SymptomyyyyAnalysesxxxx

Turlututudhjsd

Duhpon

Symptomes : yyAnalyses : xxxx

Symptomes : yy

Chi

ruSo

ft

ConsultSoft Ps

ychi

aSof

t

Com

ptaSoft

10Pannes ??? CaractéristiquesPlusieurs applications

plusieurs formats

plusieurs langages

Redondance de données

Pas de facilité d’interrogation Question ⇒développement

Redondance de code

ProblèmesDifficultés de gestionIncohérence des donnéesCoûts élevésMaintenance difficileGestion de pannes ???

DupontSymptomes : yTurlututu : sqjSymptomes : yTurlututu : sddAnalyses : xxx

DupondTurlututusqjskSymptom: yyyyAnalyses xxxx

TurlututudhjsdAnalyses :xx

DuipontTurlututu : sq

SymptomyyyyAnalysesxxxx

Turlututudhjsd

Duhpon

Symptomes : yyAnalyses : xxxx

Symptomes : yy

Chi

ruSo

ft

ConsultSoft Ps

ychi

aSof

t

Com

ptaSoft

11Partage de données CaractéristiquesPlusieurs applications

plusieurs formats

plusieurs langages

Redondance de données

Pas de facilité d’interrogation Question ⇒développement

Redondance de code

ProblèmesDifficultés de gestionIncohérence des donnéesCoûts élevésMaintenance difficileGestion de pannes ???Partage des données ???

DupontSymptomes : yTurlututu : sqjSymptomes : yTurlututu : sddAnalyses : xxx

DupondTurlututusqjskSymptom: yyyyAnalyses xxxx

TurlututudhjsdAnalyses :xx

DuipontTurlututu : sq

SymptomyyyyAnalysesxxxx

Turlututudhjsd

Duhpon

Symptomes : yyAnalyses : xxxx

Symptomes : yy

Chi

ruSo

ft

ConsultSoft Ps

ychi

aSof

t

Com

ptaSoft

12Confidentialité CaractéristiquesPlusieurs applications

plusieurs formats

plusieurs langages

Redondance de données

Pas de facilité d’interrogation Question ⇒développement

Redondance de code

ProblèmesDifficultés de gestionIncohérence des donnéesCoûts élevésMaintenance difficileGestion de pannes ???Partage des données ???Confidentialité ???

DupontSymptomes : yTurlututu : sqjSymptomes : yTurlututu : sddAnalyses : xxx

DupondTurlututusqjskSymptom: yyyyAnalyses xxxx

TurlututudhjsdAnalyses :xx

DuipontTurlututu : sq

SymptomyyyyAnalysesxxxx

Turlututudhjsd

Duhpon

Symptomes : yyAnalyses : xxxx

Symptomes : yy

Chi

ruSo

ft

ConsultSoft Ps

ychi

aSof

t

Com

ptaSoft

Page 4: Conception de bases de données

13

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

• Modélisation des données Eliminer la redondance de donnéesCentraliser et organiser correctement les donnéesPlusieurs niveaux de modélisationOutils 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

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

BDVIII - 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

Conception de bases de données

16

Relationnel

• Organisation physique des données

• Structures de stockage des données

• Structures accélératrices (index)

• Dépendant du modèle de données

• Dépendant du SGBD

Modèle Physique

XMLObjetCodasyl• Dépendant du modèle de données

• Indépendant du SGBD

Modèle logique

•Indépendant du modèle de données

• Indépendant du SGBD

Modèle conceptuel

Réel

Modélisation du réel

Médecin effectue Visite

Page 5: Conception de bases de données

17

Méthode de conception ?• Plusieurs façons d’aborder la conception d’une BD

– Intuition + création directe de la BD – Suivre une méthode de conception (MCD MLD MPD) ☺

• Entité/Association (E/A) ou Entity/Relationship (E/R)• Merise• UML

• Suivre son intuition peut conduire à des erreurs – Redondances– Valeurs nulles– Difficulté de gestion– Impossibilité de répondre à certaines questions

• Une fois la base de données crée, difficile à modifier… (cf. TP)

• Les outils de conception sont une aide précieuse

18

Exemple de mauvaise conception (1)

• Redondance des données et incohérence potentielle– Personne répétée pour chaque voiture : ex. Si Joe Bar change

de ville et qu’une seule ligne est mise à jour…– Redondance Ville/Pays : impact d’une erreur de saisie

• Anomalies de mises à jour et besoin de valeurs nulles.– Comment insérer une personne sans voiture ?– Sémantique de calculs avec des valeurs nulles…– Comment supprimer la dernière voiture d'une personne ?

N° Nom Prénom Ville Pays Immatriculation Marque Couleur1 Bar Joe Paris France 125PP75 Renault Rouge2 Dean Pascal Vence France 453LL06 Peugeot Vert3 Ben Zoe Lyon France 526UU69 Renault Rouge4 Bar Joe Paris France 257LPM75 Renault Jaune

19

Exemple de mauvaise conception (2)

• Redondance cachée : – Nombre d’enfants vs enfants

• Difficulté de gestion– Comment gérer les personnes ayant plus de 3 enfants !– Comment afficher la liste des enfants ?

N° Nom Prénom Ville Pays Enfant 1 Enfant2 Enfant3 NbEnfants1 Bar Joe Paris France Paul Zoe 22 Dean Pascal Vence France Lili 13 Ben Zoe Lyon France Sam Tor Tur 34 Cat Tom Lens France 0

20

TRAITEMENTDONNEES

MPTDescription de l’architecture des traitements, algorithmes

MPDCréation de la base de donnée

Modèle Physique

MLTStructuration en procédure

MLDModèle logique (e.g, relationnel)Modèle

logique

MCTQuels traitements ?

MCDQuelles données ? Quelle organisation ?

Modèle conceptuel

Réel

Méthodes de conception : Exemple Merise

Objectif du cours : E/A, Merise, UML ? E/A light, Merise ultra-light

Page 6: Conception de bases de données

21

GENERATION AUTOMATIQUE POSSIBLE !

Approche proposée : orientée données1/ 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

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

ProfsBouganimLuc.....

ProfsCrennIsabelle....

Profs

NomPrénomAdresse

Entités Type d'entité

23

Déf° (2) : 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

• 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

24

Déf° (3) : 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

• 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

• Question : quid de visite : entité ou association ???– Un docteur visite un patient association– Un docteur effectue une visite concernant un patient

Page 7: Conception de bases de données

25

Exemple : Profs et cours...Profs

CodeProfNomPrénomAdresse

CoursCodeCoursNomCours…

enseigneNbreHeures

Profs3LewisJerry....

Profs1CrennIsabelle....

Profs2BouganimLuc.....

Cours

1Maths.....

Cours

2Infos...

enseigne

55

enseigne

16

enseigne

24

26Dé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 Coursenseigne

Profs Coursenseigne

27

• ‘‘Énoncer le réel’’ à modéliser avec des phrases

• Exemple pour la gestion de rendez vous– Les patients ont des rendez vous avec des médecins

• Un patient peut avoir plusieurs RDV (voire aucun) 0,n• Un médecin reçoit plusieurs patients (voire aucun) 0,n

– Un médecin exerce dans une salle• Un médecin n’exerce que dans une seule salle 1,1• Une salle peut être partagée par plusieurs médecins 1,n

Comment produire le MCD ? (1/3)

Salles

1,1

1,n

Médecin

exerce

Patient

Médecin

0,n

0,n

à un RDV

28Comment produire le MCD ? (2/3)• On obtient :

• Pour connaître la salle, pour un rendez vous, on passe par le médecin

Ce MCD est bon

• Et si maintenant le médecin peut exercer dans plusieurs salles ?

• Comment connaître la salle d’un rendez vous ?

Ce MCD n’est pas bon !

Patient Médecina un rdv0,n 0,n

SalleExerce1,n 1,n

Patient Médecina un rdv0,n 0,n

SalleExerce1,1 1,n

Page 8: Conception de bases de données

29

Comment produire le MCD ? (3/3)

OuiNonNonPré-allouer des salles aux médecinsOuiOuiNonConnaître la salle pour 1 RDV donné(C)(B)(A)Différences fonctionnelles

Patient Médecina un rdv0,n 0,n

Salle

1,n

Patient Médecina un rdv0,n 0,n

Salle

Exerce1,n

1,n(B) 1,n

Patient Médecina un rdv0,n 0,n

SalleExerce1,n 1,n

(C)

(A)

30

Cas pratique : Gérer les notes des étudiants

• Détailler le problème : Que veut dire gérer les notes – Que veut on faire ?

• établir les bulletins semestriels ?• établir des bulletins provisoires ?• établir des moyennes ?• Faire des statistiques sur plusieurs années ?• Evaluer les notes en fonction des profs...

• Premier brouillon des données à gérer...– Notes, étudiants, Cours...

31

Où s'arrêter dans la modélisation? • ‘‘Énoncer le réel’’ à modéliser avec des phrases

– Un étudiant obtient des notes à des cours– Un étudiant habite dans une ville– Un étudiant a eu un bac d’un certain type– Les étudiants sont regroupés en sous groupes– Les sous groupes sont regroupés en groupes – Les groupes sont regroupés en promotions

• Ne faire des entités que si elles ont une utilité

C’est le réel à modéliser !!!!

• Dépend de l’objectif de l’application

32

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 9: Conception de bases de données

33Rè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é dans son intégralité(on ne cherchera jamais a 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 grouper des propriétés qui devrait être éclatées»

• Une propriété calculée n’est pas à stocker ! (rejoint la règle 8)– Sinon, c’est redondant source d’incohérence

• Une propriété constante n’est pas à stocker (rejoint la règle 8)– Sinon, c’est redondant source d’incohérence– On utilisera une table de constantes ...

34

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.

35

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...

36

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 co-exister. En choisir un…

• Si vous ne trouvez aucun identifiant, votre « entité » est sans doute une association …

Page 10: Conception de bases de données

37

Règles (6) : Dépendance pleine des entités• Les propriétés d’une association doivent dépendre de

la totalité des entités associées. Si certaines propriétés ne dépendent que d’un sous ensemble des entités, on devra – les rattacher à une des entités– créer une nouvelle association

associant ce sous ensemble

• Exemple:1/ Un prof enseigne toujours

dans la même salle dans prof2/ La salle dépend du prof et

du cours Nouvelle association entre prof et cours

Prof Groupe

Cours

enseigneHeureSalle

38

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

GroupeEnseigne

Heure

?

Salle

Prof

Cours

39

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.

Nom Adresse Ville PaysJim .... Paris FranceJack .... Paris FranceJoe .... Mantes FranceJerry .... Paris France

Première modélisation ‘restreinte’• Gérer les notes des étudiants veut dire:

– Hypothèses :• une base de données pour chaque promo et pour chaque semestre

– Données : • Etudiants (nom, prénom, groupe)• Cours (nom, pôle, coefficient)• Notes (pour un étudiant et un cours: DS1, DS2, Participation, Examen)

– Traitements :• Moyenne par cours pour chaque étudiant• Moyenne par pôle pour chaque étudiant• Moyenne générale pour chaque étudiant • Moyenne par groupe, par cours.

Page 11: Conception de bases de données

Modèle entité-association

Commentaires☺ Le schéma est simple, il répond au problème

☺ On a un minimum de données

On ne peut pas faire de suivi sur une promo

On ne peut pas faire de suivi par prof

Pas de statistiques sur plusieurs années

Problème de gestion: on aura 4 fois les mêmes programmes

Etudiant

N°NomPrénomGroupe

Cours

NomCoursPôleCoefficient

a obtenuDS1DS2ParticipationExamen

0,n 0,n

Modèle entité-association

Etudiant

N°NomPrénom

Cours

NomCoursPôleCoefficient

1,n 1,na obtenu

Note

TypeNote

TypeCoefficient

1,n

Commentaires☺ Le schéma est simple, il répond au problème

☺ On a un minimum de données

Modélisation ‘complète’• Gérer les notes des étudiants veut dire:

– Hypothèses :• Une base de données pour l’Université (pour plusieurs années)• On veut gérer les profs pour faire des stats par profs, par promos,

etc...

– Problèmes : • Gestion des redoublement, de la situation (actuelle) d’un étudiant• Cohabitation de notes sur plusieurs années, des profs, des étudiants ??• Les matières sont enseignés par plusieurs profs, qui met les notes ??• Comment modéliser qu’un prof enseigne à un groupe de TP ?

– Données :• Etudiants, Matières, Notes• TypeDeNotes, Periodes, Profs, Groupes, etc...

Modèle entité-association

Etudiant

N°NomPrénom

Cours

NomCoursPôleCoefficient

1,n 1,n

Période

CodeAnnéeSemestre

Profs

NomPrénomAdresse

Groupe

Code

a obtenu

Note

Est dans Enseigne

Nb heures

1,n

1,n

1,n

1,n

1,n1,n1,n

1,n

TypeNote

TypeCoefficient

1,n

1,n

Page 12: Conception de bases de données

Le modèle relationnel

46

Le modèle relationnel• En 1970, Codd, mathématicien, chercheur chez IBM,

propose le Modèle Relationnel, basé sur le concept de Relation de la théorie des ensembles

A Relational Model of Data for Large Shared Data Banks,CACM 13, No. 6, June 1970

• Il définit l’ Algèbre Relationnelle sur laquelle est baséSQL (Structured Query Language), le langage standard de manipulation (LMD) et de description des données (LDD) de tous les SGBD Relationnels actuels

47

Domaine• ENSEMBLE DE VALEURS• Exemples:

– ENTIER– REEL– CHAINES DE CARACTERES– EUROS– SALAIRE = {4 000..100 000}– COULEUR= {BLEU, BLANC, ROUGE}

48

Produit cartésien• LE PRODUIT CARTESIEN D1x D2x ... x Dn

EST L'ENSEMBLE DES TUPLES (N-UPLETS) <V1,V2,....Vn> TELS QUE Vi∈Di

• Exemple:– D1 = {Bleu,Blanc,Rouge}– D2 = {Vrai, Faux}

Bleu VraiBleu FauxBlanc VraiBlanc FauxRouge VraiRouge Faux

Page 13: Conception de bases de données

49

Relation, attribut• SOUS-ENSEMBLE DU PRODUIT CARTESIEN

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 FauxBlanc VraiRouge Vrai

CoulVins Coul Choix

50

Champs, attributs, colonnes

Champs, attributs, colonnes

Champs, attributs, colonnes

Exemple de relation

…………..….

PrénomNomId-D

JeanMasse3

PaulDurand2

PierreDupont1

Relation ou table

Tuples, lignes ou n-uplets

Tuples, lignes ou n-uplets

Tuples, lignes ou n-uplets

Tuples, lignes ou n-uplets

51

Clé• GROUPE D'ATTRIBUTS MINIMUM QUI

DETERMINE UN TUPLE UNIQUE DANS UNE RELATION

• Exemples:– {CRU,MILLESIME} DANS VINS ==> NV– NSS DANS PERSONNE

• CONTRAINTE D'ENTITE– Toute relation doit posséder au moins une clé documentée

52

Clé Etrangère

• GROUPE D'ATTRIBUTS DEVANT APPARAITRE COMME CLE 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 entité-association obligatoires

Page 14: Conception de bases de données

53

Modélisation Relationnelle (2)

…………..….

PrénomNomId-D

JeanMasse3

PaulDurand2

PierreDupont1

Docteurs

Visites

2

2

1

1

Id-D

1 mars

13 juillet

12 août

15 juin

Date

250

350

180

250

Prix

4

3

2

1

Id-V

3

2

1

2

Id-P

Patients

…….

Paule

John

Zoe

Jacques

Prénom

…….…….….

ValentonPerry4

VilleNomId-P

ParisDoe3

EvryTroger2

ParisLebeau1

…………….….….

2 gouttes332

12

8

5

12

Id-M

1 par jour

2 par jour

10 gouttes

1 par jour

Posologie

2

1

2

1

Ligne

2

2

1

1

Id-V

Prescriptions

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

DescriptionNomId-M

……………………………..Mucomyst3

……………………………..Fluisédal2

……………………………..Aspegic 10001

Médicaments

54

Clés primaires

…………..….

PrénomNomId-D

JeanMasse3

PaulDurand2

PierreDupont1

Docteurs

Visites

2

2

1

1

Id-D

1 mars

13 juillet

12 août

15 juin

Date

250

350

180

250

Prix

4

3

2

1

Id-V

3

2

1

2

Id-P

Patients

…….

Paule

John

Zoe

Jacques

Prénom

…….…….….

ValentonPerry4

VilleNomId-P

ParisDoe3

EvryTroger2

ParisLebeau1

…………….….….

2 gouttes332

12

8

5

12

Id-M

1 par jour

2 par jour

10 gouttes

1 par jour

Posologie

2

1

2

1

Ligne

2

2

1

1

Id-V

Prescriptions

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

DescriptionNomId-M

……………………………..Mucomyst3

……………………………..Fluisédal2

……………………………..Aspegic 10001

Médicaments

55

Clés étrangères

…………..….

PrénomNomId-D

JeanMasse3

PaulDurand2

PierreDupont1

Docteurs

Visites

2

2

1

1

Id-D

1 mars

13 juillet

12 août

15 juin

Date

250

350

180

250

Prix

4

3

2

1

Id-V

3

2

1

2

Id-P

Patients

…….

Paule

John

Zoe

Jacques

Prénom

…….…….….

ValentonPerry4

VilleNomId-P

ParisDoe3

EvryTroger2

ParisLebeau1

…………….….….

2 gouttes332

12

8

5

12

Id-M

1 par jour

2 par jour

10 gouttes

1 par jour

Posologie

2

1

2

1

Ligne

2

2

1

1

Id-V

Prescriptions

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

DescriptionNomId-M

……………………………..Mucomyst3

……………………………..Fluisédal2

……………………………..Aspegic 10001

Médicaments

56

Schéma relationnel

• Docteurs (Id-D, Nom, Prénom)

• Visites (Id-D, Id-P, Id-V, Date, Prix)

• Prescriptions (Id-V, Ligne, Id-M, Posologie)

• Patients (Id-P, Nom, Prénom, Ville)

• Médicaments (Id-M, Nom, Description)

• En souligné : clés primaires

• En italiques : clés étrangères

• ¨Il faudrait indiquer les types (domaines) de chaque attribut

Page 15: Conception de bases de données

57

MétabaseDICTIONNAIRE DE DONNEES, ORGANISE SOUS FORME RELATIONNELLE, CONTENANT LA DESCRIPTION DES RELATIONS, ATTRIBUTS, DOMAINES, CLES, etc.

RELATIONS

12141

PERSOPERSOSYS

454

NUM BASE NOM NBATT

EMPLOYEDEPARTEMENTRELATIONS

ATTRIBUTS

ENTIERTEXTETEXTE

121212

NUM TYPE NOM NUMREL

NUMNOMPNOM

12

3

58

Passage 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îne des schémas trop complexes• On ‘‘tolère’’ un peu de redondance ou quelques valeurs nulles....

59

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é ’’ par l’une ou l’autre des entité– devenir une table.

60

Exemple 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 NbreHeuresBouganim Luc Paris Info Informatique 44Crenn Isabelle Paris Math Mathématiques 78Rousseau Martine Versailles Droit Droit 26

Solution 1

Solution 2

Nom Prénom AdresseBouganim Luc ParisCrenn Isabelle ParisRousseau Martine Versailles

NomCours DescriptionInfo InformatiqueMath MathématiquesDroit Droit

Nom NomCours NbreheuresBouganim Info 44Crenn Math 78Rousseau Droit 26

Profs

NomPrénomAdresse

Cours

NomCoursDescription

Enseigne

NbreHeures1,1 1,1

Page 16: Conception de bases de données

61

Exemple 2• 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 NbreHeuresBouganim Luc Paris Info Informatique 44Crenn Isabelle Paris Math Mathématiques 78

Droit Droit

Nom Prénom Adresse NomCours NbreHeuresBouganim Luc Paris Info 44Crenn Isabelle Paris Math 78

NomCours DescriptionInfo InformatiqueMath MathématiquesDroit Droit

Solution 1

Solution 2

Profs

NomPrénomAdresse

Cours

NomCoursDescription

Enseigne

NbreHeures1,1 0,1

62

Exemple 3• Un prof enseigne un ou

plusieurs cours

• Un cours est enseigné par un et un seul prof

Nom Prénom Adresse NomCours Description NbreHeuresBouganim Luc Paris Info Informatique 20Crenn Isabelle Paris Math Mathématique 48Crenn Isabelle Paris Droit Droit 26

Nom Prénom AdresseBouganim Luc ParisCrenn Isabelle Paris

Solution 1

Solution 2Nom NomCours Description NbreHeuresBouganim Info Informatique 20Crenn Math Mathématique 48Crenn Droit Droit 26

Profs

NomPrénomAdresse

Cours

NomCoursDescription

Enseigne

NbreHeures1,n 1,1

63Passage au modèle relationnel -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

Le langage SQL – Partie 1Création, modification du schéma.

Page 17: Conception de bases de données

Le standard SQLLANGAGE 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

GRANTREVOKECOMMIT WORKROLLBACK WORK

EXEMPLE DE BASE DE DONNEES

Création de tableCREATE 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)>

Exemple de création de tableCREATE 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 18: Conception de bases de données

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> ALTER <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 PK PrimaryKey(NumRdv);– ALTER TABLE RDV ALTER Motif CONSTRAINT MotifNN NOT NULL;

• Exercices 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)

Insertion de données

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;

• Exercices 3– Insérez un ensemble cohérent de tuples dans chaque table (1 par table)

Suppression (basique): DELETESYNTAXE :

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 le docteur numéro 20

DELETE FROM DOC WHERE NumDoc = 20

Supprimer tous les docteur

DELETE FROM DOC

Correction 1

CREATE TABLE DOC(NumDoc integer,NomDoc char(30),VilleDoc varchar(50),CONSTRAINT Clé_Primaire_Doc PRIMARY KEY (NumDoc)) ;

CREATE TABLE DET(NumOrd integer,NumLig integer,NumMed integer,Qté integer,CONSTRAINT Clé_Primaire_DET PRIMARY KEY (NumOrd, NumLig),CONSTRAINT Référence_ORD FOREIGN KEY (NumOrd) REFERENCES ORD,CONSTRAINT Référence_MED FOREIGN KEY (NumMed) REFERENCES MED);

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

Page 19: Conception de bases de données

73

ExempleNumOrd NumLig NumMed Qté

1 1 23 2

1 2 67 5

1 3 24 7

2 1 19 1

2 2 128 1

3 1 12 3

4 1 11 6

4 2 3 1

4 3 7 2

4 4 87 1

74

Correction 2Créez un index sur le nom du docteur

CREATE INDEX Index_nom_docteur ON DOC (NomDoc) ;

Supprimez l’attribut Motif de la table RDV

ALTER TABLE RDV DROP COLUMN Motif;

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

ALTER TABLE MED ADD CONSTRAINT cle_prim_MED PRIMARY KEY (NumMed) ;

75

Correction 3

• INSERT INTO DOC VALUES (11, ‘Dupont’, ‘Paris’);• INSERT INTO PAT VALUES (23,’Toto’, ‘Paris’, 25)• INSERT INTO MED VALUES (17, ‘Aspirine’, 4)• INSERT INTO MED VALUES (18, ‘Feroxite’, 19)• INSERT INTO RDV VALUES (45, #20/11/2006#, 11, 23, ‘mal de tête’)• INSERT INTO ORD VALUES (38, #20/11/2006#, 11, 23)• INSERT INTO DET VALUES (38, 1, 17, 3)• INSERT INTO DET VALUES (38, 2, 18, 1)

Insérez un ensemble cohérent de tuples dans chaque table (1 par table)

Vue d’ensemble des bases de données

Page 20: Conception de bases de données

77Vue d’ensemble des SGBD

BDVIII - 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

78

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 desfichiers et des structures de stockage;

– Meilleure portabilité des applications et indépendance vis à vis du matériel.

79

II - Indépendance Logique

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

…………..….

PrénomNomId-D

JeanMasse3

PaulDurand2

PierreDupont1

Docteur

…………..….

PrénomNomId-D

JeanMasse3

PaulDurand2

PierreDupont1

Docteur

Visites

2

2

1

1

Id-D

1 mars

13 juillet

12 août

15 juin

Date

250

350

180

250

Prix

4

3

2

1

Id-V

3

2

1

2

Id-P

Visites

2

2

1

1

Id-D

1 mars

13 juillet

12 août

15 juin

Date

250

350

180

250

Prix

4

3

2

1

Id-V

3

2

1

2

Id-P

…….… ….….

PaulePerry4

PrénomNomId-P

JohnDoe3

ZoeTroger2

JacquesLebeau1

Patients

…….… ….….

PaulePerry4

PrénomNomId-P

JohnDoe3

ZoeTroger2

JacquesLebeau1

Patients

…………… .….….

2 gouttes332

12

8

5

12

Id-M

1 par jour

2 par jour

10 gouttes

1 par jour

Posologie

2

1

2

1

Ligne

2

2

1

1

Id-V

Prescription

…………… .….….

2 gouttes332

12

8

5

12

Id-M

1 par jour

2 par jour

10 gouttes

1 par jour

Posologie

2

1

2

1

Ligne

2

2

1

1

Id-V

Prescription

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

DescriptionNomId-M

……………………………..Mucomyst3

……………………………..Fluisédal2

……………………………..Aspegic 10001

Médicament

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

DescriptionNomId-M

……………………………..Mucomyst3

……………………………..Fluisédal2

……………………………..Aspegic 10001

Médicament

Gestion des médicaments Cabinet du Dr. Masse

Visites

2

1

Id -D

1 mars

15 juin

Date

250

250

Prix

4

1

Id -V

3

2

Id -P

Visites

2

1

Id -D

1 mars

15 juin

Date

250

250

Prix

4

1

Id -V

3

2

Id -P

…….…….….

PrénomNomId -P

ZoeTroger2

JacquesLebeau1

Patients

…….…….….

PrénomNomId -P

ZoeTroger2

JacquesLebeau1

Patients

…………….….….

5

12

Id -M

10 gouttes

1 par jour

Posologie

2

1

Ligne

1

1

Id -V

Prescription

…………….….….

5

12

Id -M

10 gouttes

1 par jour

Posologie

2

1

Ligne

1

1

Id -V

Prescription

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

DescriptionNomId -M

……………………………..Mucomyst3

……………………………..Fluisédal2

……………………………..Aspegic 10001

Médicament

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

DescriptionNomId -M

……………………………..Mucomyst3

……………………………..Fluisédal2

……………………………..Aspegic 10001

Médicament

30……………………………..Aspegic 10001

20……………………………..Fluisédal2

230……………………………..Mucomyst3

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

Nombre_MédicamentsDescription NombreNomId-M

80

Avantages de l’indépendance logique

• Possibilité pour chaque application d'ignorer les besoins des autres (bien que partageant la même BD).

• Possibilité d'évolution de la base de données sans réécriture des applications :– ajout de champs, ajout de relation, renommage de champs.

• Possibilité d'intégrer des applications existantes sans modifier les autres.

• Possibilité de limiter les conséquences du partage : Données confidentielles.

Page 21: Conception de bases de données

81

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>

82

Exemple de question SQL (1)

• Nom et description des médicaments de type aspirine

Select Nom, Description

From Médicaments

Where Type = ‘Aspirine’

83

Exemple de question SQL (2)

• Patients parisiens ayant effectués une visite le 15 juin

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’

84

Exemple de question SQL (3)

• Dépenses effectuées par patient trié par ordre décroissant

Select Patients.Id-P, Patients.Nom, sum(Prix)

From Patients, Visites

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

GroupBy Patients.Id-P, Patients.Nom

OrderBy sum(Prix) desc

Page 22: Conception de bases de données

85

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

• Exemple : la vue des patients parisiens

Create View Parisiens as (

Select Nom, Prénom

From Patients

Where Patients.Ville = ’Paris’ )

86

Les vues : des relations virtuelles !Le SGBD transforme la question sur les vues en question sur les relations de base

Question Q sur des vues

Définition des vues

Gestionnaire de Vues

Question Q’sur les relations

de base

87

Les vues : Mise à jour• Non définie si la répercussion de la mise à jour vers la base

de données est ambiguë– ajouter un tuple à la vue calculant le nombre de médicaments ?

• Restrictions SQL (norme): – Pas de distinct, d’agrégats, ni d’expression– La vue contient les clés et les attributs « non nulls »– Il y a une seule table dans le from– Requêtes imbriquées possibles– Certains SGBDs supportent plus de mises à jour

• Clause « With check option »– Le SGBD vérifie que les tuples insérés ou mis à jour correspondent

à la définition de la vue

88

Les vues : Les instantanés (snapshot)• Instantané, Snapshot, vue concrète, vue matérialisée

– matérialisée sur le disque– accessible seulement en lecture– peut être réactualisé

• Exemple– create snapshot Nombre_Médicaments as

Select Id-M, Nom, Description, count(*) From Médicaments M, Prescriptions PWhere M.Id-M = P.Id-Mrefresh every day

• Objectif principal : la performance

Page 23: Conception de bases de données

89

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 SQLGestion 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.

90

Sélection

Patients de la ville de Paris

Patients

Paule

John

Zoe

Jacques

Prénom

ValentonPerry4

VilleNomId-P

ParisDoe3

EvryTroger2

ParisLebeau1

Patients

Paule

John

Zoe

Jacques

Prénom

ValentonPerry4

VilleNomId-P

ParisDoe3

EvryTroger2

ParisLebeau1σ

91

Projection

Patients

Paule

John

Zoe

Jacques

Prénom

ValentonPerry4

VilleNomId-P

ParisDoe3

EvryTroger2

ParisLebeau1 π

Nom et prénom des patients

Patients

Paule

John

Zoe

Jacques

Prénom

ValentonPerry4

VilleNomId-P

ParisDoe3

EvryTroger2

ParisLebeau1

92

JointurePatients

Paule

John

Zoe

Jacques

Prénom

ValentonPerry4

VilleNomId-P

ParisDoe3

EvryTroger2

ParisLebeau1

Visites

2

2

1

1

Id-D

1 mars

13 juillet

12 août

15 juin

Date

250

350

180

250

Prix

4

3

2

1

Id-V

3

2

1

2

Id-P

4

3

1

2

Id-V

3

2

2

1

Id-P

Paris

Evry

Evry

Paris

Ville

John

Zoe

Zoe

Jacques

Prénom

Doe

Troger

Troger

Lebeau

Nom

1 mars

13 juillet

15 juin

12 août

Date

25023

PrixId-DId-P

35022

25012

18011

Patients et leurs visites

Page 24: Conception de bases de données

93Exemple de plan d’exécution

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’

π

σ

Patients Visites

94Plan d’exécution optimisé

π

σ

Patients Visites

π

π

σ

Visites

π

σ

Patients

95

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 50kf

• Contrôle sur les relations entre les données– 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

96

Contraintes d’intégrité• Avantages :

– simplification du code des applications– sécurité renforcée par l'automatisation– mise en commun des contraintes, cohérence

• Nécessite :– un langage de définition de contraintes d'intégrité– la vérification automatique de ces contraintes

BDBD

Page 25: Conception de bases de données

97

Exemples de contrainte• Contraintes d’intégrité référentielles

…………..….

PrénomNomId-D

JeanMasse3

PaulDurand2

PierreDupont1

Docteurs

Visites

2

2

1

1

Id-D

1 mars

13 juillet

12 août

15 juin

Date

250

350

180

250

Prix

4

3

2

1

Id-V

3

2

1

2

Id-P

…………….….….

2 gouttes332

12

8

5

12

Id-M

1 par jour

2 par jour

10 gouttes

1 par jour

Posologie

2

1

2

1

Ligne

2

2

1

1

Id-V

Prescriptions

• Vérification lors de l’insertion, la suppression, la modification

• Propagation des suppression, modification en cascade possible (on delete cascade)

98

Contraintes d’intégrité : Syntaxecreate table <nom de table> (

<attribut> <domaine> [<contrainte d'attribut>], (mono-attribut)

<attribut> <domaine> [<contrainte d'attribut>], …

[<contrainte de relation>]) (mono ou multi-attributs)

• Différent types de contraintes :– Non nullité : not null– Unicité : unique– Vérification : check <formule>– Clé primaire : primary key– Contrainte d’intégrité référentielle : references <relation> (<attribut>)

• on delete / on update cascade, set null, set default

• On peut nommer les contraintes

99

Contraintes d’intégrité : Remarques finales

• Contraintes supportées (exemple d’Oracle)– Les contraintes faisant intervenir un ou plusieurs attributs

d’une seule table et d’un seul tuple – Contraintes d’intégrité référentielles avec cascade

• Mécanisme puissant : – Exemple : supprimer les patients n’ayant pas consulté depuis

2 ans

Docteurs Visites Prescriptions

MédicamentsPatients

100

Déclencheurs : Définition

• Définition : Déclencheurs ou Triggers– Règle E – C – A : Évènement – Condition – Action

Lorsque l’évènement se produit– Insert / Update / Delete pour une relation donnée

si la condition est remplie– Prédicat SQL optionnel

alors exécuter l’action– Code à exécuter (ex. PLSQL sous Oracle)– Pour chaque tuple concerné ou une fois pour l’évènement

Page 26: Conception de bases de données

101

Déclencheurs : Objectifs• Objectif : une base de données ‘active’

– valider les données entrées– créer un audit de la base de données– dériver des données additionnelles– maintenir des règles d’intégrité complexes– implanter des règles métier– supporter des alertes (envoi de e-mails par exemple)

• Gains– simplification du code des applications– sécurité renforcée par l'automatisation– les déclencheurs sont stockées dans la base– Cohérence globale des déclencheurs

102

Déclencheurs : Syntaxe (dans Oracle)Create trigger <nom de trigger> before | after permet d ’indiquer quand le trigger va être exécuté

insert | delete | update [of <attributs>] Quel est l’évènement déclencheur

on <relation> indique le nom de la table qui doit être surveillée

[referencing old as <var>, new as <var>] en SQL3, Oracle utilise :new et :old

for each row Précise si l’action est exécuté 1 fois par tuple concerné ou pour toute la table

[when <condition>] permet d ’indiquer une condition pour l’exécution du trigger

DECLARE Déclaration de variables pour le bloc PL/SQL

BEGIN Bloc PL/SQL contenant le code de l’action à exécuter

<PL/SQL bloc> Dans SLQ3, on peut indiquer une suite de commande SQL

END

• La syntaxe diffère légèrement suivant le SGBD

103

Déclencheurs : Exemples simplesCreate trigger calcul_TTC after insert on VenteBegin

update vente set Prix_TTC = Prix_HT*1.206End ;

Create trigger ModifCommande after update on CommandeFor each rowBegin

if :new.qte< :old.qtethen raise_application_error(-9996,‘ La quantité ne peut diminuer’);

End ;

Create trigger ModifCommande after update on CommandeFor each rowWhen (new.qte< old.qte)Begin

raise_application_error(-9996, ,‘ La quantité ne peut diminuer’);End ;

104

Déclencheurs : Remarques finales• Cascade de triggers

– l’action d’un trigger peut déclencher d’autres triggers

• Interactions avec les contraintes– l’action d’un trigger peut causer la vérification des

contraintes– les actions des contraintes référentielles peuvent déclencher

des triggers (delete cascade, update cascade)

• Mécanisme très (trop ?) puissant– Cascade ‘infinie’– Tables en ‘mutation’

Usage limité

Page 27: Conception de bases de données

105

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

106

Transaction

Etat cohérent Etat cohérentIncohérence possible...

Begin CommitTransaction

BeginCEpargne = CEpargne - 3000CCourant = CCourant + 3000

Commit T1

107

Atomicité et Durabilité

ATOMICITE

BeginCEpargne = CEpargne - 3000CCourant = CCourant + 3000

Commit T1

Annuler le débit !!

Panne

DURABILITE

BeginCEpargne = CEpargne - 3000CCourant = CCourant + 3000

Commit T1

S’assurer que le virement a été fait !

Crash disque

108

VIII - Partage des données

BD

• Accès concurrent aux mêmes données

Conflits d’accès !!

Page 28: Conception de bases de données

109

VIII - Partage des données

BD

• Le SGBD gère les accès concurrents

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

Cohérence conservée (Verrouillage)

110

IX – Confidentialité• Objectif : Protéger les données de la BD contre des

accès non autorisés

• Deux niveaux :– Connexion restreinte aux usagers répertoriés (mot de passe)– Privilèges d'accès aux objets de la base

• Usagers : Usager ou groupe d’usagers

• Objets : Relation, Vue, autres objets (procédures, etc.)

111

Puissance des droits SGBD

160

380120230

Salaire

Paris

ChartresVersailles

ParisVille

4049

548912545485Poste

Joe

ZoeJackJim

Prénom

Doe

LerichTrockRicksNom

……….4

AdresseId-E

……….3……….2……….1

4049

548912545485Poste

Joe

ZoeJackJim

Prénom

Doe

LerichTrockRicksNom

4

Id-E

321

890

MasseSalariale

Nombred’employés

4

Service des ressources humaines

Employés(intranet)

Public(internet)

112

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érabilté– Applications multisources…

Page 29: Conception de bases de données

113

Architecture Client-Multiserveurs

SGBD 2

donnéescode

ODBC ODBC

SGBD 1

donnéescode

Appli 1

SQL SQL

SQLSQL

Architecture hétérogène

Source 1 : SGBD

donnéescode

Source 2 : serveur Web

donnéescode

Appli 1 Appli 2 Appli n

Médiateur

115

Applications traditionnelles des SGBD

• OLTP (On Line Transaction Processing)– Cible des SGBD depuis leur existence– Banques, réservation en ligne ...– Très grand nombre de transactions en parallèle– Transactions simples

• OLAP (On Line Analytical Processing)– Entrepôts de données, DataCube, Data Mining …– Faible nombre de transactions– Transactions très complexes

116

Applications des SGBD (1)

• BD et WEB– Serveurs Web dynamiques, sites marchands ...– Plusieurs profils (OLTP, publication d’informations en ligne,

hébergement de données …)

• Challenges majeurs– Gestion de données XML– Fédération de sources de données hétérogènes– Grilles de données– Sécurité des données en ligne

Page 30: Conception de bases de données

117

Applications des SGBD (2)

• BD personnelles ou PME– Comptabilité– Agenda, comptes bancaires, carnet d’adresses, dossiers portables– BD embarquées sur calculateurs ultra-légers (PDA, téléphones

cellulaires, cartes à puce …)

• Challenges majeurs– Gérer la mobilité– S’adapter aux contraintes matérielles du calculateur hôte– Assurer la durabilité des données– Assurer la confidentialité des données

SQL (Partie 2) : Interrogation, mise à jour,

suppression de données

SELECT : forme généraleSELECT [DISTINCT| ALL] { * | <value exp.> [, <value exp.>]...}FROM relation [variable], relation [ variable]…[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

Forme générale de la condition de recherche<search condition> ::= [NOT]

<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<search condition> AND ⏐ OR <search condition>

avec θ ::= < ⏐ = ⏐ > ⏐ ≥ ⏐≤ ⏐ <>

Remarque: <liste_de_valeurs> peut être déterminée par une requête

Page 31: Conception de bases de données

Projections et restrictions simplesListe des médicaments de plus de 500 FF NomMedSELECT 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 NomDocSELECT NomDoc FROM DOC WHERE VilleDoc = “Laon”

Quelles ont été les motifs de consultations de 25/12/2006 MotifSELECT DISTINCT Motif FROM RDV WHERE DateRDV = #25/12/2006#

EXERCICES 4• Liste des patients de plus de 40 ans NumPat, NomPat• Age des patients en mois (il est stocké en année) NomPat, AgeMois• Numéro des docteurs ayant consulté entre le 1/9 et le 31/12/06 NumDoc• Nom des patients niçois de plus de 36 ans NumPat, NomPat

Restrictions complexes et jointuresListe des patients ayant un RDV avec le docteur "Dupont" NomPatSELECT 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 NomMedSELECT 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 NomDocSELECT D.NomDoc FROM PAT P, DOC D WHERE P.NomPat = D.NomDoc;

EXERCICES 5• Docteurs ayant le même nom que leur patient NomDoc• Nom des médicaments prescrits le 25/12/2006 NomMed• Nom des docteurs ayant un RDV pour un motif commençant par ‘grippe’ NomDoc• Liste des quantité distinctes prescrites du médicament Bubol Qté

Requêtes imbriquées : IN et EXISTListe des patients ayant un RDV avec le docteur "Dupont" NomPatSELECT 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.NumDocand D.NomDoc = “Dupont”));

EXERCICES 6 (avec IN ou EXIST)• Nom des docteurs ayant au moins un RDV pour une grippe NomDoc• Nom des patients qui n'ont jamais eu de rendez-vous NomPAT

Mise à jour : UPDATESYNTAXE :

UPDATE <relation_name>SET <attribute> = value_expression [, <attribute> = value_expression ] …[WHERE <search condition> ];

EXEMPLES :

Mettre “Inconnue” quand VilleDoc n’est pas renseignéeUPDATE DOC SET VilleDoc = “Inconnue” WHERE VilleDoc is NULL

Mettre en majuscule le nom des docteurs qui n’ont jamais prescritUPDATE DOC SET NomDoc = UPPER(NomDoc) WHERE NumDoc NOT IN

(SELECT NumDoc FROM ORD)

ATTENTION AUX CONTRAINTES D’INTEGRITE REFERENTIELLES !!!

EXERCICES 7 : • Augmenter le prix des aspirines de 10%• Fixer le prix des médicaments non prescrits à 100 euros

Page 32: Conception de bases de données

Suppression : DELETESYNTAXE : DELETE FROM <relation_name> [WHERE <search_condition>]

EXEMPLES :

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

DELETE FROM DOC WHERE VilleDoc is NULLSupprimer le docteur numéro 20 : DELETE FROM DOC WHERE NumDoc = 20

Supprimer tous les docteur : DELETE FROM DOC

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 !!!

EXERCICES 8

• Supprimer les patients de moins de 10 ans

• Supprimer les médicaments non prescrits

126

Correction 4• Liste des patients de plus de 40 ans NumPat, NomPatSELECT NumPat, NomPatFROM PAT WHERE AgePat > 40

• Age des patients en mois (il est stocké en année) NomPat, AgeMoisSELECT NomPat, AgePat*12 AgeMoisFROM PAT

• Numéro des docteurs ayant consulté entre le 1/9 et le 31/12/06 NumDocSELECT DISTINCT NumDocFROM RDV WHERE DateRDV BETWEEN #01/09/2006# AND #31/12/2006#

SELECT DISTINCT NumDocFROM RDV WHERE DateRDV ≥ #01/09/2006# AND DateRDV ≤ #31/12/2006#

• Nom des patients niçois de plus de 36 ans NumPat, NomPatSELECT NumPat, NomPatFROM PAT WHERE AgePat > 36 AND VillePat LIKE "Nice"

127

Correction 5• Docteurs ayant le même nom que leur patient NomDocSELECT DISTINCT D.NomDocFROM PAT P, RDV R, DOC D WHERE P.NumPat = R.NumPat AND R.NumDoc = D.NumDoc

AND P.NomPat = D.NomDoc;

• Nom des médicaments prescrits le 25/12/2006 NomMedSELECT DISTINCT M.NomMedFROM MED M, DET D, ORD OWHERE M.NumMed = D.NumMed AND D.NumOrd = O.NumOrd

AND O.Date = #25/12/2006# ;

• Nom des docteurs ayant un RDV pour un motif commençant par ‘grippe’ NomDocSELECT DISTINCT D.NomDocFROM RDV R, DOC D WHERE R.NumDoc = D.NumDoc

AND R.Motif LIKE “grippe%”;

• Liste des quantité distinctes prescrites du médicament Bubol QtéSELECT DISTINCT D.QtéFROM MED M, DET DWHERE M.NumMed = D.NumMed

AND M.NomMed LIKE “Bubol”;

128

Correction 6• Nom des docteurs ayant au moins un RDV pour une grippe NomDocSELECT DISTINCT D.NomDoc FROM DOC D, RDV R WHERE R.NumDoc = D.NumDoc AND R.Motif LIKE “grippe”;

SELECT D.NomDoc FROM DOC D WHERE D.NumDoc IN (SELECT R.NumDoc FROM RDV R WHERE R.Motif LIKE “grippe”):

SELECT D.NomDoc FROM DOC D WHERE EXISTS(SELECT * FROM RDV R WHERE R.NumDoc = D.NumDoc

AND R.Motif LIKE “grippe”):

• Nom des patients qui n'ont jamais eu de rendez-vous NomPAT

SELECT P.NomPat FROM PAT P WHERE P.NumPat NOT IN(SELECT R.NumPat FROM RDV R )

SELECT P.NomPat FROM PAT P WHERE NOT EXISTS(SELECT * FROM RDV R WHERE P.NumPat = R.NumPat)

Page 33: Conception de bases de données

129

Correction 7 et 8• Augmenter le prix des aspirines de 10%UPDATE MED SET Prix = Prix * 1.1WHERE NomMed LIKE “aspirine%”

• Fixer le prix des médicaments non prescrits à 100 eurosUPDATE MEDSET Prix = 100WHERE NumMed NOT IN (SELECT NumMed FROM DET);

• Supprimer les patients de moins de 10 ansDELETE FROM PATWHERE AgePat < 10;

• Supprimer les médicaments non prescrits DELETE FROM MEDWHERE NumMed NOT IN (SELECT NumMed FROM DET);

SQL (Partie 3) : Agrégation, Unions, Intersection, Différence

Méthodologie SQL

Calculs d'agrégatsLes fonctions d’agrégation (Count, Sum, Avg, Min, Max) permettent de

réaliser des calculs sur des ensembles de données

• Calcul de statistiques globaux– 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êteSELECT 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êteSELECT VillePat FROM PAT, RDV WHERE PAT.NumPat = RDV.NumPat and Motif = ‘mal de tête’GROUP BY VillePatHAVING count(DISTINCT(NumPat)) > 10

132

Agrégats : autres exemples et exercices• Nom du(des) médicament(s) le(s) moins cher(s)SELECT NomMed FROM MED WHERE Prix = SELECT MIN(Prix) FROM MED

• Total des prix des médicaments prescrits par patient SELECT P.NomPat, sum(M.prix * O.Qté) PrixTotalFROM PAT P, ORD O, DET D, MED MWHERE M.NumMed = D.NumMed and D.NumOrd = O.NumOrd and O.NumPat =

P.NumPatGROUP BY P.NomPat

EXERCICES 9• Nombre total d’ordonnances• Nombre d’ordonnances par docteur• Age du plus jeune patient• Nom du plus jeune patient

Page 34: Conception de bases de données

133É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

YYY

ZZZ

XXXXXX

YYY

ZZZ

XXXXXX

AGG2

AGG3

AGG1

ZZZ

XXX

AGG3

AGG1

AGG3

AGG1

XXX

ZZZ

Union/Intersection/Différence<requêteSQL_A>

UNION [ALL]

INTERSECT

EXCEPT

<requêteSQL_B>

[ALL] permet de conserver les doublons dans le résultat d'une union

135

Union/Inter°/Diff. : exemples et exercices

• Ensemble des personnes de la base médicaleSELECT NomMed NomPers FROM MED UNION SELECT NomPat NomPers FROM PAT

• Patients qui sont aussi médecinsSELECT NomPat PatMed FROM PAT INTERSECT SELECT NomMed PatMed FROM MED

• Patients qui ne sont pas médecinsSELECT NomPat Patient FROM PAT EXCEPT SELECT NomMed Patient FROM MED

EXERCICES 10• Numéro des médicaments jamais prescrits• Villes mentionnées dans la base• Villes où il y a au moins un docteur mais aucun patient• Villes où il y a au moins un docteur et au moins un patient

136

Des différences selon le SGBD…

Y (MINUS)NNEXCEPT

YNNINTERSECT

YYYUNION

YYYHAVING

YYYGROUP BY

Oracle8SQL Server 2000Access

Page 35: Conception de bases de données

Jointure Interne / Externe

<Join_expression> ::=

<table-ref> [NATURAL] [<join_type>] JOIN <table-ref>

[ON <condition> ⏐ USING <nom_colonne> *]

<table-ref> CROSS JOIN <table-ref>

<join_type> ::=

INNER

LEFT [OUTER]

RIGHT [OUTER]

FULL [OUTER]

Évite d’écrire la condition de jointure (clause d’égalité sur les colonnes de même nom…)

Produit cartésien (INNER JOIN avec clause toujours vrai)

USING precise le sous-ensemble des colonnes communes à considérer dans la jointure(NB: remplace le ON…)

OUTER est optionnel dans la syntaxe (même fonctionnalité)

…LEFT… UNION…RIGHT…

OUTER produit certains tuples ne joignant pas…

138

Correction 9• Nombre total d’ordonnancesSELECT COUNT(*) FROM ORD

• Nombre d’ordonnances par docteurSELECT DOC.NumDoc, DOC.NomDoc, COUNT(*) FROM DOC, ORD where DOC.numDoc = ORD.NumDocGROUP BY DOC.NumDoc, DOC.NomDoc

• Age du plus jeune patientSELECT min(AgePat) from PAT

• Nom du plus jeune patientSELECT NomPat FROM PAT WHERE AgePat = SELECT min(AgePat) from PAT

139

Correction 10• Nom des médicaments jamais prescritsSELECT NomMED FROM MED WHERE NumMED not in

(SELECT NumMed FROM DET)

• Villes mentionnées dans la baseSELECT VilleDoc Ville FROM DOC UNION SELECT VillePat Ville FROM PAT

• Villes où il y a au moins un docteur mais aucun patientSELECT VilleDoc Ville FROM DOC MINUSSELECT VillePat Ville FROM PAT

• Villes où il y a au moins un docteur et au moins un patientSELECT VilleDoc Ville FROM DOC INTERSECTSELECT VillePat Ville FROM PAT

JDBC(Java DataBase Connectivity)

Supports inspirés des cours de P. Pucheral, N. Anciaux, S. Lopez

Page 36: Conception de bases de données

Langages procéduraux dédiés (1)• Comment passer une commande dans la base telle que :

• 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

PROCEDURE COMMSi le client n’est pas encore dans la base

Insérer les informations du client dans la table clientSi l’article est disponible dans la quantité commandée

ET le livreur disponible à la date de livraison désiréeInsérer sa commande dans la base

Sinon abandonner la commande

Problématique de la connexionlangage Hôte/SQL

• SQL est un langage :– déclaratif– manipulant des ensembles de tuples– ayant ses propres types de données

• Impedance mismatch avec tout langage procédural– conversion de types (ex: varchar(n) SQL => quel type C ?)– traitement des valeurs nulles (True, False, Unknown)– parcours itératif des résultats de requêtes SQL

Langages procéduraux dédiés (2)• Exécution client (envoie de SQL par ODBC, JDBC,…)

• Exécution serveur (envoie de procédure anonyme)

Client

Serveur Oracle

BDMoteurPL/SQL

ServeurSQL

Résultat exécution

COMMPL/SQL

AppelsJDBC

Client

Serveur Oracle

BDServeurSQL…

COMMJava

DriverJDBC

Langages procéduraux dédiés (3)• Stockage de procédures sur le serveur

– Chargement et compilation de la procédure sur le serveur– Lancement à distance par appel de procédure (EXECUTE)

– Stocké comme un objet base de données• Le créateur à les droits d’exécuter, modifier, re-compiler la procédure• Partage les droits avec d’autres (GRANT/REVOKE EXECUTE)

Client

Serveur Oracle

BDMoteurPL/SQL

ServeurSQLRésultat exécution

COMMPL/SQLExecute COMM

Page 37: Conception de bases de données

API de communication à un SGBD• SQL-CLI (Call Level Interface)

– API standardisée par X/Open depuis 1994, intégrée dans SQL3– Permet de se connecter et d’envoyer des requêtes SQL à tout serveur

SQL, quel que soit son type, sa localisation, le mode de connexion ...

• Popularisé par des médiateurs tels que :– ODBC (Open DataBase Connectivity)

• API assez complexe• interface C (nécessite l’utilisation de code natif)

– JDBC (Java DataBase Connectivity)• vue “objet” des mêmes concepts que ODBC• un pont JDBC-ODBC existe

• L’interface standard (API) assure la portabilité des applications et donne la possibilité de communiquer avec des SGBD divers

146L’API JDBC(Java DataBase Connectivity)

• Permet de simplifier l’accès à une BD depuis Java (évite l’utilisation de code natif)

• JDBC fournit un ensemble de classes et d’interfaces pour l’utilisation d’un ou plusieurs SGBD à partir d’un programme Java

• Intérêts de JDBC– interface uniforme pour accéder à un SGBD– indépendant du SGBD cible– simplicité de mise en œuvre– supportant les fonctionnalités de base de SQL

Architecture logicielle de JDBC• Chaque source de données utilise un pilote (driver) qui

lui est propre et qui convertit les requêtes JDBC dans le langage natif du SGBD

driver ODBC

Driver(pont) JDBC-ODBC

driverJDBCpour

Oracle

driverSGF local

DriverJDBCpour

Sybase

JDBC DriverManager

Java Appli/Applet

Oracle

API JDBC

API du Driver JDBC

protocole Propriétaireprotocole Propriétaire

SybaseOracle Sybase

FichierDifférentes implémentations de JDBC

148

Exemples d’utilisations de JDBC• Dans un client léger classique

• Dans une architecture J2EE

Serveur

BDDriverJDBCJDBC

Applet

Clients

API JDBC

Serveur Web

BDServletApplet

Clients

API Web(TCP/IP)

JDBCDriverJDBC

Serveur BD

API JDBC

API DriverJDBC

API DriverJDBC

Page 38: Conception de bases de données

L’API JDBC• API fournie par le package java.sql (le noyau) • Interfaces (principales) du package

– Connection // gestion des connexions

– Statement // exécution de requêtes classiques– PreparedStatement // préparation de requêtes dynamiques – CallableStatement // appel de procédures stockées

– ResultSet // manipulation du résultat

– ResultSetMetaData // description du résultat– DatabaseMetaData // description de la base

– Driver // gestion des pilotes

• Les extensions dans javax.sql

Utilisation de JDBC Etapes à suivre

(Importer le package java.sql)

• Charger le driver JDBC

• Établir une connexion à la base de données

• Créer une instruction (requête/batch/procédure…)

• Exécuter l’instruction

• Traiter le résultat

• Fermer les différents éléments

151

Les fonctions de JDBC• Fonctions de bases

– Charger le/les pilotes – Se connecter à la base de données– Créer une instruction

• SQL statique, • appel à procédure stockée, • précompilée et paramétrée

– Exécuter l’instruction• LMD de consultation,• LDD et LMD de mise à jour,• procédures stockées

– Traiter le résultat • Gestion de l’objet ResultSet

– Fermer les différents éléments

• Fonctions avancées– Exceptions JDBC– Accès aux méta-données

• Du résultat• De la base de données

– Exécution de• requêtes précompilées• requêtes paramétrées• procédures stockées

– Exécution par lots (batch)– Utilisation de curseurs– Transactions– Extension standard (javax.sql)

152

Chargement du pilote JDBC• Par invocation de la méthode Class.forName

• Paramètre = chemin de la classe du driver – (fournit dans la doc. du driver)

• Exemple utilisant le pont (driver) JDBC-ODBC

import java.sql.*;

public class ObjetUtilisantJDBC{

public static void main(String[] Args) {

try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch (Exception E) {System.err.println(« Chemin du driver incorrect!");}// ... Etapes suivantes ...

}}

Page 39: Conception de bases de données

153

Connecter la base de données• DriverManager permet d’établir la connexion avec le SGBD• Grâce à la méthode getConnection de cette classe

– le driver adéquat est retrouvé parmi les drivers chargés – un objet Connection est retourné

• Paramètres de la méthode– Url fournit les informations nécessaires à la connexion

• débute par jdbc:, suivi du sous-protocole (par ex. odbc), suivi par des informations propres au driver (par ex: le nom de la source de données dans le cas du pont JDBC-ODBC)

– Nom et mot de passe de l’utilisateur sur le SGBD

• Exempleimport java.sql.*;public class ObjetUtilisantJDBC{

public static void main(String[] Args) {

// ... Etapes précedentes...Connection con = DriverManager.getConnection(jdbc:odbc:Oracle, "scott", "tiger");

}}

154

Créer une instruction• Une instruction est représentée par une instance de la classe

– Statement, (instruction SQL statique)– CallableStatement, (appeler une procédure stockée)– ou PreparedStatement (instruction SQL précompilée et paramétrée)

• La création se fait à partir de l’objet Connexion en utilisant(l’objet Connexion est obtenu à la connexion)– createStatement (SQL statique)– prepareCall (procédure stockée)– prepareStatement (SQL précompilé/paramétré)

• Exemple import java.sql.*;public class ObjetUtilisantJDBC{

public static void main(String[] Args) {

// ... Etapes précedentes...Statement req1 = con.createStatement();CallableStatement req2 = con.prepareCall(str);PreparedStatement req3 = con.prepareStatement(str);

}}

155

Exécuter l’instruction• Méthodes (principales) pour exécuter une instruction

– executeQuery pour les requêtes de type SELECT ... (LMD de consultation)

– executeUpdate pour les CREATE ou INSERT/DELETE/UDATE... (LDD et LMD de mise à jour)

– execute pour les procédures stockées (entre autre)

• Les méthodes de l’interface Statement (exécution de requêtes SQL statiques) prennent en paramètre une chaîne de caractères représentant la requête à exécuter

• Exempleimport java.sql.*;public class ObjetUtilisantJDBC{

public static void main(String[] Args) {

// ... Etapes précedentes...req1.executeUpdate("CREATE TABLE contact (nom VARCHAR(50), tel CHAR(10))");req1.executeUpdate("INSERT INTO contact VALUES (’dupond’, ’0102030405’)");

}}

156

Traiter le résultat• La méthode executeQuery retourne un objet de type

ResultSet– représente un curseur sur le résultat de la requête– Exemple

• La méthode executeUpdate retourne le nombre – de tuples affectés dans le cas d’un LMD

(INSERT/DELETE/IPDATE…)– 0 dans le cas d’un LDD (CREATE…)– Exemple

// ... Etapes précedentes...ResultSet rs = req1.executeQuery("SELECT * FROM contact");

// ... Etapes précedentes...int nbTuples = req1.executeUpdate("UPDATE contact " +

"SET nom = ’dupont’ " +"WHERE nom = ’dupond’");

Page 40: Conception de bases de données

157Accès aux résultats (curseur)

• Un curseur permet de parcourir les tuples résultats d’une requête– Représenté dans JDBC par l’interface ResultSet

• Fonctionnement– Le curseur d’un objet ResultSet est positionné avant le premier tuple– La méthode next permet de faire avancer ce curseur sur le tuple suivant

• retour = false il n’y a plus de tuples à traiter

• Les valeurs des attributs sont obtenues grâce aux méthodes getXXX( )– Paramètre = numéro/nom de colonne dans le résultat

• Exemple

// ... ResultSet rs = req1.executeQuery("SELECT * FROM contact");while(rs.next()) {

String nom = rs.getString("nom"); // ou String nom = rs.getString(1);String tel = rs.getString("tel"); // ou String nom = rs.getString(2);// ...

}

158Accès aux résultats (conversion et valeur nulles)

• Conversion de type – Les méthodes getXXX convertissent de SQL vers JAVA

• Valeurs nulles (NULL de SQL)– Testé grâce à la méthode wasNull de ResultSet

• wasNull est appelée après la lecture de la valeur (après l’utilisation d’une méthode getXXX)

– Les méthodes getXXX convertissent les valeurs NULL de SQL en une valeur acceptable pour le type Java cible

159

Fermer les différents éléments

• (préférable pour libérer la mémoire)

• Les éléments concernés– Curseurs – Instructions – Connexions – Etc.

• Exemple // ... Etapes précedentes...rs.close();req1.close();c.close();// ...

160

Exceptions

• L’exception SQLException peut être lancée par les méthodes de JDBC

• Elle permet d’obtenir des informations sur l’erreur qui s’est produite– une chaîne décrivant l’erreur (méthode getMessage)– un code d’erreur spécifique au SGBD (méthode getErrorCode)– une chaîne d’état SQL (méthode getSQLState)

• Les avertissements du SGBD peuvent aussi être capturés par la classe d’exception SQLWarning– Un avertissement ne stoppe pas l’exécution du programme– On utilise la méthode getWarnings de Statement pour les récupérer

Page 41: Conception de bases de données

161

Accès aux méta-données• Procurent des informations (méta-données) sur

– le SGBD et le driver JDBC (DatabaseMetaData),– ou sur le résultat d’une requête (ResultSetMetaData)

• Exemples de méthodes de l’interface DatabaseMetaData– getSchemas pour la liste des schémas disponibles– getTables pour la liste des tables

• Exemples d’utilisation de ResultSetMetaData

// ... ResultSet rs = req1.executeQuery("SELECT * FROM contact");ResultSetMetaData rsmd = rs.getMetaData();int nbColonnes = rsmd.getColumnCount();// ...

162Requête précompilée (création)

• Une requête qui doit être exécutée peut être précompilée en utilisant PreparedStatement– Dans un objectif de performance (temps d’exécution)– La requête est transmise au SGBD (qui la précompile)

• Le plan d’exécution est préparé– Des variables peuvent être utilisées pour paramétrer la requête

• Création d’une requête précompilée– A partir de l’objet Connection– Grâce à méthode prepareStatement

• La requête est passée en paramètre sous forme de chaîne de caractères• Les paramètres sont représentés par des ‘?’ dans la chaîne

– Le retour est un objet PreparedStatement prêt à être exécuté

• Exemple // ... String req = "UPDATE contact SET tel = ? WHERE nom = ?";PreparedStatement UpdateTel = con.prepareStatement(req);// ...

163Requête précompilée (paramétrage)

• Avant d’exécuter la requête fixer les paramètres (remplacent les ‘?’ par une valeur dans la chaîne)– Grâce aux méthodes setXXX

(où XXX représente un type de données Java)– NB: setNull fixe le paramètre à la valeur NULL de SQL – Premier argument = numéro d’ordre du ‘?’ à remplacer– Deuxième argument = valeur de remplacement

• Exemple

// ... String req = "UPDATE contact SET tel = ? WHERE nom = ?";PreparedStatement UpdateTel = con.prepareStatement(req);UpdateTel.setString(1, "0908070605");UpdateTel.setString(2, "durand");// ...

164Requête précompilée (exécution)

• Grâce aux mêmes méthodes que pour des requêtes fixes, mais sans argument– ExcuteQuery/executeUpdate– NB: l’instruction contient déjà la requête à exécuter…

• Exemple

// ... String req = "UPDATE repertoire SET tel = ? WHERE nom = ?";PreparedStatement updateTel = con.prepareStatement(req);updateTel.setString(1, "0908070605");updateTel.setString(2, "durand");updateTel.executeUpdate();updateTel.setString(1, "0900000000");updateTel.executeUpdate();// ...

Page 42: Conception de bases de données

165

Procédures stockées• L’interface CallableStatement permet d’invoquer une procédure

stockée – NB: la procédure est stockée au niveau du SGBD…– … la création se faisant avec la méthode prepareCall de Connection

• La syntaxe de l’appel de procédure (call ...) est traduit par le driver JDBC dans la syntaxe native du SGBD

• L’exécution de l’instruction se fait de façon classique en fonction de ce que retourne la procédure

• L’interface CallableStatement est sous-interface de PreparedStatement et accepte donc des paramètres

// ... CallableStatement cs = c.prepareCall("{call nom_procedure_stockee}");// ...

166Transactions(portée)

• Rappel = une transaction permet d’exécuter un ensemble de requêtes sur une BD, la faisant passer d’un état cohérent à un autre état cohérant, respectant les propriétés transactionnelles (ACID)

• Par défaut, la connexion JDBC est en mode chaîné– chaque requête est suivie d’un ordre SQL « commit » implicite

• On peut désactiver ce mode – soit lors de la création de la connexion – soit grâce à la méthode setAutoCommit

– La validation doit alors se faire explicitement par la méthode commit…

– … et l’annulation se fait grâce àla méthode rollback

// ... c.setAutoCommit(false);// ...

// ... c.commit();// ...c.rollback();// ...

167Transactions(concurrence)

• Le niveau d’isolation permet de déterminer les incohérences que peut subir une transaction (lecture sales, fantômes, . . .)

• Les différents niveaux d’isolation (normalisés) sont– Connection.TRANSACTION_READ_UNCOMMITTED

• lectures sales, non reproductibles et fantômes peuvent se produire– Connection.TRANSACTION_READ_COMMITTED

• les lectures sales sont évitées– Connection.TRANSACTION_REPEATABLE_READ

• les lectures sales et non reproductibles sont évitées– Connection.TRANSACTION_SERIALIZABLE

• la transaction est complètement sérialisable– Connection.TRANSACTION_NONE

• indique que les transactions ne sont pas supportées

• Les méthodes getTransactionIsolation et setTransactionIsolation de Connection permettent de connaître et fixer le niveau d’isolation

168

Erreurs dans l’écriture de requêtes

• Mauvaise compréhension du schéma de la base

• Mauvaise compréhension de la question

• Instances de la même table

• Oubli de clauses dans les prédicats

• Doublons

• Utilisation d’instruction ou de structures SQL incorrectes

• Erreurs de syntaxe

Page 43: Conception de bases de données

169

Schéma et question• Avant de se lancer dans l’écriture d’une requête, il faut bien

comprendre le schéma des tables sur lequel on va s’appuyer.

• Si le schéma est complexe, il faut le dessiner, c.a.d. dessiner les tableset les relations entre ces tables.

• En lisant la question, on repère sur le schéma dans quelle(s) relation(s) se trouve chaque donnée. On a alors une idée des tables mises en jeu.

• Si la question est complexe, il faut la reformuler et/ou la décomposer.

• Une fois ce travail effectué, on peut commencer a écrire du SQL.

170

Reformulation d’une question (1)• Paraphrasage :

– En exprimant de manière plus détaillée une requête, elle devient plus claire... (ou plus facilement exprimable)

• Exemple : Qui est dans la base ?

Ensemble des personnes de la base médicale

Nom des médecins et nom des patients

Union des noms des médecins et des noms des patients

SELECT NomMed NomPers FROM MED

UNION

SELECT NomPat NomPers FROM PAT

171

Reformulation (2) : NégationSouvent l’inverse de la requête est plus facile à exprimer. Cela est particulièrement vrai lorsque la requête contient :

• que – Dans quelle ville n’y a-t-il que des patients de plus de 40 ans? – L’ensemble des villes moins celles où il y a au moins un patient de 40 ans ou moins

• aucun – Dans quelle ville n’y a-t-il aucun patients de plus de 40 ans? – L’ensemble des villes moins celles où il y a au moins un patient de plus de 40 ans

• tous – Quels sont les patients dont tous les motifs de rendez vous sont « mal de tête »– L’ensemble des patients qui ont un RDV pour un mal de tête moins les patients qui

ont un RDV pour un motif différent

• Tous– Quels sont les patients qui ont RDV avec tous les médecins– Les patients pour lesquels il n’existe pas de docteur avec qui ils n’ont pas eu de

RDV

172

Reformulation (3) : DécompositionEn décomposant, on simplifie la compréhension et on

diminue les risques d’erreurs :

• Quels sont les patients dont tous les motifs de rendez vous sont « mal de tête »

• Paraphrasage : – L’ensemble des patients qui ont un RDV pour un mal de tête moins les

patients qui ont un RDV pour un motif différent

• Décomposition– Create view SQ1 AS …. (patients qui ont un RDV pour un mal de tête)– Create view SQ2 AS …. (patients qui ont un RDV pour un motif ≠ de

mal de tête)– SELECT NomPat FROM SQ1 EXCEPT SELECT NomPat FROM SQ2

Page 44: Conception de bases de données

173

DOC (D2) Durand

Instance de tables• Il faut parfois utiliser plusieurs instances de la même table. Comment

savoir?

• Lorsqu’une même table est utilisée pour obtenir deux informations de ‘sémantiques différentes’, il faut prendre plusieurs instances de cette table.

• Exemple : Nom des patients ayant eu des RDV avec les docteurs "Dupont" et "Durand"SELECT DISTINCT P.NomPatFROM PAT P, RDV R, DOC D , RDV R1, DOC D1WHERE P.NumPat = R1.NumPat and R1.NumDoc = D1.NumDoc and

D1.NomDoc = “Dupont” and P.NumPat = R2.NumPat and R2.NumDoc = D2.NumDoc and D2.NomDoc = “Durand”);

PAT (P)

RDV (R1)

RDV (R2)

DOC (D1) Dupont

174

Oubli de clauses• Il est assez facile d’oublier une clause dans les prédicats

de sélection, surtout lorsque l’on joint plusieurs tables. Pour le vérifier, une règle simple pour les requêtes plates (nécessaire mais non suffisante) :

• Une requête impliquant n tables doit posséder au moins (n-1) prédicats de jointure (outre les prédicats de sélection).

175

Doublons

• Deux types de doublons peuvent apparaître. – plusieurs réponses sont identiques – plusieurs réponses sont ‘sémantiquement équivalents’

• Les premiers s’éliminent en utilisant la clause distinct. Attention toutefois à son utilisation...

• Le deuxième cas se produit lorsque l’on demande des combinaisons (couples de personnes, ensemble de 3 pièces etc...). Le résultat (A,B) est ‘sémantiquement équivalent’ à (B,A).

• Dans ce cas, il suffit d’utiliser un prédicat > entre chaque composantes afin de n’obtenir qu’une seule des combinaisons equivalentes.

176

Base de tests• Quand une requête est vraiment complexe, on peut,

malgré tout, avoir un doute sur la solution trouvée. Dans ce cas, il faut créer l’extension d’une base de test afin de vérifier la validité de la requête.

• Preuve par l’exemple : – un résultat positif ne prouve rien (c’est probablement juste...) – un résultat négatif prouve que la requête est fausse.

• Comment trouver l’extension la plus ‘sensible’ possible ? – c’est à dire, l’extension de taille minimum comportant tous les cas et

garantissant la validité de la requête. – Le problème est presque aussi complexe que la résolution de la

requête elle même. Parcontre, le fait d’aborder la requête de cette manière permet souvent de mieux la comprendre.

Page 45: Conception de bases de données

177

Base de tests (2)• Exemple 1 : Quels couples de parents ont au moins deux

enfants? – Dans la base de test il faut avoir :

• des couples de parents qui ont 1, 2 et 3 enfants • des parents seuls ayant 2 et 3 enfants

• Exemple 2 : Quels producteurs ne voient que les films qu’ils produisent ?– Dans la base de test il faut avoir :

• un producteur qui ne voit aucun film • un producteur qui ne voit que des films qu’il produit • un producteur qui voit des films qu’il produit et d’autres

• Attention, cette base n’est pas suffisante....

• Optimisation de requêtes• Transactions• Sécurité des bases de données,

droits d’accès

179

1. Optimisation

SelectFromWhere

Requête SQL Arbre logique Arbre Physique

Optimisation

180

Le problème : équivalence sémantique

• Une question • Plusieurs expressions

équivalentes en SQL• Plusieurs expressions

équivalentes en algèbre• Plusieurs algorithmes

algébriques équivalentsC

oût

Plans sémantiquement équivalents

Ex. 9 jointures 17 Milliards de plans…

Page 46: Conception de bases de données

181

Objectifs de l’optimisation

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

Les concepteurs de SGBD doivent maîtriser l’optimisation

• Pratiquement, 2 requêtes équivalentes plans différentsl’utilisateur (concepteur de l’appli) doit comprendre !!!

• 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 …)

182

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 !• Des fois un accès par index est plus coûteux !

Jean

Alo

n

Felix

AdamAlain

BenClaireFelix

GilHildaJean

KarineMartin

NicolePaul

Sophie

ThéoTomZoe

Mar

tin

Sop

hie

183

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

184

Plan d’exécution optimisé

π

σ

Patients Visites

π

π

σ

Visites

π

σ

Patients

Select Patients.Nom, Patients.PrénomFrom Patients, VisitesWhere Patients.Id-P = Visites.Id-Pand Patients.Ville = ’Paris’and Visites.Date = ’15 juin’

Page 47: Conception de bases de données

185

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

π

σ

Patients186

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

187

Optimisation heuristique

• Optimisation indépendante des données• Heuristiques classiques:

• Effectuer les sélections en premier • Ajouter un maximum de projections• Utiliser les indexs disponibles• Utiliser les ‘meilleurs’ algorithmes de jointure

1. Hash join2. Sort merge join3. Nested Loop join avec index4. Nested loop join

• L’ordre des opérations dépends de l’expression SQL• Présent dans Oracle (Rule Based Optimizer ou RBO)

188

Optimisation basée coût

Générateur dePlans

Graphe d'opérations

Heuristiquesde choix

Plan d'exécutionOptimal

Schéma interne

Plans d'exécution(espace de recherche)

Statégie deRecherche

Bibliothèque detransformations

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 48: Conception de bases de données

189

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.

190

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%

191

Qualité de l’optimisation

1. Qualité du schéma physique• Indexs• 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 !

192

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 ex. Oracle, SQL Server

Page 49: Conception de bases de données

193

Oracle : Automatic SQL Tuning

Automatic Tuning Optimizer

Analyse des Statistiques

SQL Profiling Analyse des chemins d’accès

Analyse des structures SQL

194

Database Tunning Advisor (SQL Server 2005)

• Les entrées• Ensemble de BD d’un serveur• Une charge de travail à optimiser• Propriétés/Dispositifs à régler• Les différentes contraintes

• Configuration partielle (du DBA)• Contrainte de stockage• Contrainte de temps

• La sortie• Schéma physique recommandé + index et vues matérialisées• Recommandation partitionnement des tables, vues, index…

Base de donnéesCharge de travail

Dispositifs à réglerContraintes

Conception physique recommandée

DTA

195

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.

2. Gestion de transactions

Page 50: Conception de bases de données

197

2. Gestion de transactions

Séquence d'instructions d’un programme de base de données encadrée par un ordre de début et de fin de transaction faisant passer la base d’un état cohérent à un état cohérent.

BeginCEpargne = CEpargne - 3000CCourant = CCourant + 3000

Commit T1

Etat cohérent Etat cohérentIncohérence possible...

Begin CommitTransaction

198

Les propriétés ACID

• Problèmes liés aux transactions :• Concurrence d’accès • Violation de la cohérence• Pannes

• de transaction : ex. annulation• du système : ex. crash serveur• de media : ex. perte du disque• de communication : ex. défaillance réseau

• Un SGBD garantit l'exécution ACID de toute transaction :• Atomicité : la transaction s'exécute en tout ou rien• Cohérence : la transaction respecte les contraintes d'intégrité• Isolation : la transaction ne "voit pas" l'effet des autres transactions• Durabilité : les effets d'une transaction validée persistent

BD

199

Atomicité / Durabilité

Gestion d’un journal avant• images physiques avant

modification• permet de ‘défaire’ une

transaction n’ayant pas commise

ATOMICITE

BeginCEpargne = CEpargne - 3000CCourant = CCourant + 3000

Commit T1

Annuler le débit !!

Panne DURABILITE

BeginCEpargne = CEpargne - 3000CCourant = CCourant + 3000

Commit T1

S’assurer que le virement a été reporté dans la BD !

Crash disque

Gestion d’un journal après • images physiques après

modification• permet de ‘refaire’ une

transaction qui a commise.

200

Isolation : définition du problème

• Scénario 1 :• Joe consulte son compte (lectures) au même moment où sa banque le

crédite de 500 euros (écritures)• Scénario 2 :

• Joe retire 200 euros (écritures) au même moment où sa banque le crédite de 500 euros (écritures)

• Scénario 3 : • Une analyse des ventes (lectures) est faite dans un supermarché alors

que les caisses sont ouvertes (écritures)• Scénario 4 :

• Les places de la finale de la coupe du monde sont mises en vente sur Internet le lundi à 8h (conflits massifs)

• Scénario 5 : • Réservation SNCF (lectures (choix) puis écritures (achat))

• Objectif : Chacun doit travailler en isolation i.e. comme si il était seul utilisateur de la base de données

Page 51: Conception de bases de données

201

Exécution sans contrôle

•Absence de contrôle• Perte d’opérations• Observation d’incohérence• Introduction d’incohérence• Lectures non reproductibles

•Mécanisme de verrouillage• Verrou en lecture : partagé• Verrou en écriture : exclusif

•Protocole de verrouillage ?

T1 (Joe) T2 (banque)

BeginLire CC x

BeginLire CC xx = x + 500Ecrire X CC

Commit T2x = x –200Ecrire X CC

Commit T1

temps

Scénario 2 – Perte d’opérations

202

Protocole de Verrouillage à 2 Phases

• Règle 1 : verrouillage • Avant d'accèder à une donnée D, une transaction doit acquérir un

verrou sur D. Si D est déjà verrouillé dans un mode non compatible, la transaction attend.

• Règle 2 : deux phases• Dès qu'une transaction relâche un verrou, elle ne peut plus acquérir

de nouveau verrou• Verrouillage 2 phases stricts

• Les verrous sont gardés jusqu’au commit

verr

ous

temps

T

EcritureLecture

EcritureLecture

203

Optimisation des transactions

• L'objectif, en termes de performances, est de réduire :• les blocages : une transaction est bloquée en attente d’un verrou• les inter-blocages : un ensemble de transactions s’attendent

mutuellement

• Solutions existantes• Degrés d’isolation • Protocoles multiversions• Modification des données / programmes

T1 T2

T3 T4

204

Degrés d'isolation SQL – normalisés SQL2

• Objectif: accroître le parallélisme en autorisant certaines transactions à violer la règle d'isolation

• Degrés standardisés SQL2 (Set Transaction Isolation Level)• Degré 0 (Read Uncommitted)

• Lecture de données sales – Interdiction d’écrire. • Ex. lecture sans verrouillage

• Degré 1 (Read Committed)• Lecture de données propres – Ecritures autorisées• Ex. Verrous court en lecture, long en écriture

• Degré 2 (Repeatable Read)• Pas de lecture non reproductible • Ex. Verrous longs en lecture et en écriture

• Degré 3 (Serializable)• Pas de requête non reproductible (fantôme)

Page 52: Conception de bases de données

205

Degrés d'isolation SQL : exemples

T1(°2, Repeatable read) T2(°3,serializable)Begin

Select count(*) from Voit where couleur="rouge"

BeginInsert into Voitvalues (R4, "rouge")

CommitSelect count(*) from Voitwhere couleur="rouge"

Commit

T1(°2, Repeatable read) T2(°3,serializable)

Begin BeginLit CC ( 100)

Lit CC ( 100)Ecrire CC, CC+10

Lit CC ( 100)

Lit CC ( 100)Commit

Ecrire CC, CC+20

T1(°1, Read commited) T2(°3,serializable)

Begin BeginLit CC ( 100)

Lit CC ( 100)Ecrire CC, CC+10

Lit CC ( bloque)Ecrire CC, CC+20

Commit ( 130)

T1(°0, Read uncommited) T2(°3,serializable)

Begin BeginLit CC ( 100)

Lit CC ( 100)Ecrire CC, CC+10

Lit CC ( 110)Ecrire CC, CC+20

Lit CC ( 130)Commit

bloque

206

Protocoles multiversions (Oracle)

• Objectif : faire cohabiter sans blocage des transactions conflictuelles en les faisant travailler sur différentes versions des données

T1(°1, Read commited) T2(°3,serializable)Begin Begin

Lit CC ( 100)(V1)Lit CC ( 100)(v1)Ecrire CC, CC+10 (V2)

Lit CC ( 100)(V1)Ecrire CC, CC+20 (V2)

Commit Lit CC ( 130)(V2)

T1 (°3, serializable) T2(°3,serializable)Begin Begin

Lit CC ( 100)(V1)Lit CC ( 100)(v1)Ecrire CC, CC+10 (V2)

Lit CC ( 100)(V1)Ecrire CC, CC+20 (V2)

Commit Lit CC ( 100)(V1)

T1 (°3, serializable) T2(°3,serializable)Begin Begin

Lit CC ( 100)(V1)Lit CC ( 100)(v1)Ecrire CC, CC+10 (V2)

Ecrire CC, CC-50 (V?)Ecrire CC, CC+20 (V2)

Commit Erreur !

bloque

T1 (°1 Read commited) T2(°3,serializable)Begin Begin

Lit CC ( 100)(V1)Lit CC ( 100) (v1)Ecrire CC, CC+10 (V2)

Ecrire CC, CC-50 (V?)Ecrire CC, CC+20 (V2)

Commit Eciture faite (CC = 80)

bloque

207

Modifications des données / Programmes

• Scénario 4 : Les places de la finale de la coupe du monde sont mises en vente sur Internet le lundi à 8h

• Une seule donnée Trop de conflits• Exemple de solution :

• Idée : partitionner le stade :• Chaque utilisateur se connectant est

aléatoirement dirigé vers 1 des partitions.• Le degré de parallélisme est multiplié par le

nombre de partitions.

• Scénario 5 : Réservation SNCF (choix puis achat)• Si verrouillage dès le début, beaucoup de conflits• Sinon, risque de perdre la place convoitée• C’est le deuxième choix qui est implanté …

208

Conclusion sur le verrouillage

• Scénario 1 : Compte Joe : lecture / écritureMultiversion + degré Repeatable read ou Read Commited

• Scénario 2 : Compte Joe : écriture / écritureConflit inévitable quelque soit la méthode

• Scénario 3 : lectures massives / écritures (supermarché)Multiversion + degré Read Commited (peu de versions)

• Scénario 4 : écritures massives (coupe du monde)Partitionnement du stade

• Scénario 5 : réservations SNCF (lectures puis écritures)Phase de choix en multiversion – Read CommitedPhase d’achat en multiversion – Repeatable read

Il est donc particulièrement important de maîtriser les degrés d’isolations et les notions transactionnelles.

Page 53: Conception de bases de données

3. Sécurité des BD, Droits d'accès

210

3. Sécurité des BD, Droits d'accès

• Objectif : • protéger les données de la base contre des accès non autorisés

• Mécanismes simples et puissants• Connexion restreinte aux usagers répertoriés (mot de passe)• Privilèges d'accès aux objets de la base (relation, vue, etc.)

• Repose sur la sécurité de l’architecture (de bout en bout)

ServeurBD

BD

Utilisateur ServeurBD

BD

Utilisateur

IdentificationAuthentification

Sécurisation des communications(confidentialité, intégrité, non répudiation)

Protection du serveur

Protection des fichiers

211

Besoins de confidentialité (1) ?

• Mémorisation massive de données• Systèmes d’information publics • BD personnelles• BD d’entreprises

• Acquisition transparente des données• Web, objets intelligents

• Organisation des données • L’analyse d’une collection d’informations insignifiantes peut

générer des résultats sensibles

• Interconnexion croissante des bases de données• Croisement possible des données

212

Besoins de confidentialité (2) ?

• Hébergement de données (DSP)• Hébergement de site Web, sous-traitance de la gestion du système

d’information d’une PME, équipes virtuelles, dossiers personnels …• caspio.com, quickbase.com, cyberworker.com, primadoctor.com …• Nombreuses violations de chartes de privacité [AKS02]

• Vulnérabilité des serveurs d’entreprise • Source CSI/FBI : coût des attaques BD ≈ $103 milliards/an, 45%

des attaques sont internes• 21551 sites français piratés dans le musée ZATAZ (~70 / mois)

• (Source http://www.zataz.com/hacked/)

Page 54: Conception de bases de données

213

Besoins de confidentialité (3) ?

• Indexation des bases de données• "Google entre vie privée et secret défense" (source : confidentiel.net)

• Négligence• Craquage d'un système bancaire US (mots de passe trop courts par

rapport au nb de comptes gérés)• Consultation de la facture détaillée d’autrui (télécom brésil)

• Croisement de bases de données• CAPPS-II (Computer Assisted Passenger Pre-Screening System) croise des

BD pour lutter contre le terrorisme

Ron Rivest : « La révolution digitale inverse les défauts : ce qui était autrefois difficile à copier devient facile à dupliquer, ce qui était oublié

devient mémorisé à jamais et ce qui était privé devient public

214

Curious of someone life ?

215

« The data within the report is compiled from thousands of different sources that include government, property, and other public record repositories. »

Curious of someone life (2) ?

216

• Oracle's 'Unbreakable' Boast Attracts Hackers• Hack attempts on the company's website have increased to

30,000 per week.

Protection : Solution Oracle ?

• Some days after ….• 'When they say their software is unbreakable, they're lying.'

-- Bruce Schneier• U.K. security researcher David Litchfield revealed that a common

programming error -- a buffer overflow -- was present in Oracle's application server

Page 55: Conception de bases de données

217

T1 : Identification/authentification

• Base : login + password• Assuré par le SGBD ou l’OS• Nombreux protocoles et systèmes matériels (carte à puce!)

Nécessaire mais clairement insuffisant !!

ServeurBD

BD

Utilisateur

218

Attaques du mécanisme d’authentification

• Utilisateurs par défaut d’une base de données• Possibilité d’attaques contre ces comptes s’ils n’ont pas été

reconfigurés • Exemple : utilisateur SCOTT (mot de passe TIGER) sous ORACLE

• Gestion des mots de passe• Distribution du mot de passe lors de la création du compte• Transmission du mot de passe entre le client et le serveur• Administrateur malveillant

• Pour limiter ces risques, possibilité d’utiliser SSL• Secure Sockets Layer• Gestion de certificats via un tiers de confiance• Authentification mutuelle via le protocole Kerberos

219

T2 : Chiffrement des communications

• Technologie éprouvée (ex: SSL)• Assure la confidentialité des messages • Techniques cryptographiques complémentaires

• Hachage unidirectionnel (ex: SHA) : intégrité des messages• Signature (ex: via PKI) : authentification et non répudiation du

message

• Nécessaire mais clairement insuffisant !!

ServeurBD

BD

Utilisateur

220

T3 : Mécanismes de contrôle d’accès

• Contrôle d’accès très sophistiqué dans les SGBD• Autorisations affectées à des utilisateurs, groupes ou rôles• Peut porter sur des objets d’une granularité très variée : tables,

vues, procédures stockées …

• Ne résiste pas à une attaque sur les fichiers du serveur ou à une attaque du DBA !

• Nécessaire mais insuffisant !!

ServeurBD

BD

Utilisateur

Page 56: Conception de bases de données

221

Droits d'accès : Syntaxe de base et rôles

•Syntaxe de base• Grant <droits> on <objet> to (<usager>*) [with grant option]• Revoke <droits> on <objet> from (<usager>*)• <droits> ::= all | select | insert | delete |update | alter• <objet> ::= relation | vue | procedure• <usager> ::= public | nom d'usager

•Rôles (SQL3):• Create role <nom_role> : Création d’un nouveau rôle• Drop role <nom_role> : Suppression d’un rôle• Les instructions Grant et Revoke s’appliquent sur des rôles• Grant <liste roles> to (<usager>*) : Affectation de rôles aux usagers• Set role <liste_roles> : Activation de rôle(s) pendant une session

222

Droits d'accès : droits sur les vues

160

380

120

230

Salaire

Paris

Chartres

Versailles

Paris

Ville

4049

5489

1254

5485

Poste

Joe

Zoe

Jack

Jim

Prénom

Doe

Lerich

Trock

Ricks

Nom

……….4

AdresseId-E

……….3

……….2

……….1

4049

5489

1254

5485

Poste

Joe

Zoe

Jack

Jim

Prénom

Doe

Lerich

Trock

Ricks

Nom

4

Id-E

3

2

1

890

MasseSalariale

Nombred’employés

4

Employés

Service des ressources humaines

Public

223

Droits d'accès : droits évolués

• Règles indépendantes du contenu : • Ex. la secrétaire a accès aux infos administratives• grant ou revoke sur relation ou vue

• Règles dépendantes du contenu : • Ex. Le médecin a accès aux dossier de ses patients• Utilisation de vues paramétrées (e.g. avec Current_User)

• Règles dépendantes du contexte :• Ex. en l’absence du médecin traitant, tout médecin a accès au

dossier du patient• Utilisation de vues paramétrées avec tables contextuelles• Ex. Les salaires ne peuvent être modifié que le 1er du mois• Utilisation de procédures stockées

224

Droits d'accès : exemple

Le médecin a accès aux dossier de ses patients

• Définition d ’une vueCreate view dossier_patient_du_medecin asSelect * From dossier_patientWhere dossier_patient.medecin_traitant = CURRENT_USER ;

• Création du rôle médecin : Create role medecin

• Affectation du rôle aux médecins :Grant medecin to jean, jeanne

• Affectation des droits au rôle médecinGrant all on dossier_patient_du_medecin to medecin

Page 57: Conception de bases de données

225

Confidentialité via les vues

Principe : Restreindre l'accès à la BD en distribuant es droits via des vues :

Vérification des droits

Requête Q sur des vues

Gestionnaire de Vues

Définition des Vues

+ Droits

associés

Requête Q’sur les relations

de base

Exécution de requête

OK

OK Résultat

226

Bases de données privées virtuelles (VPD)

Principe : Rajouter des conditions aux requêtes utilisateur

Requête Q

Procédure de rajout de condition

Exécution de requête

Résultat

Requête Q’Complétée en fonction du

contexte

Exécution de procédure

Contexte

227

Confidentialité dans les SGBDR (bilan)

• Via des vues• les vues portent en général sur des données non autorisées• Les vues peuvent inclures des variables (ex.CURRENT_USER)

• Base de donnée privée virtuelle• Illusion d'une base de donnée privée• Complexe à mettre en œuvre.

• Via des procédures stockées • droits sur les procédures, pas de droits sur les données• Complète les mécanismes à bases de vues• Prise en compte d'éléments contextuels ( heure, utilisateur, etc.)

Supposent que l'utilisateur passe "par la porte d'entrée" !

228

T4 : Chiffrement de la BD

• Principe : chiffrer l’empreinte disque de la BD• Seule solution pour résister aux attaques sur les fichiers

Oracle Obfuscation ToolkitProtegrity Secure.Data • Oracle, Informix, Sybase, SQL Server, IBM DB2

Proposition d’IBM (recherche – même principe que Protegrity)

ServeurBD

BD

Utilisateur

Page 58: Conception de bases de données

229

Oracle Obfuscation Toolkit

• Fourniture d’un « package » permettant le chiffrement / déchiffrement de données

• Problèmes : • Gestion et partage de clés à la charge de l’application • Système non résistant à un pirate administrateur

• Les packages peuvent être substitués,• Les données apparaissent en clair lors de l’exécution des

requêtes

• ORACLE : « DBA has all privileges » !!

230

Protegrity Secure.Data

• Solution basée sur 2 modules :• Secure.Manager : gestion des utilisateurs, droits et clés• Secure.Server : module de chiffrement intégré au noyau SGBD

• … et 2 personnes physiques différentes …• Database Administrator (DBA) / Security Administrator (SA)

• Isolation DBA/SA ?• Données toujours en clair à un moment de l’exécution

SGBD+

SecureServer

BD

Utilisateur

SecureManager

Clés UtilisateursPrivilèges

231

Conclusion : Sécurisation de bout en bout !

•Attaques sur l’authentification• Ex. Scott Tiger (Oracle), Phisching, mot de passes faibles

Authentification forte, basée sur du matériel

•Attaques sur les communications• Ex. écoute, interception, altération, rejeu

Utilisation de SSL recommandé

•Attaques du serveur • Ex. Intrusion, craquage de mot de passe

Détection d’intrusion, firewalls, etc.

•Fiabilité des logiciels• Ex. Listener Service, injection SQL, Oracle Unbreakable

Utilisation/configuration correcte, Mises à jour régulière

•Attaque sur les fichiers• Chiffrement (ex. Protegrity, Oracle Obfuscation toolkit) BD

232

•Cryptographic tools and protocolsBasic primitives

– Encryption– Cryptographic hash

Combining cryptographic primitives (correctly)

Page 59: Conception de bases de données

233

Cryptography: the characters

Alice: (A)She wants to communicate with Bob!

Bob: (B)He wants to communicate with Alice!

Marvin: (M)Marvin is Malicious

Trent: (T)Trent is Trusted

234

Passive attacks

Charlie has access to unauthorized data

Charlie modifies the transmitted data

ALICE

MARVIN

BOB ALICE

MARVIN

BOB

Active attacks

235

Passive and active attacks

• Passive attacks: threaten confidentiality• Active attacks: threaten integrity

Identity theft– Marvin sends a message to Bob with Alice IDs

Data alteration– Marvin modifies the content of Alice message

Message forging– Marvin forges a fake message for Bob or Alice

Replay attack– Marvin captures a message and sent it to Bob several times

Repudiation– Alice sends a message to Bob and denies having sent this message

Destruction– Marvin destroys selectively some messages sent to Bob

Delays / reordering– Marvin introduces communication delays or reorders messages

236

Symmetric encryption

• Sender and receiver share a secret allowing symmetric encryption and decryption

ALICE BOB

m c

MARVIN

c m

Encr

yptio

n

Dec

rypt

ion

Shared secret

Page 60: Conception de bases de données

237

238

Kerckhoffs' principle

In 1883, the most famous work by Auguste Kerckhoffs was published: La Cryptographie Militaire (military cryptography). This book set forth desiderata for encryption systems…

The encryption system must not be required to be secret, and it must be able to fall into the hands of the enemy without inconvenience;

The system must be practically, if not mathematically, indecipherable;

239

Symmetric encryption: Secret key encryption

• All the details of the system, including the encryption and decryption functions are known, except the key

• Security is only based on the secrecy of the key K

ALICE BOB

m c

MARVIN

c m

c = EK(m) m = DK(c) = DK(EK(m))

Encr

yptio

n

Dec

rypt

ion

Shared secret: key K

240

Attacking a symmetric cipher

• The attacker knows the ciphertext c

Find the plaintext m, or better the key K

• The attacker knows couples plaintext/ciphertext (m, c)

Find the key K, or at least be able to decrypt other messages

Page 61: Conception de bases de données

241

Attacking a symmetric cipher (2)• Example :

Caesar cipher (used for military purposes by Julius Caesar)

Plaintext: attackatonceCiphertext: exxegoexsrgi Very easy to attack !

• Given the small number of possible shifts (26), the key can be found in 13 operations, in average…

The problem here is the size of the key! (less than 5 bits !)

242

Attacking an simple alphabetic substitution

• Assume a random alphabetic substitution such as

• Can we easily retrieve the key (i.e., the table) knowinga ciphertext ?

(NB: French message)

243

(1) Frequency analysis: a single letterIn the cipher text

In French

Conclusion

Letter frequency in French

244

(2) Frequency analysis: bigramsIn the cipher text

In French

In the cipher text

In French

Page 62: Conception de bases de données

245

(3) Using some common words

246

(4) and more common words…

soulent L V

dommes D H

ehuipage H Q

aleatros E B

mompagnons M C

etc.

247

Finally !

248

Simple alphabetic substitution

The simple alphabetic substitution cipher is:

• Class of Cipher: Block cipher The message is encrypted by blocks of fixed size (n bits)

• Mode of operation: ECBElectronic Code BookThe message is split in n bits blocks, each encrypted separately

• Why the attack was so easy?The algorithm is too weak?The encryption key is too short?The encryption block is too small? Other reasons?

• Let’s check stronger algorithms

Page 63: Conception de bases de données

249

Some symmetric block ciphers

• DES Data Encryption Standard (1976 - 1997)Encrypts 64 bits blocksEncryption and Decryption are the same algorithmsThe encryption key is 56 bits

• 3DESUsed as a replacement for DES between 1997 and 2001Uses three 56 bits keys tripleDES(k1k2k3, M) = DES(k3,DES(k2,DES(k1,M)))

• RIJNDAEL (AES) Used since 2001 and Encryption standard since 2002Authors: Joan Daemen and Vincent Rijmen RijndaelWinners of the AES competition 128 bits blocks with keys of 128, 192 or 256 bits Fast and requires little memory

250

Attacks on DES, 3DES and AES

• DES1997: 39 days on 10 000 Pentium 1998: Deep Crack breaks a DES key in 56 hours (250 000 US$)2007: 6.4 days on a $10,000 parallel machine

• 3DESThe best attack known on 3-key 3DES requires around 232 known plaintexts, 2113 steps, 290 single DES encryptions, and 288 memory !!3DES is computationally secure (now)

• AESOnly Side Channel Attacks were successful on AESSee http://www.cryptosystem.net/aes/ for more informationAES is computationally secure (now)

Thus, can I use 3DES or AES without problems ?

251

Unconditional vs Computational security

• Unconditional security“the uncertainty in the plaintext, after observing the ciphertext, must be equalto the a priori uncertainty about the plaintext – observation of the ciphertext provides no information whatsoever to an adversary” [Menezes]The unique possible attack is exhaustive key searchTo reach unconditional security, the secret key must be as long as the plaintext ! [Shannon 49]

• Computational security“A proposed technique is said to be computationally secure if the perceived level of computation required to defeat it (using the best attack known) exceeds, by a comfortable margin, the computational resources of the hypothesized adversary.” [Menezes]

252

Triple DES encryption with ECB mode …

• Can I use 3DES or AES without problems ?

NO!

Page 64: Conception de bases de données

253

Encryption mode: Electronic Code Book-ECB

Plain-text 2 (P2)Plain-text 1 (P1) …

80

by tes

16

Cipher-text 2 (C2) …Cipher-text 1 (C1)

EK (P2)EK (P1)

254

Triple DES encryption with CBC mode …

• Can I use 3DES or AES without problems ?

• Yes, if I take care!

255

Cipher Block Chaining (CBC)

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 (…)

256

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+1EK (IV+2) ⊕ P2

+2 +3

Other modes of operations

• Several modes of operations exists, the adequate one depends on the desired properties of the ciphertext

Error propagationPartial decryptionEtc.

• See [Menezes] pp 288

• Ex. The counter mode

Page 65: Conception de bases de données

257

Asymmetric (Public key) encryption• Each user has

a public key, publicly available on a directory, a private key kept secret

• No need for a shared secret

ALICE BOB

m c

MARVIN

c m

Private key KPriv (bob)

c = EKPub(m) m = DKPriv(c) = DKPriv(EKPub(m))

Public key KPub (bob)

Encr

yptio

n

Dec

rypt

ion

258

Secret Key vs Public/Private keys

• Alice & Bob have the key

• Alice use the key to deposit a message into the safe

• Bob use the key to retrieve the message from the safe

Only Alice & Bob can exchange messages

• Alice uses the public key (Bob’s address) to send a message to Bob

• Bobs uses his private key (the mailbox key) to retrieve the message

Anyone can send a message to Bob (his address being public)

Only Bob can retrieve the messages

259

The RSA asymmetric cipher [Rivest - Shamir - Adleman 78]

• Security: difficulty of factoring large numbers

• AlgorithmPick two large random primes p and q Let N = p × qPick a large integer d relatively prime to (p-1)×(q-1)Find the integer e such that e*d = 1 (mod (p-1)×(q-1))(Public) Encryption key is (e, N): C = M e (mod N)Decryption key is (d, N): M = C d (mod N) – d must be kept secret!

• PerformanceMuch slower than symmetric algorithm

– (2-3 orders of magnitude)Generally combined with symmetric algorithms

• Recommended key size: 1024 bits

260

Hybrid encryption

ALICE BOB

MARVIN

Private key KPriv (bob)

Public key KPub (bob)

Ks Ks’RSA

m cAES

KsKs’ RSA

c mAES

Ks Ks’RSA

m cAES

• Combines the advantages of both encryption methodsPerformance (symmetric)No shared secret (asymmetric) – anyone can send a message to Bob !

Page 66: Conception de bases de données

261

Cryptographic hash functions

• Goal: ensure data integritypotentially combined with encryption (see after)

• A hash function h must satisfy the following propertiesmaps an input x of arbitrary bit length, to an output h(x) of fixed bit length n.h(x) must be easy to compute

• A hash function h is a cryptographic hash functions if it satisfies (some of) the following properties

preimage resistance: given a hash value h, it is computationally infeasible to find any x, such that h(x) = h2nd preimage resistance: given x and h, such that h(x) = h, it is computationally infeasible to find any second input y, such that h(y)=h(x)=hcollision resistance: it is computationally infeasible to find any two distinct inputs x and y such that h(x) = h(y)

• Thus, a cryptographic hash function h ensures that any bit change in the input will impact the output. 26

2

Cryptographic hash functions (2)

• Examples: Message Digest 5 (MD5) [Riv92] Secure Hash Algorithm 1 (SHA-1) [NIS95]

• Process the input message by blocks of 512 bits

• The result of the hash function is 160 bits for SHA-1 128 bits for MD5

• Security: SHA-1Find a 2nd preimage requires 2160 operations Find a collision requires 280 operations

• Hash functions are publicly known

• Keyed hash functions also exist (hash function taking as a parameter a cryptographic key)

263

Combining cryptographic primitives

• Goal: Resist to passive and active attacks

• Passive attacks : threaten Confidentiality

• Active attacks: threaten IntegrityIdentity theftData alterationMessage forgingReplay attackRepudiationDestructionDelays / reordering

• Approach followedDescribe basic constructs and their rationale Do not describe complete protocols (too boring) book ch. 26, wikipedia…

3

4

1

2

5

6

2

2

264

(1) Confidentiality: Encryption alone

• Ensures confidentiality – remind thatSymmetric encryption is efficient but needs a shared secret Asymmetric encryption is slow but does not need a shared secret

need for a PKI however (Public Key Infrastructure)Combining symmetric and asymmetric is a good option Both must be carefully used

– Mode of operation: ECB should not be used for messages with repetitive patterns (frequency analysis)

– Only use known algorithms

• Encryption does not ensure integrityThis is a common mistake (even encrypted data can be (randomly) altered)Unless used in a very specific way

– e.g., encrypting blocks with high redundancy to ensure integrity(e.g., a 128 bits block storing 64 bits of data, replicated)

– This may lower the algorithm resistance to attacks

Page 67: Conception de bases de données

265

(2) Replay Attack

• Problem: Marvin copies the message and resends it to Bob

• Solution: Includes a unique timestamp (or sequence number) in the message.The receiver keeps timestamps of recently received messages He does not accept a duplicate

• Remark: Obviously, the timestamp integrity must be preserved (see point 4)

• Remark (2):Using sequence number may protect from reordering/destruction attacks.

266

(3) Message forging: Nonce

• Problem: Alice and Bob share a session key, KAlice sends a message M1 to Bob and gets M2 back. How can Alice be sure that M2 came from Bob and not from Marvin ?

• Marvin might:send a random string that Alice decrypts (using K) to another random string that looks like a correct responsereplay an earlier message sent by Bob encrypted with K, that is a possible response (Alice is not a server that maintains a list of timestamps)

• Solution: Include a nonce, N, in M1 A random string generated by AliceLong enough so that Marvin cannot guess itIf M2 contains N+1 then it can only have been generated by Bob (since only Bob knows K) and it cannot be a replay

267

(4) Data alteration + Confidentiality

• Symmetric encryption assumed• One construction is wrong• Others have different properties

m

Encrypt

m || hHash

m

c || hHashEncrypt

c

mEncrypt

Hash

c || h

cEncrypt

Hash

h

Encrypt

m

EncryptEncrypt

c || h’

268

(5) Identity theft: Authentication-1

• Is asymmetric encryption sufficient to ensure authentication ?Alice and Bob have no shared secret but want to establish a secured communication.They exchange their public keys and a session key encrypted with Alice public key

• Is this protocol secure ?

ALICE BOB

Hi, Bob, I am Alice, here is my Public key, could you send me yours such that we can discuss securely ?

Hi Alice, I am Bob, here is my Public key and a session key encrypted with your Public Key

Fine, Bob, here is my secret message encrypted with the session key….

Etc…

3

4

1

2

Page 68: Conception de bases de données

269

(5) Authentication-2: attacking the simple protocol • A “Man in the middle” attack can be conducted !!!

Marvin intercepts Alice’s message and exchange her public key with a generated public key (Marvin knows the corresponding private key)Then, he intercepts Bob’s message, decrypt the session key, re-encrypt it with Alice’s public key (kept from 1st message) and exchange Bob’s public key with another generated public keyAlice and Bob does not notice anything and Marvin intercepts all messages, can even create fake message !

• Need for a trusted party delivering public keys (PKI) or secret keys (e.g., Kerberos)

ALICE BOB

MARVIN

270

• Alice has been previously registered by Trent, showing identity proofs and has sent her public key.

• She received in return, a certificate containing her public key, certified by Trent.

• Trent certificate is “well known” (certification hierarchy)

1 – Bobs asks Alice her certificate

2 – Alice sends her certificate to Bob, Bob checks its validity

3 – Bob sends Alice a session key encrypted with Alice public key

4 – Alice decrypts the session key and starts communicating with Bob

SSL is based on this scheme

(remark: Bob need not be registered)

(5) Authentication-3: trusted party & public keys

ALICE BOB

TRENT

Registration

34

12

271

(5) Authentication-4: trusted party & secret keys

ALICE BOB

TRENT

34

1

2

Registration

Reg

istr

atio

n• Alice & Bob have been previously registered by Trent

• During this registration, they exchanged a secret key only known by Trent/Alice (TA) or Trent/Bob (TB)

1 - Alice contacts Trent, sending a nonce for a communication with Bob

2 - Trent sends the nonce and the session key, both encrypted with TA. A ticket, including the session key encrypted TB key is also sent

3 - Alice checks the nonce, decrypts the session key, sends the Ticket to Bob

4 - Bob decrypts the Ticket, retrieve the session key, and starts communicating with Alice

KERBEROS is based on this scheme

272

(5) Authentication-5: Secret vs Public

• Both need trusted third parties.

• Secret (Kerberos) Distributes symmetric keysOperates on-line, when interaction takes place since it creates a new symmetric key for each session

• Public (SSL, Certification authority)Distributes public keys (certificates)Operates off-line, prior to interaction since public key is fixedOnce certificate created, intervention by CA no longer required

Page 69: Conception de bases de données

273

(6) repudiation: Digital Signature-1

• Digital Signatures can be used forProof of authorship Non-repudiation by authorGuarantee of message integrityDoes not guarantee confidentiality (orthogonal)– If confidentiality is needed, encryption of the message must be used

• Important for many Internet applications

• Based on public key cryptographyCurrent systems use RSA algorithm

• Basic idea:(1) Hash the message(2) Encrypt the hashing with the sender private key(3) Add to the message the sender public key and a certificate (for checking)

274

(6) Digital signature-2: Signing

275

(6) Digital Signature-3: Verifying

276

Overview of database specific tools

User

DBMS

ServerStatistical use

Delivered data

1-Authentication

2-Protection of communications

3-Authorizations

4-Database encryption

5-Audit

8-Data anonymization

7-Limited data retention

6-Usage control

Page 70: Conception de bases de données

277

(1) Authentication, (2) Communications

• AuthenticationBasic: Login + PasswordOS authentication can be used by the DBMSDBMSs support most authentication protocols (SW & HW)Attacks: default passwords (600 available on the web)Problems: Indirect authentication:

– The user is authenticated by the Application– The application is authenticated by the DBMS

• CommunicationsUse of classical protocols (e.g. SSL)A lot of known attacks on the Oracle Listener Service….

User

1-Authentication

2-Protection of communications

278

(3) Authorizations-1: Access control

• Basically: Discretionary Access Control (DAC)Subject: Authenticated users/processesObjects: Database objects to be protectedActions: Actions that are authorized (e.g., read, update)

• Basic syntaxGRANT <Actions> ON <object> TO <Subject>REVOKE <Actions> ON <object> FROM <Subject>

• Role Base Access Control (RBAC)Roles are recipient of authorizationsRoles are assigned to users

• ObjectsTablesViewsStored proceduresetc.

DBMS

Server

3-Authorizations

279

(3) Authorizations-2: Access control

• View : Virtual table defined by an SQL query• The DBMS transforms queries on views in queries on base

tables

View definition

View manager

Rewrite query on base tables

Query on views

Access control

280

Example

Create View Stats asSelect service, count(*) Nbpatients, sum(expense) Total_ExpFrom PatientsGroup By serviceVI

EW

Select Total_ExpFrom StatsWhere service = "immuno"Q

UER

Y

Select sum(expense) Total_Exp From PatientsWhere service = "immuno"FI

NA

LQ

UER

Y

Page 71: Conception de bases de données

281

(3) Authorizations-3: Access control with views

170

380

120

230

Salary

Paris

Chartres

Versailles

Paris

City

4049

5489

1254

5485

Fone

Joe

Zoe

Jack

Jim

FName

Doe

Lerich

Trock

Ricks

LName

……….4

AddressId-E

……….3

……….2

……….1

4049

5489

1254

5485

Fone

Joe

Zoe

Jack

Jim

FName

Doe

Lerich

Trock

Ricks

LName

4

Id-E

3

2

1

225

Average Salary

Number of employees

4

Employees

Human ressources

Statistician

282

(3) Authorizations-4: Virtual Private Database

Query

Procedure for Adding

conditions

Query with added

conditions

Running the procedure

Contextual information

283

(4) Database encryption

• Oracle Obfuscation toolkit

• Same kind of tools for other DBMSs

• Protegrity Secure-Data284

(5) Database auditing

• Use specific auditing features of your database system

• Use classical triggers for personalized audit

• Triggers: E-C-A rules

When the EVENT happensOn insertion, update or deletion of a tuple in a given table

If the CONDITION is fulfilledAny kind of SQL predicate

Do the ACTIONSpecific code to execute (SQL, PLSQL, other languages)

• Triggers allow recording who has modified what and when

Page 72: Conception de bases de données

285

(6) Usage control, (7) Limited Data retention

• Access control / Usage control: Access control defines the rules for accessing the dataUsage control regulates the usage of delivered dataLimited data retention is one example of usage controlDigital Right Managements is usage control

– You can access a video, watch it, but not redistribute it

• Limited data retention principle Attach a lifetime to the data Compliant with its acquisition purposeAfter which it must be withdrawn from the systemExamples

– Google: Cookies kept 2 years instead of 30 as before (!)– Ask and IxQuick keep user information for only two days.

286

(8) Data Anonymization: on-going works

287

Bibliography[MPO] Alfred Menezes, Paul van Oorschot, Scott Vanstone: Handbook of

Applied Cryptography. Available online: http://www.cacr.math.uwaterloo.ca/hac/

[Sch] Bruce Schneier: Applied Cryptography: Protocols, Algorithms, and Source Code in C

[KBL] Kifer, Bernstein, Lewis : Database Systems, an application oriented approach (chapter 26)

[SL98] Stefan Lucks: Attacking Triple Encryption, Fast Software Encryption 1998, pp 239–253.

[AKS02] Agrawal R., Kiernan J., Srikant R., Xu Y., “Hippocratic Databases”, VLDB , 2002.

[FBI] Computer Security Institute, "CSI/FBI Computer Crime and Security Survey" http://www.gocsi.com/forms /fbi/pdf.html).

[Ora] Oracle Unbreakable http://www.techtv.com/news/securityalert/story/0,24195,3364291,00.html

[Mat] U. Mattsson, Secure.Data Functional Overview, Protegity Technical Paper TWP-0011,. (http://www.protegrity.com/White_Papers.html)

[Orab] Oracle Corp., “Advanced Security Administrator Guide”

288

Le dictionnaire de données Oracle

Support emprunté à L. Bouganim

Page 73: Conception de bases de données

289

Contenu du Dictionnaire Oracle• Dictionnaire Oracle = tables systèmes en lecture seule

• Evolution du dictionnaire – Généré au moment de la création de la DB– Mis à jour automatiquement

• Contient des informations sur la structure de la BD– Utilisateurs (privilèges, rôles) – Noms et caractéristiques des objets

(tables, vues, index, clusters, triggers, packages, ...) – Contraintes d'intégrité– Ressources physiques allouées à la base – Valeurs par défaut pour des colonnes– Les autres informations générales sur la base des données

• Structure– Tables de base = tables fondamentales contenant les informations sur la BD

• Conservées dans le tablespace SYSTEM– Vues de ces tables = présentation dépendant du rôle de celui qui consulte… 290

Utilisation du dictionnaire• Accès avec SQL

• Utilisé par le DBA et les utilisateurs–Consultation d’informations sur la structure de la BD –Seulement des droits en lecture sur des vues du dictionnaire–NB: seulement par des requêtes SELECT (lecture seule)

• Utilisé par Oracle–A la connexion et pendant l’exécution des requêtes

• Consultation d’informations sur les utilisateurs et leurs privilèges • Consultation d’informations sur les objets de la BD

–Lors des requêtes SQL DDL (Data Definition Language)• Modification du dictionnaire

291

• La vue ‘DICTIONARY’ permet d’accéder aux noms/desc. des vues DBA, ALL, USER, V$...

Différentes vues

SQL> SELECT table_name, comments > FROM dictionary > WHERE table_name LIKE '%CONSTRAINTS%';

TABLE_NAME COMMENTS----------------------------------------------------------------ALL_CONSTRAINTS Constraint definitions on accessible tablesDBA_CONSTRAINTS Constraint definitions on all tablesUSER_CONSTRAINTS Constraint definitions on user's own tables

3 rows selected.

292

Exemple• La vue ALL_CONSTRAINTS

– Contraintes des tables accessibles à l’utilisateur

Page 74: Conception de bases de données

293

Les vues dynamiques V$ (1)• Vues dont les informations sont «dynamiques»

– Evoluent du démarrage de l’instance jusqu’à son arrêt– Décrivent l’activité de la DB et de l’instance– Sont appelées «dynamiques» mais

• en fait, elle externalise l’état de variables internes à Oracle

• Usage de ces données – Principalement pour l’amélioration des performances de la BD

• Ex. V$Session

– Le DBA peut déconnecter les utilisateurs avec la commande suivante

SQL> SELECT sid, serial#, username, type, status> FROM v$session;

SID SERIAL# USERNAME TYPE STATUS----- -------- ------------ ---------- -------1 1 BACKGROUND ACTIVE …8 6 HEURTEL USER INACTIVE

SQL> ALTER SYSTEM KILL SESSION ‘8,6’ ;

294

Les vues dynamiques V$ (2)• Ex. V$SGA

– Informations sur la «System Global Area» (SGA)

• V$LOGFILE : détail des fichiers redo-log

SQL> SELECT * FROM V$SGA;NAME VALUE -------------------- ---------Fixed Size 49152Variable Size 12906496Database Buffers 2048000Redo Buffers 73728

SQL> SELECT * FROM v$logfile;GROUP# STATUS MEMBER------ ------ ------------------------------1 STALE E:\ORANT\DATABASE\LOG4ORCL.ORA2 STALE E:\ORANT\DATABASE\LOG3ORCL.ORA3 STALE E:\ORANT\DATABASE\LOG2ORCL.ORA4 E:\ORANT\DATABASE\LOG1ORCL.ORA

295

Quelques vues intéressantes (1)• Instance Oracle

– V$DATABASE: Statut de la base de données– V$INSTANCE: Détails sur l’instance– V$PARAMETER: Paramètres d’initialisation de l’instance– V$PROCESS: Processus lancés par l’instance et les utilisateurs– V$SGASTAT: Détail de l’occupation mémoire de votre SGA

• Structure logique – DBA_EXTENTS : Description des Extents composant les

Segments de la base de données– DBA_FREE_SPACE : Extensions libres dans tous les Tablespaces– DBA_SEGMENTS : Allocation d’espace disque de tous les

Segments de la base de données

296

Quelques vues intéressantes (2)• Structure physique

– V$CONTROLFILE : Liste des fichiers de contrôle de votre BD– V$DATAFILE: Détail des fichiers de données de la BD– V$TABLESPACE : Tablespaces de la base de données

• Utilisateurs et droits – DBA_ROLE_PRIVS : Rôles reçus et donnés de la BD– DBA_USERS : Informations concernant les utilisateurs

déclarés de la base de données– V$SESSION : Détail de toutes les sessions actives de l’instance

• Objets du schéma – DBA_TABLES : Description des tables relationnelles de la BD– DBA_INDEXES: Description de tous les index de la BD– DBA_CLUSTERS: Description de tous les clusters de la BD