Méthode D'analyse Merise SGBDR
Méthode D'analyse Merise SGBDR
Méthode D'analyse Merise SGBDR
Gilles SIMON
Matre de confrences, UHP Nancy 1 Loria, bureau B162 E-mail : [email protected] 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.
CAAI2
Principales rfrences
Bases de donnes et systmes d'information, Nacer Boudjlida, Dunod, 1999. Oracle8i sous Linux, Gilles Briard, Eyrolles, 2003
CAAI2
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
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
indpendant de la technologie
Merise Implantation
7
CAAI2
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
Exemple
attribut
prnom
Loc
ge
19
tuple
15
12 1 4 8
CAAI2
20 23 22 22
10
Risques
Relation Produit
prod_id p1 p1 p3
libell K7 K7 Vis
pu 23.5 23.5 10
dep_id 1 2 4
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
12
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
13
(F6) Dcomposition : X R Y Z Y X R Z
CAAI2 La mthode d'analyse Merise 14
Une dpendance
triviale si Y X
X R Y
est :
Exemples :
prod_id, libelle libelle ?? prod_id, libelle pu ?? prod_id, dep_id qte ??
CAAI2
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
16
Exemple :
Personne(id, nom, les_diplmes) o les_diplmes est l'ensemble des
CAAI2
17
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
Exemple
type capacit (f1)
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
G2 capacit
CAAI2
constructeur
La mthode d'analyse Merise
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
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
Reprsentation graphique
Type dentit :
Nom de lentit
...
Type dassociation :
Nom entit2
Nom association
Nom entit1
...
Nom entit3
Exemple
adresse
CAAI2
26
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
One-to-one
One-to-many
Many-to-many
28
CAAI2
Exemples
no_scu nom date_dition no_feuille
Personne
prnom id nom
0-1
Reoit
1-1
FeuilleImpts
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
29
Associations rflexives
Possibilit de spcifier le rle
id pnom pprnom
Personne
femme
0-1
mari Conjoint
0-1
CAAI2
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
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
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
34
Exemple :
id nom
Personne
prnom
CAAI2
35
R R
y-1
B B
x-1
y-n
x-n
y-n
CAAI2
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
Exemple 2
id nom immat marque
Personne
prnom
0-n
Possession
date_achat
0-1
couleur
Voiture
CAAI2
38
Exemple 3
adresse ge no_tu
Etudiant
nom prnom
0-n
Inscrit
no_groupe
0-n
Cours
intitul
Exemple 4
id pnom pprnom
CAAI2
40
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
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
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
44
Frontire de l'tude
Paiement
ASSUR
Vhicule
ASSURANCE
GARAGE
EXPERT
CAAI2
45
Le graphe de prcdence
CAAI2
46
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
47
...
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
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
50
CAAI2
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
52
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
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
54
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
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
CAAI2
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
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
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
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
CAAI2
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
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
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
J J
J J+2
P4 Dsigner_Expert
J+3
CAAI2
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
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
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
69
CAAI2
70
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
71
CAAI2
72
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
73
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
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
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
76
Index et critres d'ordre Redondance et dnormalisation de relations Ajout de nouveaux types d'attributs Fusion de relations Fragmentation verticale de relations
CAAI2
77
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
CAAI2
78
Oprations d'interrogation :
attributs de slection et de jointure
CAAI2
79
Exemple :
Expert(no_exp, nom_exp, ...) Sinistre(no_dossier, ..., no_exp)
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
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)
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
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
83
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
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
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
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
89
Propagation de privilges
Possibilit de transmettre ses privilges sur une relation un autre compte Rle : ensemble nomm de privilges
90
CAAI2
CAAI2
91
CAAI2
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
93
Rles Oracle
Exemples de rles :
Rle dba: tous les privilges (data base administrateur) Rle connect: ouvrir une session, crer des tables, etc.
create role un_role grant create session, create table to un_role grant un_role to gilles
Supprimer un rle :
94
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
95
CAAI2
96
CAAI2
97
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
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
excute les dclencheurs BEFORE de niveau ligne, sil en existe excution de linstruction excute les dclencheurs AFTER de niveau ligne, sil en existe
CAAI2
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
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
103
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
104
Pb : Si le programme s'arrte avant l'criture de y dans C2, la base entre dans un tat incohrent
106
Transaction T1 a Lire(A)
CAAI2
108
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
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
Valide la transaction
CAAI2
Annule les effets de Squence 3 Annule les effets de toutes les squences
CAAI2
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
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
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
115
CAAI2
116
CAAI2
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
CAAI2
119
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)
CAAI2
CAAI2
121
Niveau 3 (SERIALIZABLE)
= niveau 2, sauf : possibilit de poser des verrous sur un ensemble d'objets plus de risque de tuples fantmes
CAAI2
122
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
123
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
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
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
CAAI2
Inter-blocage
Famine
Une transaction est perptuellement en attente alors que d'autres continuent s'excuter
CAAI2
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
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
127
T1 T2
CAAI2
T3
CAAI2
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
131
Application Java
SGBDR
Architecture 3-tier :
Serveur middleware Java
J D B C
Application Java
SGBDR
CAAI2
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,
CAAI2
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
134
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
135
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
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
Interface de programmation JDBC Pilote Javasoft utilisant ODBC Pilote ODBC pour Oracle Oracle Net Rseau TCP/IP
CAAI2 La mthode d'analyse Merise
Pilotes OCI sappuyant sur Oracle Net : architecture client / serveur (performance)
Interface de programmation JDBC
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
T HT
Rseau TCP/IP
140
Charger le driver Connexion la base Cration d'un statement Excution de la requte Lecture des rsultats
141
CAAI2
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
Exemple :
String url = "jdbc:sybase:Tds:zeus.scinfo.uhpnancy.fr:5025";
Ouverture de la connexion :
Connection con = DriverManager.getConnecion(url, user, password);
CAAI2
143
3 types de statements :
statement : requtes simples prepared statement : requtes prcompiles callable statement : procdures stockes
CAAI2
144
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
145
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
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
147
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
149
()
2.3 PHP
PHP
CAAI2
156
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)
CAAI2
Un exemple simple
<html> <head><title>Exemple</title>/</head> <body> <?php echo "Hello world"; ?> </body> </html>
CAAI2 La mthode d'analyse Merise 158
Variables et tableaux
Les variables commencent toujours par $ Elles ne sont pas dclares ! Les tableaux :
CAAI2
159
Oprateurs
CAAI2
if (condition realisee) { liste dinstructions } elseif (autre condition realisee) { autre serie dinstructions } ... else (derniere condition realisee) { derniere serie dinstructions }
CAAI2
161
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
La boucle for
Ex :
for ($i=1; $i<6; $i++){ echo "$i<br>"; }
CAAI2
163
Linstruction while
CAAI2
164
Declaration :
return valeur;
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
CAAI2
167
168
CAAI2
169