Vous êtes sur la page 1sur 170

Mthode d'analyse Merise et SGBD relationnels

Gilles SIMON
Matre de confrences, UHP Nancy 1 Loria, bureau B162 E-mail : gsimon@loria.fr http://www.loria.fr/~gsimon

Plan du cours
1. La mthode danalyse Merise
1.1 Introduction 1.2 Dpendances fonctionnelles, normalisation 1.3 Schma conceptuel des donnes et passage au schma logique (rappels) 1.4 Schma conceptuel des traitements 1.5 Passage au schma logique des traitements et optimisation

2.

SGBD relationnels niveau II


2.1 Scurit et cohrence des donnes 2.2 JDBC 2.3 PHP

CAAI2

La mthode d'analyse Merise

Principales rfrences

Bases de donnes et systmes d'information, Nacer Boudjlida, Dunod, 1999. Oracle8i sous Linux, Gilles Briard, Eyrolles, 2003

CAAI2

La mthode d'analyse Merise

1re partie : la mthode danalyse Merise

1.1 Introduction

La mthode Merise

Cre en 1977 Volont de doter les administrations et les entreprises publiques d'une mthodologie rigoureuse tout en intgrant les aspects nouveaux pour l'poque : informatique repartie et bases de donnes

Propose une approche de conception sparant l'tude des donnes de celle des traitements, en avanant progressivement par niveau : chaque niveau fournit un certains nombre de documents permettant la synthse textuelle d'un processus de rflexion

Cite en France par 70% des entreprises dclarant utiliser une mthode !
La mthode d'analyse Merise 6

CAAI2

Plusieurs niveaux d'abstraction


Univers du discours

Niveau conceptuel : produit la reprsentation abstraite des donnes et des traitements (quoi faire ? avec quelles donnes ?) Niveau logique : transformation et raffinement des rsultats du niveau conceptuel, estimation en temps et en volume du futur systme (qui ? ou ?) Niveau physique : adapte les rsultats du niveau logique aux contraintes du matriel et du logiciel utiliss (comment ?)

description du problme fonctions rgles de gestion ... SCD SCT SLD SLT SPD SPT

NIVEAU CONCEPTUEL NIVEAU LOGIQUE NIVEAU PHYSIQUE

indpendant de la technologie

Merise Implantation
7

CAAI2

La mthode d'analyse Merise

1.2 Dpendances fonctionnelles, normalisation

Le modle relationnel : rappel

Introduit en 1970 par Codd, solides bases thoriques : dfinir de faon formelle les langages de manipulation associs Le modle relationnel reprsente l'information dans une collection de relations :
une relation = une table double entre chaque ligne de la table (appele nuplet ou tuple) peut tre vue comme un fait dcrivant une entit du monde une colonne de la table est appele un attribut.

A chaque relation est associe une cl (attribut soulign) qui lidentifie de manire unique

CAAI2

La mthode d'analyse Merise

Exemple

Schma de la relation Etudiant :


Etudiant(no,nom,prnom,ge)

Extension de la relation Etudiant : no nom


Dupond

attribut

prnom
Loc

ge
19

tuple

15

12 1 4 8
CAAI2

Blanc Noir Rouge Tata

Michle Pascal Franois Alain

20 23 22 22
10

La mthode d'analyse Merise

Risques
Relation Produit
prod_id p1 p1 p3

libell K7 K7 Vis

pu 23.5 23.5 10

qte 300 500 900

dep_id 1 2 4

adr Nancy Laxou Nancy

volume 9000 6000 2000

Redondance : libell et pu apparaissent pour chaque instance d'un produit Risque d'introduction d'incohrence lors de l'insertion d'une nouvelle instance de p1 Risque de perte d'information : suppression du produit p3 on perd son libell, son pu et les information relatives au dpt 4
La mthode d'analyse Merise 11

CAAI2

Solutions
Deux solutions sont envisageables :
Transformer les relations dangereuses en plusieurs relations pertinentes tablir les dpendances fonctionnelles, puis normaliser Se poser la question avant dcrire les schmas de relations schma entits/associations (E/A), puis transformation en relationnel

CAAI2

La mthode d'analyse Merise

12

Les dpendances fonctionnelles

Un attribut ou une liste d'attributs Y dpend fonctionnellement d'un attribut ou d'une liste d'attributs X dans une relation R, si tant donne une valeur de X, il ne lui est associ qu'une seule valeur de Y dans toute instance de R. On note une telle dpendance. R Exemples :
prod_id pu dep_id adr, volume prod_id, dep_id qte

X Y

prod_id libell

CAAI2

La mthode d'analyse Merise

13

Proprits des dpendances fonctionnelles


Soit U la liste des attributs de R, on a alors les proprits : (F1) Rflexivit : Y X X U X R Y (F2) Augmentation : X R Y X Z R Y Z (F3) Transitivit : X R Y Y R Z X R Z (F4) Union : X R Y X R Z X R Y Z
(F5) Pseudo-transitivit : X R Y Y W R Z X W R Z

(F6) Dcomposition : X R Y Z Y X R Z
CAAI2 La mthode d'analyse Merise 14

Typologie des dpendances fonctionnelles

Une dpendance
triviale si Y X

X R Y

est :

X ' R Y lmentaire si pour tout X' X, la dpendance fonctionnelle


n'est pas vraie (Y ne dpend pas fonctionnellement d'une partie de X) canonique si sa partie droite ne comporte qu'un seul attribut directe si (i) elle est lmentaire et si (ii) Y ne dpend pas transitivement de X

Exemples :
prod_id, libelle libelle ?? prod_id, libelle pu ?? prod_id, dep_id qte ??

CAAI2

La mthode d'analyse Merise

15

Cl d'une relation

Un attribut ou une liste d'attributs X est une cl pour la relation R(X,Y) si Y dpend fonctionnellement de X dans R X est une cl minimale si X R Y est lmentaire Si une relation possde plusieurs cls, nous on choisissons une qui sera appele cl primaire (souligne dans les schmas de relation). Les autres cls seront appeles cls secondaires Ex : Voiture(immat#, chassis#, type, marque, puissance) admet immat# et chassis# comme cls

CAAI2

La mthode d'analyse Merise

16

Premire forme normale


1NF Une relation est dite en premire forme normale si
chacun de ses attributs a un domaine atomique mono-valu

Exemple :
Personne(id, nom, les_diplmes) o les_diplmes est l'ensemble des

diplmes obtenus par une personne n'est pas en 1NF


Personne(id, nom) est en 1NF Diplme(id, unDiplome) est en 1NF

CAAI2

La mthode d'analyse Merise

17

Deuxime forme normale


2NF Une relation R est dite en deuxime forme normale si (i)
elle est en 1NF et (ii) tout attribut n'appartenant pas une cl ne dpend pas d'une partie de la cl de R Exemple :
Stock(prod_id, dep_id, libell, qte) n'est pas en 2NF car

prod_id, dep_id qte prod_id libell


Stock(prod_id, dep_id, qte) est en 2NF Produit(prod_id, libell) est en 2NF
CAAI2 La mthode d'analyse Merise 18

Troisime forme normale


3NF Une relation est dite en troisime forme normale si (i) elle est
en 2NF et (ii) tout attribut n'appartenant pas une cl ne dpend pas d'un attribut non cl

Exemple :
constructeur Boeing Airbus Boeing type B747 A320 B747 capacit propritaire C1 Air France C2 British Airways C1 Egypt Air

Relation Avion
no_avion AH32 FM34 BA45

n'est pas en 3NF car type capacit, constructeur et type n'est pas une cl
Avion(no_avion, type, propritaire) est en 3NF Modle(type, constructeur, capacit) est en 3NF
CAAI2 La mthode d'analyse Merise 19

Algorithme de normalisation par synthse simplifi


0 Ecrire les dpendances fonctionnelles (df) 1 Rendre canoniques et lmentaires les df qui ne le sont pas 2 Reprsenter les nouvelles df sous forme d'un graphe dont les nuds sont les attributs impliqus dans les df et les arcs les df elles-mmes 3 Eliminer les df non directes 4 Partitionner les df en G1, ..., Gn de faon ce que toutes les df d'une partition aient la mme partie gauche 5 Constituer une relation Ri par Gi, la partie gauche de Gi tant cl de Ri : chaque Ri est alors en 3NF
CAAI2 La mthode d'analyse Merise 20

Exemple
type capacit (f1)

type capacit, constructeur no_avion type, propritaire, capacit, constructeur


f4 f3

type constructeur (f2)

no_avion type (f3) no_avion propritaire (f4) no_avion capacit (f5) no_avion constructeur (f6) f4 propritaire no_avion f3 type capacit
f1 f2

no_avion

propritaire type
f1 f2

f6

f5

capacit no_avion
f4 f3

constructeur

constructeur

propritaire G 1 type
f1 f2

Avion(no_avion, type, propritaire) Modle(type, constructeur, capacit)


21

G2 capacit
CAAI2

constructeur
La mthode d'analyse Merise

Dautres formes normales ...


Considrons les df suivantes : code ville et ville, rue code La relation code_postal(ville, rue, code) est-elle en 3NF ??? Oui !!! pourtant, il y a de la redondance : ville Vandoeuvre Vandoeuvre Nancy Nancy rue Aiguillettes bld Gal Leclerc av Saint Jean rue R. Poincare rue code 54506 54506 54000 54000

Il existe d'autres formes normales. Ex : Boyce and Codd (BCNF) : "une relation R est en BCNF ssi les seules df lmentaires qu'elle comporte sont celles o une cl dtermine un attribut" code_ville(code, ville) et code_rue(code, rue) sont en BCNF
CAAI2 La mthode d'analyse Merise 22

1.3 Schma conceptuel des donnes et passage au schma logique

Le modle Entit-Association
Modle E/A propos par Chen en 1976 :

(Type d') entit : reprsentation dun ensemble d'objets abstraits ou concrets, caractrise par une liste dattributs. Un ou plusieurs attributs jouent le rle de cl (Type d') association : permet de dcrire les liens "smantiques" entre des entits, peut tre caractris par des attributs (Type d') attribut: dcrit une proprit attache soit une entit, soit une association. Prend ses valeurs dans un domaine simple (chane, entier, rel, ...)
24

CAAI2

La mthode d'analyse Merise

Reprsentation graphique

Type dentit :

Nom de lentit

...

Noms des attributs

Type dassociation :

Nom entit2
Nom association

Nom entit1

...

Nom entit3

Noms des attributs


CAAI2 La mthode d'analyse Merise 25

Exemple

adresse

ge Inscrit no groupe Cours intitul

Etudiant nom prnom

CAAI2

La mthode d'analyse Merise

26

Typologie des associations


Cardinalit : couple (x,y) x et y exprimant respectivement le nombre minimum et maximum de fois qu'une occurrence du type d'entit peut participer au type d'association

x-1

y-1

1-1 (one-to-one) A
x-1

y-n

1-n (one-to-many) A
y-m

x-n

n-m (many-to-many)
CAAI2 La mthode d'analyse Merise 27

Typologie des associations


A A A B A A A B A A A B

One-to-one

One-to-many

Many-to-many
28

CAAI2

La mthode d'analyse Merise

Exemples
no_scu nom date_dition no_feuille

Personne
prnom id nom

0-1

Reoit

1-1

FeuilleImpts

montant immat marque

Personne
prnom adresse ge

0-n

Possession
date_achat

0-1
couleur

Voiture

no_tu

Etudiant
nom prnom

0-n

Inscrit
no_groupe

0-n

Cours
intitul

CAAI2

La mthode d'analyse Merise

29

Associations rflexives
Possibilit de spcifier le rle
id pnom pprnom

Personne

femme

0-1

mari Conjoint

0-1

CAAI2

La mthode d'analyse Merise

30

Entits faibles

Entit faible : entit sans identifiant propre Nexiste quen rfrence une autre entit dite identifiante Lassociation qui les unit est dite association identifiante Lentit faible a une cardinalit 1-1 sur son association identifiante Exemple :
numOu titre diteur numEx dateAchat

Ouvrage
CAAI2

1-n

matrialise
La mthode d'analyse Merise

1-1

Exemplaire
31

Spcialisations
Dfinition d'une relation de sous-classe entre une entit super-classe et une ou plusieurs entits sous-classes Exemple :
#id nom prnom adresse

Employ

Secrtaire
vitesse_frappe
CAAI2

Ingnieur
spcialit

Technicien
grade
32

La mthode d'analyse Merise

Typologie des spcialisations


S
d C1 Cn C1

S
d Cn ou

Disjointes :

ij , i j , Ci C j = { ij , i j , Ci C j { S =

} }

A recouvrement : Totales :

Disjointe partielle

Disjointe totale

S
ou

i =1, n

Ci

C1 Cn A recouvrement partiel
CAAI2

C1

Cn

Partielles :
i =1, n

A recouvrement total
La mthode d'analyse Merise

Ci S
33

Schma E/A : Quelques rgles respecter


Un type d'attribut est caractris par un nom et un domaine, Les domaines de valeurs des attributs sont atomiques Les noms des types d'attributs, d'entits et d'associations sont distincts Tout type d'entit a au moins un identifiant (une cl), qui est un type d'attribut ou une liste de types d'attributs

CAAI2

La mthode d'analyse Merise

34

Passage d'un schma E/A un schma relationnel (1/2)

Cas des types d'entits :


transformer toute entit E en une relation RE les attributs de RE sont les attributs de E la cl primaire de RE est un des identifiants de E

Exemple :
id nom

Personne
prnom
CAAI2

Personne(id, nom, prnom)

La mthode d'analyse Merise

35

Passage d'un schma E/A un schma relationnel (2/2)


A A
x-1

R R

y-1

B B

1. RAB(Attr (A), Attr(B), Attr(R))


cl(RAB)=cl(A) ou cl(B)

x-1

y-n

1. RA(Attr(A), Attr(R), cl(RB)) 2. RB(Attr(B))


cl(RA)=cl(A) (U cl(B) si A entit faible) cl(RB)=cl(B)

x-n

y-n

1. RA(Attr(A)) 2. RB(Attr(B)) 3. RR(cl(RA), cl(RB), Attr(R))


cl(RA)=cl(A) cl(RB)=cl(B) cl(RR)=cl(A) U cl(B)
36

CAAI2

La mthode d'analyse Merise

Passage d'un schma E/A un schma relationnel

Exemple 1
no_scu nom date_dition no_feuille

Personne
prnom

0-1

Reoit

1-1

FeuilleImpts

montant

PersonneImpts(no_scu, nom, prnom, no_feuille, date_dition, montant) ou PersonneImpts(no_scu, nom, prnom, no_feuille, date_dition, montant)
CAAI2 La mthode d'analyse Merise 37

Passage d'un schma E/A un schma relationnel

Exemple 2
id nom immat marque

Personne
prnom

0-n

Possession
date_achat

0-1
couleur

Voiture

Voiture(immat, marque, couleur, id, date_achat) Personne(id, nom, prnom)

CAAI2

La mthode d'analyse Merise

38

Passage d'un schma E/A un schma relationnel

Exemple 3
adresse ge no_tu

Etudiant
nom prnom

0-n

Inscrit
no_groupe

0-n

Cours
intitul

Etudiant(no_tu, nom, prnom, age, adresse) Cours(intitul) Inscrit(no_tu, intitul, no_groupe)


CAAI2 La mthode d'analyse Merise 39

Passage d'un schma E/A un schma relationnel

Exemple 4
id pnom pprnom

Personne 0-1 0-1 Personne(id, pnom, pprenom, id_conjoint)

o id_conjoint est un synonyme de id Conjoint

CAAI2

La mthode d'analyse Merise

40

Passage d'un schma E/A un schma relationnel

Cas des spcialisations


crer une relation pour chaque entit les attributs de chaque relation sont les attributs de l'entit correspondante + la cl de la super-classe
id nom prnom adresse

Employ

d
Secrtaire
vitesse_frappe CAAI2

Employe(id, nom, prenom, adresse) Secrtaire(id, vitesse_frappe) Ingnieur(id, spcialit) Technicien(id, grade)
Technicien
grade La mthode d'analyse Merise 41

Ingnieur
spcialit

1.4 Schma conceptuel des traitements

Le schma conceptuel des traitements

Un SCT (ou MCT - Modle ...) est une abstraction des activits du systme d'information et de leurs contraintes Inspir des rseaux de ptri Processus de conception :
Identification des acteurs et des flux d'informations Ordonnancement des flux Elaboration du SCT
43

CAAI2

La mthode d'analyse Merise

Le diagramme de flux

Sert de base pour fixer la porte et les limites du futur systme ou pour le dcomposer en sous-systmes Se prsente sous la forme d'un graphe dont les nuds sont des acteurs identifis du SI et les arcs montrent les types d'information circulant entre les acteurs

CAAI2

La mthode d'analyse Merise

44

Exemple de diagramme de flux


Cotisations Adhsion Dclaration Avis-rectification Facture-garage Rglement Facture

Frontire de l'tude
Paiement

ASSUR

Vhicule

ASSURANCE

GARAGE

Demande expertise Retour expertise Honoraires

EXPERT

CAAI2

La mthode d'analyse Merise

45

Le graphe de prcdence

Montre les dpendances temporelles entre les types d'informations Exemple :


Dclaration Demande expertise Retour expertise Facture-garage Rglement Avis-rectification

CAAI2

La mthode d'analyse Merise

46

Elaboration du schma conceptuel des traitements

En se basant sur le graphe ordonn des flux, on introduit les traitements concernant un ou plusieurs flux On dcrit le rle des traitements et les informations ncessaires en entre et produites en rsultat

CAAI2

La mthode d'analyse Merise

47

Reprsentation graphique du modle des traitements


Type d'vnement Type d'vnement

Condition de synchronisation Nom de la synchronisation Nom du type d'opration


Condition de production Condition de production

...

Type d'vnement
CAAI2 La mthode d'analyse Merise

Type d'vnement
48

Exemple de SCT
Evt0 Arrive dclaration Condition locale C1 de S2 a.no_dossier = b.no_dossier et b.no_dossier = c.no_dossier Evt2 Retour d'expertise Evt3 Arrive facture rparations

b
a et b et c et C1

S1 Ouvrir_dossier [dure = 4mn] OK Erreur Evt5 Avis de rectification Envoi chque Evt6 CAAI2 La mthode d'analyse Merise

S2 Rgler_sinistre Toujours [dure = 5mn]

Evt4 Demande d'expertise

Evt1 Dossier ouvert

Avis de rglement Evt7

Dossier clos Evt8 49

Type d'vnement

Description lexicale :
nom et message identifiant des occurences frquence d'apparition au cours d'une priode donne capacit (nb max d'occurences que le SI peut prendre en compte au cours d'une priode) liste des synchronisations auxquelles il participe et des oprations qu'il peut dclencher

CAAI2

La mthode d'analyse Merise

50

Exemple de type d'vnement

Evnement Arrive dclaration (Evt0 )


message : informations figurant sur la dclaration identifiant : le couple (no de l'assur, date d'arrive de la dclaration) frquence : 50 par jour capacit : 55 par jour participe la synchronisation S1 du type d'opration Ouvrir_dossier

La description du message peut tre formalise :


<Nom_assur : chane, Prnom : chane, No_police : chane, Date_accident : date ...>
51

CAAI2

La mthode d'analyse Merise

Type d'opration

Description lexicale :
nom et rle dure type(s) d'vnements qui conditionnent son dclenchement (entres) type(s) d'vnements produits (sorties) si la production des vnements est conditionnelle, expliciter la condition de production de chaque vnement action ralise

CAAI2

La mthode d'analyse Merise

52

Exemple de type d'opration

Opration Ouvrir_dossier
Rle : Vrifie une dclaration et initialise l'expertise Dure : 10 minutes Evnements en entre : Evt0 Evnements en sortie : (Evt4 et Evt1) ou Evt5 Action :
si dclaration_OK alors Ouvrir un dossier de sinistre (Evt1) Faire une demande d'expertise de ce dossier (Evt4) sinon Renvoyer la dclaration l'assur (Evt5) fsi

CAAI2

La mthode d'analyse Merise

53

Type de synchronisation

Description lexicale :
nom liste des types d'vnements qui participent la synchronisation ventuellement, condition de synchronisation portant sur les types d'vnements condition locale : prcise, en prsence de plusieurs occurrences d'un type d'vnements, laquelle choisir dlai de synchronisation : temps max sparant le moment o la synchronisation est activable et celui o elle est active dure limite : temps max d'attente entre l'arrive du premier vnement et celle du dernier

CAAI2

La mthode d'analyse Merise

54

Exemple de type de synchronisation

Synchronisation S2
Condition : Evt1 (a) ^ Evt2 (b) ^ Evt3 (c) ^ C1 Condition locale C1 : a.no_dossier = b.no_dossier ^ b.no_dossier = c.no_dossier et "premier arriv premier servi" Dlai de synchronisation : Trois jours Dure limite : douze mois

CAAI2

La mthode d'analyse Merise

55

Nombre d'occurences
E1 a E2 b (2) a et b S1 OP1 C1 (3) R1 C2 (2) R2 OP2 OP3 1 vnement de type E1 2 vnements de type E2

3 rsultats de type R1 2 rsultats de type R2


56

CAAI2

La mthode d'analyse Merise

Structures de base d'un SCT


E1 E1 E1 E2

E1 OP1
ou

E2

E3

OP1

OP1

OP2

E2

E3

E2 OP1

E3

E3

E4

E4 OP2 OP3

OP2

OP3

OP3

Alternative
CAAI2

Itration

Parallle divergente

Parallle convergente
57

La mthode d'analyse Merise

Dmarche pratique pour la modlisation conceptuelle


Elaborer et ordonner un diagramme de flux Faire une premire bauche de SCD Faire une premire bauche de SCT Pour chaque opration du SCT, analyser ses effets sur le SCD Modifier ou complter le SCD Modifier ou complter le SCT Itrer sur les trois tapes prcdentes
La mthode d'analyse Merise 58

CAAI2

1.5 Passage au schma logique des traitements et optimisation

Le schma logique des traitements

Aboutit une architecture de dploiement du systme, obtenue par raffinement des oprations conceptuelles Les tapes de la construction du SLT :
dcomposer les oprations du SCT en sous-oprations appeles procdures ou fonctions affecter et localiser chaque procdure dtailler l'analyse de chaque procdure dfinir l'enchanement des procdures estimer le cot de mise en place de la base essayer de rduire ce cot
60

CAAI2

La mthode d'analyse Merise

Dcomposition des oprations


Exemple : l'opration Ouvrir_dossier peut tre dcompose en les procdures suivantes :

vrifier la dclaration (assur connu, circonstances bien dcrites ...) l'ignorer ou lui affecter un numro de dossier enregistrer les informations ncessaires dans la base dsigner un expert pour le nouveau dossier transmettre le dossier l'expert
La mthode d'analyse Merise 61

CAAI2

Identification des procdures


Pour chaque procdure sont fournis :
un nom un mode de ralisation (manuelle, automatise totalement ou partiellement, interactive, diffre ...) une localisation (o?) une affectation (qui?) une frquence d'activation

CAAI2

La mthode d'analyse Merise

62

Exemple
Nom No Mode Localisation/ affectation Vrifier_dclaration Attribuer_no_dossier Enregistrer_dossier Dsigner_expert Transmettre_dossier P1 P2 P3 P4 P5 manuel conversationnel conversationnel conversationnel manuel Htesse Htesse Htesse Chef de service Secrtariat du chef de service
CAAI2 La mthode d'analyse Merise 63

Analyse dtaille des procdures


Dcrire :

les vnements ou donnes ncessaires au dclenchement de la procdure et les rsultats qu'elle produit

les traitements effectus et les actions ralises sur la base : algorithme + algbre relationnel partir du SLD

les supports des donnes et des rsultats (formulaire papier, crans de dialogue etc.)

CAAI2

La mthode d'analyse Merise

64

Exemple
SLD Assur(no_ass, nom_ass, adr_ass, tel_ass, no_agence) Fonction vrifier_dclaration Donnes d : dclaration Dbut Si no_ass = d.no_police(Assur) = {} Alors assur_inconnu Sinon dclaration_ok Fin
CAAI2 La mthode d'analyse Merise

65

Enchanement des procdures : exemple


Date au plus tt J Date au plus tard J Enchanement des procdures
Dclaration vrifiee P2 Attribuer_no_dossier

J J

J J+2

P3 Enregistrer_dossier Dossier ouvert

P4 Dsigner_Expert

J+3

P5 Transmettre_dossier Dossier expdi


66

CAAI2

La mthode d'analyse Merise

Adaptation des modles logiques

Adapter les schmas logiques (SLD et SLT) dans le but de rduire le cot d'implantation de la base Facteurs prendre en compte :
volume des donnes nombre d'accs la base cot des traitements (suppos ngligeable par rapport au cot des lectures - critures dans la base)
67

CAAI2

La mthode d'analyse Merise

Evaluation des volumes (1/2)

Taille d'une relation reprsentant un type d'entit :


attribut : nombre de caractres ncessaires sa reprsentation n-uplet : somme des tailles de ses types d'attributs relation : produit du nombre d'occurrences du type d'entit par la taille du n-uplet de la relation

Exemple :
Attribut no_ass nom_ass adr_ass te_ass no_agence Type entier chane chane chane entier Taille 10 30 40 10 10

Si 10000 assurs sont attendus sur une priode de deux ans, l'estimation de la taille de la relation est de 10000 (10+30+40+10+10) 1Mo
68

CAAI2

La mthode d'analyse Merise

Evaluation des volumes (2/2)

Taille d'une relation reprsentant un type d'association :


suppose connu le nombre moyen d'occurrences des types d'entit associs

Exemple :
" Un produit est stock en moyenne dans 3 dpts " taille de la relation stock = taille d'un n-uplet de stock 3 nombre de produits

CAAI2

La mthode d'analyse Merise

69

Optimisation des volumes


Seul type d'optimisation possible : compression des types d'attributs perte de lisibilit et cot supplmentaire d au processus de compression et de dcompression

CAAI2

La mthode d'analyse Merise

70

Evaluation du cot des traitements

Dpend du type des oprations de base (recherche, insertion, suppression, modification) Processus d'valuation et d'optimisation :
1. valuer le cot de chaque type d'opration (SLD et SLT frquence de chaque opration, objets concerns et actions lmentaires effectuer sur ces objets) 2. identifier les oprations les plus coteuses 3. essayer d'en rduire le cot

CAAI2

La mthode d'analyse Merise

71

Cot de la recherche d'un n-uplet (1/2)

La recherche d'un n-uplet dans un ensemble de n n-uplets cote :


1 accs si un mcanisme d'accs direct existe en moyenne n/2 accs sinon

CAAI2

La mthode d'analyse Merise

72

Cot de la recherche d'un n-uplet (2/2)

Remarques :
cot d'un accs direct < cot d'un accs squentiel crer des index cot d'une recherche dans un ensemble ordonn < cot d'une recherche dans un ensemble non ordonn ordonner les instances cot d'une lecture < cot de plusieurs lectures fusionner des relations, introduire de la redondance ou grouper physiquement des occurrences (clustering)

CAAI2

La mthode d'analyse Merise

73

Cot de l'ajout d'un n-uplet

Insertion :
criture dans la base mise jour ventuelle des index existant sur la relation concerne

Cot :
1 criture si la relation n'est pas ordonne n/2 lectures en moyenne pour la recherche du point d'insertion si la relation est ordonne
74

CAAI2

La mthode d'analyse Merise

Cot de la modification d'un n-uplet

Modification :
recherche dans la base modification en mmoire centrale rcriture dans la base

Cot :
cot d'une recherche cot d'un ajout (ventuellement) cot du maintien d'ordre (ventuellement) cot de mise jour d'index (ventuellement) cot de mise jour de donnes redondantes
75

CAAI2

La mthode d'analyse Merise

Cot de la suppression d'un n-uplet

Suppression :
recherche du tuple supprimer mise--jour ventuelle d'index autres suppressions, dans le cas de donnes redondantes

Cot :
cot d'une recherche (ventuellement) cot de la maintenance des index (ventuellement) cot de la suppression des donnes redondantes

CAAI2

La mthode d'analyse Merise

76

Optimisation des traitements


Index et critres d'ordre Redondance et dnormalisation de relations Ajout de nouveaux types d'attributs Fusion de relations Fragmentation verticale de relations

CAAI2

La mthode d'analyse Merise

77

Rappel sur les index

Index : structure de donnes qui associe une valeur d'un attribut, appel cl de l'index, la ou les adresses des tuples contenant cette valeur Exemple :
1 1 7 7 12 Espace index 3 5 1 3 7 1 12 7 5 1 Espace donnes
La mthode d'analyse Merise

Possible pour un attribut non cl de la relation

CAAI2

78

Choix des index et des critres d'ordre

Oprations d'interrogation :
attributs de slection et de jointure

Oprations de mise jour :


attributs de slection pas les attributs modifier car cela entranerait un cot supplmentaire pour la maintenance

CAAI2

La mthode d'analyse Merise

79

Redondance et dnormalisation de relations

Exemple :
Expert(no_exp, nom_exp, ...) Sinistre(no_dossier, ..., no_exp)

Expert charg du dossier

Si le nom de l'expert est accd chaque rfrence un sinistre Sinistre(no_dossier, ..., no_exp, nom_exp) Viole la 3NF de Sinistre, mais permet de faire l'conomie de l'opration de jointure pour obtenir le nom

accroissement de l'espace de stockage et de l'activit en mise jour


CAAI2 La mthode d'analyse Merise 80

Ajout de nouveaux types d'attributs

Exemple :
" L'expert dsign pour un dossier de sinistre est celui qui a le moins de dossiers en cours d'instruction " ncessite le parcours de la relation sinistre avec comptage et recherche du no_exp ayant le plus petit nombre de dossiers puis accs la relation Expert pour connatre ses coordonnes Expert(no_exp, nom_exp, ..., nb_dossiers-en_cours)

Attention la cohrence de la base :


incrmenter nb_dossiers-en_cours chaque fois que l'expert est dsign, et dcrmenter quand le dossier est clos
La mthode d'analyse Merise 81

CAAI2

Fusion de relations
cl1 ... cl2 ...
1-1

E1

1-1

E2

RE1(cl1, ...) RE2(cl2, ...) si jointures trs frquentes de RE1 et RE2, fusionner en une seule relation
CAAI2 La mthode d'analyse Merise 82

Fragmentation verticale de relations

Quand une relation comporte un grand nombre d'attributs, dont seul un sous-ensemble est frquemment utilis, on peut la dcomposer en deux relations Exemple :
R(clR, utilis1, utilis2, peu_utilis1, peu_utilis2, peu_utilis3) R1(clR, utilis1, utilis2) R2(clR, peu_utilis1, peu_utilis2, peu_utilis3)

CAAI2

La mthode d'analyse Merise

83

Exemple : cot de l'opration Ouvrir_dossier


Pour 10000 dossiers et 20 experts :
P1 Vrifier _dclaration

Recherche de l'assur 10000/2 accs Accs au dernier numro de dossier affect 1 accs Ecriture du nouveau dossier 1 accs Recherche de l'expert 20 / 2 accs Ajout d'un dossier la relation Sinistre 1 accs Total : 5013 accs 50 sinistres par jour 260 jours ouvrs cot annuel de 65.106 accs
La mthode d'analyse Merise 84

P2 Attribuer_no_dossier

P3 Enregistrer_dossier

P4 Dsigner_Expert

P5 Transmettre_dossier

CAAI2

Cot de l'opration Ouvrir_dossier optimise

Si on dcide de :
conserver en mmoire le dernier numro de dossier pendant toute une journe de travail indexer les assurs sur leur numro de police indexer les experts sur le nombre de dossiers en cours avec ordre

Nouveau cot :
260 jours (1 accs au dernier numro de dossier + 50 sinistres (1 pour la recherche de l'assur + 1 pour l'criture du nouveau dossier + 1 pour la recherche de l'expert + 1 pour l'ajout d'un sinistre)) = 52.103 accs / an
CAAI2 La mthode d'analyse Merise

85

2me partie : SGBD relationnels niveau II

2.1 Scurit et cohrence des donnes

Scurit et cohrence des donnes

Confidentialit : empcher l'accs la BD ou une de ses parties par des personnes non autorises Intgrit : prserver la BD dans un tat cohrent vis--vis des contraintes spcifies Scurit de fonctionnement : grer les accs concurrents

CAAI2

La mthode d'analyse Merise

88

Confidentialit

Tout utilisateur d'un SGBD doit possder un compte et un mot de passe Utilisateur privilgi : l'administrateur
a le droit de crer des comptes d'allouer des privilges d'accs

Le systme garde une trace de toutes les actions effectues lors d'une session (audit)

CAAI2

La mthode d'analyse Merise

89

Deux niveaux de privilges

Privilges de niveau compte :


dfinissent pour un compte, le type de commandes autorises sur des types d'objets (dlivrs par l'administrateur) : CREATE {TABLE|VIEW}, DROP {TABLE| VIEW},

Privilges de niveau objet :


spcifient le type des commandes autorises sur une base, une relation, une vue ou une procdure stocke (dlivrs par le propritaire de l'objet) ; doivent tre compatibles avec les privilges dtenus au niveau compte

Propagation de privilges
Possibilit de transmettre ses privilges sur une relation un autre compte Rle : ensemble nomm de privilges
90

CAAI2

La mthode d'analyse Merise

Privilges Oracle (1/2)

Gestion des privilges de niveau compte


GRANT {privilege_systeme | rle} [,] TO {PUBLIC| nom_utilisateur|rle} [,] [IDENTIFIED by mot_de_passe][WITH ADMIN OPTION] (REVOKE FROM) liste_de_commandes : CREATE TABLE, CREATE ANY TABLE, SELECT TABLE, SELECT ANY TABLE, ...

CAAI2

La mthode d'analyse Merise

91

Privilges Oracle (2/2)

Gestion des privilges de niveau objet


GRANT privilge_objet [,] ON [schma].objet TO {PUBLIC|nom_utilisateur|rle} [,] [WITH ADMIN OPTION]

CAAI2

La mthode d'analyse Merise

92

Exemples
Administrateur : GRANT CREATE TABLE TO ELLE REVOKE CREATE TABLE FROM ELLE Utilisateur u1: GRANT SELECT ON u1.Depot TO u2 REVOKE SELECT ON u1.Depot FROM u2

CAAI2

La mthode d'analyse Merise

93

Rles Oracle

Exemples de rles :
Rle dba: tous les privilges (data base administrateur) Rle connect: ouvrir une session, crer des tables, etc.

Crer et attribuer un rle :

create role un_role grant create session, create table to un_role grant un_role to gilles

Supprimer un rle :
94

revoke un_role from gilles


CAAI2 La mthode d'analyse Merise

Les contraintes d'intgrit (CI)

Contraintes que doivent vrifier les donnes pour tre considres comme des donnes de qualit Une base de donnes est dite cohrente si ses contraintes d'intgrit sont satisfaites

CAAI2

La mthode d'analyse Merise

95

Typologie des contraintes d'intgrit (1/2)

Les contraintes individuelles : concernent un type de donne


(contraintes de domaine ou de valeur obligatoire)

Les contraintes intra-relation : portent sur les valeurs des


attributs (unicit de valeur, cl, cardinalit "le dpt 30 ne stocke que les produits p1 et p2", dpendances entre des valeurs de diffrents attributs "les produits p4 et p5 ne doivent pas tre stocks dans un mme dpt")

CAAI2

La mthode d'analyse Merise

96

Typologie des contraintes d'intgrit (2/2)

Les contraintes inter-relations : dpendances rfrentielles ou


existentielles ("tout numro de produit figurant dans la relation stock doit tre prsent dans la relation produit")

Les contraintes dynamiques : les valeurs des donnes dpendent


de l'tat de la base ou d'un des tats prcdents ("le salaire d'un employ ne peut pas diminuer")

Les contraintes temporelles : Ex "toutes les commandes de la


semaine courante doivent avoir t factures avant le jour ouvrable de la semaine suivante"

CAAI2

La mthode d'analyse Merise

97

Cration dune table


CREATE TABLE Depot (dep# INT NOT NULL, adr VARCHAR(50), capacite INT, PRIMARY KEY dep#, CHECK (capacite>1000)) CREATE TABLE Stock (prod# INT, dep# INT CHECK (dep# BETWEEN 10 AND 50), qte INT DEFAULT 0 CONSTRAINT ctr_qte, PRIMARY KEY (prod#, dep#), FOREIGN KEY (prod#) REFERENCES Produit(prod#), /* tout tuple de Stock correspond a un produit existant dans Produit */ FOREIGN KEY (dep#) REFERENCES Depot(dep#), CHECK (qte>=0))
CAAI2 La mthode d'analyse Merise 98

Les dclencheurs (triggers)

Trigger : procdure associe une relation qui entre en action quand un type d'vnement survient Cr par le propritaire de la relation ou un utilisateur ayant le privilge CREATE TRIGGER. Les triggers permettent de :
maintenir des ci complexes, ce que ne permettent pas les contraintes dclaratives spcifies lors de la cration dune table publier des informations concernant divers vnements, etc
99

CAAI2

La mthode d'analyse Merise

Triggers Oracle (1/4)


Triggers after ou before Triggers de niveau instruction ou de niveau ligne Syntaxe :

CREATE [OR REPLACE] TRIGGER nom_trigger {BEFORE | AFTER | INSTEAD OF} evenement [clause_referencing] [WHEN condition] [FOR EACH ROW] [DECLARE ] BEGIN [EXCEPTION ] END [nom_trigger];
CAAI2 La mthode d'analyse Merise 100

Triggers Oracle (2/4)


Algorithme de contrle de lexcution dune instruction LMD dclenchante :
1. excute les dclencheurs BEFORE de niveau instruction, sil en existe 2. pour chaque ligne affecte par linstruction :
a) b) c)

excute les dclencheurs BEFORE de niveau ligne, sil en existe excution de linstruction excute les dclencheurs AFTER de niveau ligne, sil en existe

3. Excute les dclencheurs AFTER de niveau instruction, sil en existe


101

CAAI2

La mthode d'analyse Merise

Triggers Oracle (3/4)

Pour les dclencheurs de niveau ligne, possibilit daccder aux donnes de la ligne en cours de traitement au moyen de deux identifiants de corrlation :
:OLD : valeurs dorigine de la ligne avant le traitement :NEW : valeurs qui seront insres ou remplaceront celles dorigine au terme de linstruction

:OLD est non dfini pour les instructions INSERT :NEW est nom dfini pour les instruction DELETE
102

CAAI2

La mthode d'analyse Merise

Triggers Oracle (4/4)

Exemple :

CREATE SEQUENCE inc START WITH 8 INCREMENT BY 1; CREATE OR REPLACE TRIGGER categoriesTrig BEFORE INSERT ON categories FOR EACH ROW BEGIN SELECT inc.NEXTVAL INTO :NEW.id_categorie; END categoriesTrig INSERT INTO CATEGORIES (nom_categorie, description) VALUES (new cat, desc cat); SELECT * FROM categories WHERE id_categorie = 9; id_categorie nom_categorie --------------9 ---------------------------------new cat description -----------desc cat

CAAI2

La mthode d'analyse Merise

103

Scurit de fonctionnement et accs concurrents

Une base de donnes est accde par plusieurs utilisateurs ou programmes en mme temps les SGBD comportent un sous-systme de gestion des accs concurrents Techniques qui s'inspirent de celles dveloppes pour les systmes d'exploitation (verrouillage, exclusion mutuelle) Transaction : tout programme qui accde la base ou qui en modifie le contenu (suite de lectures/critures)

CAAI2

La mthode d'analyse Merise

104

Problmes lis aux transactions : non atomicit


Virement d'un montant m d'un compte C1 vers un compte C2 :
Dbut x Lire(C1) xx-m C1 Ecrire(x) y Lire(C2) yy+m C2 Ecrire(y) Fin

Pb : Si le programme s'arrte avant l'criture de y dans C2, la base entre dans un tat incohrent

Transaction = unit atomique d'actions


(si la transaction n'a pas pu excuter toutes ses actions, la base est remise dans l'tat o elle se trouvait avant le dbut de la transaction)
CAAI2 La mthode d'analyse Merise 105

Problmes lis aux transactions : non isolation


T1 inscrit un dbit N sur un solde X et T2 inscrit un crdit M sur X : Ex : X = 100, N = 10, M = 50 Rsultat attendu : 100-10+50 = 140 T1 x Lire(X) xx-N X Ecrire(x) T2 y Lire(X) yy+M X Ecrire(y) Actions X x y T1: x Lire(X) 100 100 T1: x x - N 100 90 T2: y Lire(X) 100 90 100 T2: y y + M 100 90 150 T1: X Ecrire(x) 90 90 150 T2: l'opration de 150 90 150 Pb : X Ecrire(y)dbit est perdue !

Il faudrait que T1 travaille en isolation, c'est--dire sans interfrence


CAAI2

avec d'autres transactions,mthode d'analyse Merise La jusqu' sa terminaison

106

Problmes lis aux transactions : non cohrence


Ex : on impose la CI (A = B) Actions de T1 Actions de T2 t11 : AT1 Lire(A) t21 : AT2 Lire(A) t12 : AT1 AT1 + 1 t22 : AT2 AT2 2 t13 : A Ecrire(AT1) t23 : A Ecrire(AT2) t14 : BT1 Lire(B) t24 : BT2 Lire(B) t15 : BT1 BT1 + 1 t25 : BT2 BT2 2 t16 : B Ecrire(BT1) t26 : B Ecrire(BT2) Pb : chaque transaction satisfait la contrainte, mais leur excution concurrente peut la violer Ex : <t21; t22; t11; t12; t23; t13; t14; t15; t16; t24; t25; t26>
CAAI2 La mthode d'analyse Merise 107

Problmes lis aux transactions : non permanence des modifications

Non rptabilit des lectures


Transaction T2 b Lire(A) Imprimer(b)

Transaction T1 a Lire(A)

a a + 100 A Ecrire(a) b Lire(A) Imprimer(b)

Pb : les impressions de T2 produiront des valeurs diffrentes

CAAI2

La mthode d'analyse Merise

108

Problmes lis aux transactions : non permanence des modifications

Tuples "fantmes"
Transaction T1 S Lire(A), A = {a | a < 4000} Pour chaque s, s S : a = 5000 A Ecrire(S) Transaction T2 V Lire(A), A={a | a < 4000} Imprimer(V)

V Lire(A), A={a | a < 4000} Imprimer(V) Pb : La deuxime impression de V rend un ensemble vide Les modifications des donnes par T1 ne sont pas rpercutes dans la base avant leur utilisation par T2
CAAI2 La mthode d'analyse Merise 109

Plusieurs outils pour rsoudre ces problmes

Le sous-systme d'intgrit : permet de dtecter les incohrences prvues par le programmeur (CI) Le sous-systme de reprise : permet d'assurer l'atomicit des transactions et la cohrence de la base en cas d'accident

Le sous-systme de contrle de la concurrence : permet de contrler les accs concurrents aux donnes par la technique des "verrous"
110

CAAI2

La mthode d'analyse Merise

Atomicit des transactions : politique du "tout ou rien"


BEGIN TRAN MaTransaction Action1 ... Action n Si toutes les actions se sont bien passes Alors COMMIT TRAN Sinon ROLLBACK TRAN Annule les effets de la transaction
111

Valide la transaction

CAAI2

La mthode d'analyse Merise

Utilisation de points de sauvegarde


BEGIN TRAN MaTransaction {Squence 1 d'actions} SAVE TRAN Point1 {Squence 2 d'actions} SAVE TRAN Point2 {Squence 3 d'actions} ROLLBACK TRAN Point2 {Squence 4 d'actions} ROLLBACK TRAN

Annule les effets de Squence 3 Annule les effets de toutes les squences

CAAI2

La mthode d'analyse Merise

112

Exemple
Transaction ComprendreLesTransactions partir des tables suivantes :
Etudiant Et# E1 E2 E3 Nom Bastian Boutantin Chabot Resultat Et# E1 E1 E2 E2 E3 E2 Mat# M1 M2 M3 M2 M3 M4 Moy 10 12 14 14 15 14 Matiere Mat# M1 M2 M3 M4 Libelle BD Rseaux Systme Malg

CAAI2

La mthode d'analyse Merise

113

Transactions imbriques
BEGIN TRAN ... BEGIN TRAN ... BEGIN TRAN ... COMMIT/ROLLBACK TRAN ... COMMIT/ROLLBACK TRAN ... COMMIT/ROLLBACK TRAN Il y a annulation des effets de toutes les transactions si une des transactions filles ou si la transaction mre choue
CAAI2 La mthode d'analyse Merise 114

Le journal des transactions

Pour pouvoir procder la reprise en cas d'accident, le systme garde une trace (journal ou log) des oprations (transactions) effectues sur la base Le journal est conserv sur un support non volatile (disque, bande) et doit tre archiv priodiquement

CAAI2

La mthode d'analyse Merise

115

Le journal des transactions

Pour chaque transaction T, le journal comporte :


<dbut_transaction, identification de T> <criture, identification de T, donne concerne, ancienne valeur, nouvelle valeur> <lecture, identification de T, donne concerne> <COMMIT, identification de T>

Ainsi si un accident se produit, le systme peut


annuler (UNDO) les effets des transactions non valides refaire (REDO) les actions des transactions valides

CAAI2

La mthode d'analyse Merise

116

Reprise en cas d'accident

Reprise (recovery) : reconstruire un tat cohrent de la base partir


du pass, cet tat devant tre le plus proche possible de l'instant o s'est produit l'incident utilisation du journal des transactions

La stratgie de reprise dpend de la gravit de l'incident qui la provoque :


Reprise froid : pour des dgts importants, on recharge une sauvegarde de la base et on r-excute (REDO) les transactions marques valides dans le journal, depuis la date de la sauvegarde Reprise chaud : pour des dgts moins importants, on dfait (UNDO) les actions des transactions non valides
117

CAAI2

La mthode d'analyse Merise

Contrle de la concurrence et plan d'excution


Un plan d'excution P de n transactions est un ordre sur les oprations des transactions tel que pour toute transaction Tk participant P, si une opration Oi prcde une opration Oj dans Tk, alors Oi prcde aussi Oj dans P L'objectif du contrle de la concurrence est de n'autoriser que les plans d'excution corrects Exemple : problme du transparent 62
<t11; t12; t13; t21; t22; t23; t14; t15; t16; t24; t25; t26> est un plan d'excution correct <t21; t22; t11; t12; t23; t13; t14; t15; t16; t24; t25; t26> est un plan d'excution incorrect
CAAI2 La mthode d'analyse Merise 118

Plan d'excution srialisable

Un plan d'excution P des transactions T1, ..., Tn est une succession s'il existe une permutation de (1, ..., n) telle que P = <T (1) ; ...; T (n)> Une excution des transactions T1, ..., Tn est srialisable ssi elle donne, pour chaque Ti, le mme rsultat qu'une succession

Le problme revient ce que ne soient autorises que des excutions srialisables

CAAI2

La mthode d'analyse Merise

119

Contrle de la concurrence : la technique du verrouillage


Granule = unit d'accs (BD, relation, tuple, attribut ...)

Verrou binaire : un granule est accessible ou inaccessible Verrou partag et verrou exclusif : en lecture un verrouillage en mode
partag (share) permet des accs multiples un granule. Par contre, en criture, il est ncessaire de verrouiller le granule en mode exclusif (exclusive)

Verrou d'intention ou verrou de mise jour (update) : verrou de lecture


avec intention d'criture

Compatibilit des verrous :


verrous apposs sur un granule
Share Exclusive Update

verrous demands sur le mme granule


Share oui non oui Exclusive non non non Update non non non
120

CAAI2

La mthode d'analyse Merise

Les quatre niveaux d'isolation SQL-92 (1/2)

Niveau 0 (READ UNCOMMITTED)


Une transaction T peut lire des objets modifis par une autre transaction, pas de verrou en mode lecture risque de lectures impropres, lectures non reproductibles et tuples fantmes

Niveau 1 (READ COMMITED)


= niveau 0, sauf : T lit uniquement les mises--jour des transaction valides (verrou exclusif en criture) plus de risque de lectures impropres

CAAI2

La mthode d'analyse Merise

121

Les quatre niveaux d'isolation SQL-92 (2/2)

Niveau 2 (REPEATABLE READ)


= niveau 1, sauf : aucun objet lu par T ne peut tre modifi par une autre transaction (verrou partag en lecture) plus de risque de lectures non reproductibles

Niveau 3 (SERIALIZABLE)
= niveau 2, sauf : possibilit de poser des verrous sur un ensemble d'objets plus de risque de tuples fantmes

CAAI2

La mthode d'analyse Merise

122

Application au SGBD Sybase


Sybase supporte les niveaux d'isolation 0, 1, 2 et 3 Pour une transaction ou une session, un utilisateur peut choisir un des niveaux :
set transaction isolation level {0 | 1 | 2 | 3}

Un niveau d'isolation peut aussi tre fix pour l'excution d'une seule requte :
select * from T at isolation {read uncommited | read commited | repeatable read | serializable}

CAAI2

La mthode d'analyse Merise

123

Application au SGBD Oracle (1/2)

Oracle supporte les niveaux 1, 2, 3 mais les read uncommited (niveau 0) sont impossibles

Quand un utilisateur modifie des valeurs, tous les autres utilisateurs ont accs aux donnes non modifies (utilisation systmatique des segments UNDO) A B Segment Segment UNDO Id Prnom Id Prnom Id Prnom UNDO

1 2

Pierre Paul

1 2

Pierre Paul

Jacques

1 2

Pierre Paul

Jacques

1) Toutes les transations lisent les donnes de la table


CAAI2

2) La transaction A modifie un enregistrement. Lancienne valeur est place dans un segment dannulation UNDO
La mthode d'analyse Merise

3) La transaction A lit la donne modifie, la transaction B lit lancienne valeur place dans le segment UNDO
124

Application au SGBD Oracle (2/2)

Pas de set transaction isolation levelsous oracle! Les niveaux disolation sont imposs par les requtes. Niveau 1: par dfaut, les donnes modifies ne sont pas accessibles avant commit (cf. segment undo) Niveau 2 : ex : select * from matable where id=5 for update ex2 : select * from matable m1, matable2 m2 where m1.id=m2.id for update

Niveau 3 : ex : select * from matable for update


125

CAAI2

La mthode d'analyse Merise

Les verrous : problmes

Inter-blocage

T1 dtient le granule G1 et attend que T2 libre G2 pendant que T2 attend la libration de G1

Famine

Une transaction est perptuellement en attente alors que d'autres continuent s'excuter

CAAI2

La mthode d'analyse Merise

126

Exemple Sybase
begin tran set isolation level 0 <111> <111,12> select * from T select * from T set isolation level 1 insert into T values (34) commit tran begin tran select * from V for update insert into T values (78) select * from T begin tran set isolation level 0 insert into T values (12) commit tran begin tran select * from T select * from T <111,12>

Attente commit

Verrou sur V Attente sur T


CAAI2

select * from T <111,12,34> ... select * from T at Verrou isolation serializable sur T insert into V values (56) Attente

sur V

select * from V

temps Interblocage ! La mthode d'analyse Merise

127

Solutions pour l'inter-blocage

La prvention : imposer toute transaction de verrouiller en avance


tous les lments dont elle a besoin (n'apposer aucun verrou si un de ces lments n'est pas libre)

La dtection : tester priodiquement si une situation d'inter-blocage


s'est produite (solution implmente dans Sybase et Oracle) :
dtection de cycles dans un graphe d'attente, dont les nuds reprsentent les transactions et les arcs la relation est_en_attente_de si une telle situation se produit, une des transactions implique est avorte

T1 T2
CAAI2

T3

- T1 dtient R1 et attend R2 - T2 dtient R2 et attend R3 - T3 dtient R3 et attend R1


128

La mthode d'analyse Merise

Solutions pour la famine


Cette situation se produit si la priorit est toujours donne aux mmes transactions
avoir un mcanisme de type "premier arriv, premier servi" (First In First Out) adopter une stratgie avec priorit dynamique Sybase : aprs trois tentatives infructueuses de satisfaction d'une demande d'apposition d'un verrou exclusif, toute nouvelle demande de verrou partag est refuse

CAAI2

La mthode d'analyse Merise

129

2.2 JDBC

JDBC

Objectifs :
Fournir un accs homogne aux SGBDR Abstraction des SGBDR cibles Requtes SQL Simple mettre en uvre JDBC (Java DataBase Connectivity)

CAAI2

La mthode d'analyse Merise

131

Architectures 2-tier et 3-tier


Architecture 2-tier :
J D B C

Application Java

TCP / Protocole propritaire

SGBDR

Architecture 3-tier :
Serveur middleware Java
J D B C

Application Java

TCP / RMI, CORBA

SGBDR

CAAI2

La mthode d'analyse Merise

132

Fonctionnement

Utilisation du package java.sql JDBC interagit avec le SGBDR par un pilote (driver) Il existe des pilotes pour Oracle, Sybase, Informix, DB2,

Selon JavaSoft, 4 types de pilotes


La mthode d'analyse Merise 133

CAAI2

Les pilotes JDBC (1/4)

Type 1 : JDBC-ODBC bridge

Traduisent les appels JDBC en appels ODBC et les transmettent un driver ODBC ODBC: Open DataBase Connection (accs aux bases de donnes dans le monde Microsoft)

CAAI2

La mthode d'analyse Merise

134

Les pilotes JDBC (2/4)

Type 2 : native-API partly-Java driver

Convertissent les appels JDBC en appels spcifiques la base de donnes Ncessitent le chargement de code natif spcifique au SGBD sur la machine o s'excute l'application cliente

CAAI2

La mthode d'analyse Merise

135

Les pilotes JDBC (3/4)

Type 3 : net-protocol all-Java driver

Convertissent les appels JDBC en appels un serveur intermdiaire (middle-tier), en utilisant un protocole indpendant du SGBD Le serveur connecte les clients Java diffrentes bases de donnes et transforme les appels qu'il reoit pour les rendre conformes au protocole de communication du SGBD considr
CAAI2 La mthode d'analyse Merise 136

Les pilotes JDBC (4/4)

Type 4 : native-protocol all-Java driver

Traduisent directement les appels JDBC en appels au serveur de la base de donnes, en respectant le protocole de communication du SGBD Gnralement dvelopps par les vendeurs de SGBD Un pilote de ce type est utilis dans les exemples
CAAI2 La mthode d'analyse Merise 137

Solutions proposes par Oracle (1/3)

Pilote Javasoft utilisant ODBC : solution lourde !


Serveur hbergeant la base Oracle 9i

Interface de programmation JDBC Pilote Javasoft utilisant ODBC Pilote ODBC pour Oracle Oracle Net Rseau TCP/IP
CAAI2 La mthode d'analyse Merise

Oracle Net Rseau TCP/IP


138

Solutions proposes par Oracle (2/3)

Pilotes OCI sappuyant sur Oracle Net : architecture client / serveur (performance)
Interface de programmation JDBC

Serveur hbergeant la base Oracle 9i

Oracle Net Rseau TCP/IP


CAAI2 La mthode d'analyse Merise

Oracle Net Rseau TCP/IP


139

Solutions proposes par Oracle (3/3)

Pilote tlchargeable Thin JDBC : vite linstallation dun logiciel Oracle sur le poste client
Navigateur Internet ou ordinateur rseau
Applet Java Serveur Web o tlcharger lapplet Java

Serveur hbergeant la base Oracle 9i

T HT

JDBC thin Oracle Net Rseau TCP/IP


CAAI2 La mthode d'analyse Merise

Rseau TCP/IP
140

Accs aux donnes


Charger le driver Connexion la base Cration d'un statement Excution de la requte Lecture des rsultats
141

CAAI2

La mthode d'analyse Merise

Chargement du driver

La classe DriverManager du package java.sql gre l'ensemble des pilotes disponibles et se charge d'en slectionner un qui convienne lors de la connexion une BD Utiliser la mthode forName de la classe Class :
Class.forName("com.sybase.jdbc.SybDriver");

Lors du chargement d'une classe, les blocs statiques d'initialisation de la classe sont excuts c'est par ce moyen que le pilote s'enregistre auprs de la classe DriverManager en appelant la mthode statique DriverManager.registerDriver()
La mthode d'analyse Merise 142

CAAI2

Connexion la base

Accs via un URL qui specifie :


l'utilisation de JDBC le driver ou le type du SGBDR l'identification de la base

Exemple :
String url = "jdbc:sybase:Tds:zeus.scinfo.uhpnancy.fr:5025";

Ouverture de la connexion :
Connection con = DriverManager.getConnecion(url, user, password);

CAAI2

La mthode d'analyse Merise

143

Cration d'un statement

3 types de statements :
statement : requtes simples prepared statement : requtes prcompiles callable statement : procdures stockes

Cration d'un statement :


Statement stmt = con.createStatement();

CAAI2

La mthode d'analyse Merise

144

Excution d'une requte (1/2)

3 types d'executions :
executeQuery : pour les requtes qui retournent un ResultSet executeUpdate : pour les requtes INSERT, UPDATE, DELETE, CREATE TABLE et DROP TABLE execute : pour quelques cas rares (procdures stockes)

CAAI2

La mthode d'analyse Merise

145

Excution d'une requte (2/2)

Excution de la requte :
String myQuery = "SELECT prenom, nom, email " + "FROM employe " + "WHERE (nom = 'Dupont') AND (email IS NOT NULL) " + "ORDER BY nom" ResultSet rs = stmt.executeQuery(myQuery);
146

CAAI2

La mthode d'analyse Merise

Lecture des rsultats (1/2)


executeQuery renvoie un ResultSet (RS) Le RS se parcourt itrativement ligne par ligne Les colonnes sont rfrences par leur numro ou par leur nom

L'accs aux valeurs des colonnes se fait par des mthodes getXXX() o XXX reprsente le type de l'objet

CAAI2

La mthode d'analyse Merise

147

Lecture des resultats (2/2)


java.sql.Statement stmt = con.createStatement; ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1"); while (rs.next()) { // affiche les valeurs pour la ligne courante int i = rs.getInt("a"); String s = rs.getString("b"); byte b[] = rs.getBytes("c"); System.out.println("ROW = "+ i + " " + s + " " + b[0]); }
CAAI2 La mthode d'analyse Merise 148

Accs aux mta-donnes

La mthode getMetaData() permet d'obtenir les mtadonnes d'un ResultSet Elle renvoie des ResultSetMetaData On peut connatre :
le nombre de colonnes : getColumnCount() le nom d'une colonne : getColumnName(int col) le type d'une colonne : getColumnType(int col)

CAAI2

La mthode d'analyse Merise

149

Exemple de cration de table (1/2)


import java.lang.*; import java.sql.*; public class CreateTable { public static void main (String args[]) { String url = "jdbc:sybase:Tds:zeus.scinfo.uhpnancy.fr:5025"; Connection con; Statement stmt; String query = "create table client(nom varchar(20), prenom varchar(20), age int)"; String login="gsimon"; String password="bddes2";
CAAI2 La mthode d'analyse Merise 150

Exemple de cration de table (2/2)


try { Class.forName ("com.sybase.jdbc.SybDriver");} catch(ClassNotFoundException e) { System.err.print("ClassNotFoundException"); System.err.println(e.getMessage());} try { con = DriverManager.getConnection (url, login, password); stmt = con.createStatement(); stmt.executeUpdate(query);} catch (SQLException ex) { System.err.println (" SQLException caught: " + CAAI2ex.getMessage());}}} La mthode d'analyse Merise
151

Exemple d'insertion de donnes


() stmt = con.createStatement (); stmt.executeUpdate("insert into client values('Titi', 'lala', 20)"); stmt.executeUpdate("insert into client values('Dupond', 'Paul', 30)"); stmt.executeUpdate("insert into client values('Momo', 'toto', 10)"); ()
CAAI2 La mthode d'analyse Merise 152

Exemple de requte prcompile


() PreparedStatement stmt = con.prepareStatement("select * from client where nom = ? and prenom = ?"); stmt.setString(1,"Titi"); stmt.setString(2,"Lala"); ResultSet rs= stmt.executeQuery(); while (rs.next()) { String n = rs.getString(1); // nom String p = rs.getString(2); // prenom int a = rs.getInt(3); // age System.out.println("nom: "+n+" prenom: "+p+"age: "+a);} ()
CAAI2 La mthode d'analyse Merise 153

Exemple d'accs aux mtadonnes


() ResultSet rs = stmt.executeQuery("select * from authors"); ResultSetMetaData rsmd = rs.getMetaData(); int nbColonnes = rsmd.getColumnCount(); for (int i = 1; i <= nbColonnes; i++) { String typeColonne = rsmd.getColumnTypeName(i); String nomColonne = rsmd.getColumnName(i); System.out.println("la colonne "+i+" de nom "+nomColonne+ " est du type "+typeColonne); }
CAAI2 154

()

La mthode d'analyse Merise

2.3 PHP

PHP

PHP est un langage interprt, excut du ct serveur Principaux atouts :


gratuit et open source simplicit dcriture des scripts possibilit dinclure le script PHP au sein dune page html simplicit dinterfaage avec des bases de donnes (MySql, Oracle, Sybase, dBase, Informix etc.) Intgration au sein de nombreux serveurs web (Apache, Microsoft IIS ...)

CAAI2

La mthode d'analyse Merise

156

Interprtation du code par le serveur

Instructions incluses dans un code HTML laide de balises spciales (<?php et ?>) Le fichier HTML+PHP doit avoir lextension .php Principe :
le serveur lit le fichier PHP des quil rencontre une balise PHP, il passe en mode PHP chaque instruction est transmise linterprteur qui l'excute le serveur transmet le rsultat au client (dans le fichier HTML)

Le script PHP nest jamais visible par lutilisateur !


La mthode d'analyse Merise 157

CAAI2

Un exemple simple
<html> <head><title>Exemple</title>/</head> <body> <?php echo "Hello world"; ?> </body> </html>
CAAI2 La mthode d'analyse Merise 158

; la fin de chaque instruction PHP

Variables et tableaux

Les variables commencent toujours par $ Elles ne sont pas dclares ! Les tableaux :

$tab[0][0] = 12; $tab[0][1] = "php" $tab[1][0] = 1234.56 $tab[1][0] = "au revoir"

CAAI2

La mthode d'analyse Merise

159

Oprateurs

Oprateurs de calcul : + - * / = Oprateurs dassignation : += -= *= /= %= |= ^= &= .=

Oprateurs dincrmentation : ++ -Oprateurs de comparaison : == <= > >= !=

Oprateurs logiques : || (OR) && (AND) XOR !


La mthode d'analyse Merise 160

CAAI2

Structures conditionnelles (1/4)

Linstruction if ... elseif ... else

if (condition realisee) { liste dinstructions } elseif (autre condition realisee) { autre serie dinstructions } ... else (derniere condition realisee) { derniere serie dinstructions }

CAAI2

La mthode d'analyse Merise

161

Structures conditionnelles (2/4)

Linstruction switch

switch (variable) { case valeur1: liste dinstructions break; case valeur2: liste dinstructions break; ... default: liste dinstructions break; }
CAAI2 La mthode d'analyse Merise 162

Structures conditionnelles (3/4)

La boucle for

for (compteur; condition; modification du compteur) { liste dinstructions }

Ex :
for ($i=1; $i<6; $i++){ echo "$i<br>"; }

CAAI2

La mthode d'analyse Merise

163

Structures conditionnelles (4/4)

Linstruction while

while (condition realisee) { liste dinstructions }

CAAI2

La mthode d'analyse Merise

164

Les fonctions (1/1)

Declaration :

function nom_de_la_fonction(type1 argument1, type2 argument2, ...) { liste dinstructions }

Renvoi dune valeur : Appel :

return valeur;

[$retour = ] nom_de_la_fonction(argument1, argument2, ...)


CAAI2 La mthode d'analyse Merise 165

Les fonctions (2/2)

Passage de paramtres par rfrence : faire prcder la variable du caractre & Exemple :

<? function dire_texte($qui, &$texte) { $texte = "Bienvenue $qui"; } $chaine = "Bonjour "; dire_texte("cher phpeur", $chaine); echo $chaine; // affiche "Bienvenue cher phpeur" ?>
CAAI2 La mthode d'analyse Merise 166

Interfaage avec un SGBD (ex : mysql)

Les principales tapes :


se connecter au serveur de la base de donnes : mysql_connect choisir la base : mysql_select_db exprimer une requte : mysql_query rcuprer les rsultats (pour une lecture) : mysql_fetch_row se dconnecter : mysql_close

CAAI2

La mthode d'analyse Merise

167

Un exemple complet (1/2)


<html> <head> <title>Liens</title> <head> <body> <table border="1" cellpadding="0" cellspacing="0"> <tr><th>Nom du site</th> <th>URL</th></tr> <?php // Creation et envoi de la requete // Dclaration des paramtres de connexion $host = la_machine; // Gnralement la machine est localhost // c'est-a-dire la machine sur laquelle le script est hberg CAAI2 La mthode d'analyse Merise $query = "SELECT nom,url FROM sites ORDER BY nom"; $result = mysql_query($query); $user = votre_login; $bdd = Nom_de_la_base_de_donnees; $password = Mot_de_passe; // Connexion au serveur mysql_connect($host, $user,$password) or die("erreur de connexion au serveur"); mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");

168

Un exemple complet (2/2)


// Recuperation des resultats while($row = mysql_fetch_row($result)){ $Nom = $row[0]; $Url = $row[1]; echo "<tr>\n <td><a href=\"$Url\">$Nom</a></td>\n <td>$Url</td>\n </tr>\n"; } // Deconnexion de la base de donnees mysql_close(); ?> </tr> </table> </body> </html>

CAAI2

La mthode d'analyse Merise

169

Exemple de rception des variables dun formulaire


Cration et envoi du formulaire
<html> <head> <title>Formulaire</title> </head> <body> <p>Bonjour, quel est ton nom ?</p> <form method="post" action="exemple.php"> <input type="text" name="mavariable" value="Toto"> <input type="submit" value="OK"> </form> </body> </html> CAAI2 La mthode d'analyse Merise 170

Reception du contenu (fichier exemple.php)


<html> <head> <title>Rception formulaire</title> </head> <body> <?php echo "Bonjour ".$mavariable; ?> </body> </html>