Académique Documents
Professionnel Documents
Culture Documents
D O N N E S R E PA RT I E S
G ESTION
Elves :
David Brchet
Frdric Jacot
Charles Secrtan
D UNE BANQUE
DONNES DU PROJET
Quelle est lincidence des vues sur les schmas de fragmentation et dallocation?
Il est noter que lapplication doit permettre la formulation des 4 commandes
SQL suivantes: SELECT, INSERT, UPDATE et DELETE (bien sr de faon
transparente lutilisateur) et doit mettre en uvre le protocole de validation de
transactions deux phases.
B A S E D E D O N N E S R E PA R T I E S
G ESTION D UNE BANQUE .
INTRODUCTION
No_emp
Nom_em
Prnom
Employ
No_op
Type_op
Opration
travaille
Date_op
Type_compte
No_compte
No_agence
Compte
Est dans
Somme
Agence
Nom_agence
Addr_agence
possde
No_client
Nom
Client
Age
Adresse
Prnom
LE SCHMA RELATIONNEL
Nom
Bouana
Legros
Prenom
Doudou
Herv
Age
23
55
Adresse
Ch. Soleil 13 1240 Bled
R. centrale 33 1512 Ville
Relation : Compte
Attributs : NoClient :Dnum sans nul
NoCompte :Dnum sans nul
TypeCompte : Dnum sans nul
Somme : Dnum sans nul
NoAgence : Dnum sans nul
Identifiant :
(NoCompte + NoAgence)
NoCompte
1234
5678
TypeCompte
courant
tudiant
Somme
12000
45000
NoAgence
1
2
Relation : Agence
Attributs :NoAgence : Dnum sans nul
Nom : Dch20 sans nul
Adresse : Dch30 sans nul
Identifiant :
(NoAgence)
Nom
Lausanne
Neuchatel
Adresse
Av. de la gare 22 1230 Bled
Av. de Genve 33 1530 Ville
Relation : Employ
Attributs :NoEmp : Dnum sans nul
Nom_Emp : Dch20 sans nul
Prenom_Emp : Dch20 sans nul
NoAgence : Dnum sans nul
Identifiant :
(NoEmp + NoAgence)
Nom_Emp
Ducon
Lepetit
Prenom_Emp
Jules
Andr
NoAgence
1
2
Relation : Opration
Attributs :NoOp : Dnum sans nul
NoEmp : Dnum sans nul
NoCompte : Dnum sans nul
Montant : Dnum sans nul
TypeOp: Dch20 sans nul
dDate : Dch20 sans nul
Identifiant :
(NoOp)
OPERATION
NoCompte
NoOp
1234
7890
5678
7891
Montant
1000
7000
TypeOp
retrait
versement
dDate
23/01/99 1034
25/01/99 1430
NoEmp
567
567
REQUETES FREQUENTES
Nous avons essay de sparer les diffrentes requtes utilises dans le cadre du
fonctionnement dune banque et nous navons considrer que les plus frquentes et
les plus critiques pour la base de donne. Voici donc les requtes :
VERSEMENT ET RETRAIT
NoEmp
NoCompte
Montant
TypeOp
Somme
NoAgence
dDate
Pour un retrait cest la mme requte avec une opration diffrente retrait au
lieu de versement.
INTERROGATION
Lorsque le client dsire consulter les dernires oprations effectues sur son
compte, lemploy a besoin du numro de compte et de lagence dans lequel le
compte se trouve. Lattribut somme indique la solde du compte au moment de
la requte. Avec lattribut Montant , il peut dterminer la solde du compte au
moment de lopration. Les autres attributs de la table Opration nintressent
que le gestionnaire.
Table I1
NoCompte
Montant
TypeOp
dDate
Table V R-I2
NoCompte
Somme
NoAgence
Operation
WHERE NoCompte = no_cpte
FROM
No_emp
No_compte
Montant Type_op
Date_op
Somme
Type_compte
No_agence
Nom_Emp
Prenom_Emp
NoAgence
Ajouter un employ :
TableEmp,
VALUES (:noemp, :Nom_Emp, :Prenom_Emp, :NoAgeance);
INSERT INTO
SCHEMA DE FRAGMENTATION
Nom
Jacot
Secretan
Brechet
Prenom
Frederic
Charles
David
Somme
1000
2000
3000
NoAgence
0
1
1
Age
23
56
24
Adresse
Rue a 1
Rue b 2
Rue c 3
Table Compte
NoCompte
10
11
12
TypeCompte
Etudiant
Epargne
Etudiant
NoClient
1
2
3
Table Opration
NoOp
NoEmp
20
21
22
31
30
32
NoCompte
10
11
12
Montant
TypeOp
dDate
100
200
300
Versement
Virement
Retrait
12/05/99-
13/06/99-
18/11/99-
10
Table Agence
NoAgence
Nom
Adresse
Genve
Rue du cucu 3
Lausanne
Neuchtel
Rue de la gare 3
Table Employ
NoEmp
30
31
32
Nom_Emp
Dupond
Smith
Ducommun
Prenom_Emp
Jean
John
Georges
NoAgence
0
1
1
Localisation
Donnes relatives aux client / compte agence A
Donnes relatives aux client / compte agence B
Versement, retrait, interrogation et gestionnaire / compte agence A
Versement, retrait, interrogation et gestionnaire / compte agence B
Gestionnaire / compte agence A
Gestionnaire / compte agence B
Versement, retrait et gestionnaire / opration agence A
Versement, retrait et gestionnaire / opration agence B
Versement, retrait, interrogation et gestionnaire / opration agence A
Versement, retrait, interrogation et gestionnaire / opration agence B
Donnes relatives lemploy / agence A
Donnes relatives lemploy / agence B
Donnes gnrales
original
A
B
A
B
Centrale
Centrale
A
B
A
B
A
B
Centrale
copie
B
A
B
A
A
B
Centrale
Centrale
Centrale
Centrale
Centrale
Centrale
SCHMA DALLOCATION
Voici la localisations sur les diffrents sites des diffrents fragments et de leur
copie tels quils ont t implment dans lapplication.
CENTRALE :
Frag_Centr_Compte
NoCompte TypeCompte
Ageances
NoAgeance Nom
Adresse
FragA_TableEmp_CP
Nom_Emp
NoEmp
Prenom_Emp NoAgeance
FragB_TableEmp_CP
Nom_Emp
NoEmp
Prenom_Emp NoAgeance
FragA_TableOp_CP
NoEmp
NoOp
NoCompte
Montant
TypeOp
Date
FragB_TableOp_CP
NoEmp
NoOp
NoCompte
Montant
TypeOp
Date
AGENCE A :
FragA_Compte
NoCompte NoClient
NoAgeance Somme
FragA_Client
Nom char
NoClient
Prenom
Adresse
Age
FragA_TableOp
NoEmp
NoOp
NoCompte
Montant
TypeOp
FragB_Client_CP
Nom
NoClient
Prenom
Adresse
Age
12
Date
FragB_Compte_CP
NoCompte NoClient
NoAgeance Somme
FragC_Compte_CP
NoCompte TypeCompte
FragA_TableEmp
Nom_Emp
NoEmp
Prenom_Emp NoAgeance
AGENCE B :
FragB_Compte
NoCompte NoClient
NoAgeance Somme
FragB_Client
NoClient
Nom char
Prenom
Adresse
Age
FragB_TableOp
NoEmp
NoOp
NoCompte
Montant
TypeOp
FragA_Client_CP
Nom
NoClient
Prenom
Adresse
Age
FragA_Compte_CP
NoCompte NoClient
NoAgeance Somme
FragC_Compte_CP
NoCompte TypeCompte
FragB_TableEmp
Nom_Emp
NoEmp
Prenom_Emp NoAgeance
13
Date
Nous avions trois sites pour faire notre banque. Nous avons donc fait deux
agences et une centrale. Cest sur ces sites que sont situs les diffrents fragments
de la base de donnes. Tous les fragments sont dupliqu et mis sur un autre site
afin de pouvoir travailler mme si un site est en panne. Chaque copie est utilisable
sur le site o elle se trouve. Cela permet de gagner du temps lorsque des requtes
utilisent les fragments originaux qui sont localiss sur dautres sites. Pour toute
requte qui fait une mise jour sur un autre site, il faut dabord vrifier que les
lments de la requtes sur le sites soient correctes avant de les envoyer sur le site
voulu, cela sappelle le commit deux phase .
Nous avons fait trois applications diffrentes pour faire cette base de donne
rpartie, linitialisation, la centrale et lagence. les applications sont implmentes en
C avec des commandes SQL dans le code. Nous utilisons Oracle comme interface
entre la base de donne et le langage C.
La premire application sert initialiser la base de donne et la peupler afin
davoir un minimum de donnes pour faire nos requtes.
La deuxime application est la centrale. Elle permet au gestionnaire de faire son
travail de vrification des comptes. Il interroge un type de compte donn et peut y
voir lopration de versement ou de retrait, effectue. Il peut grer les employs,
cest dire quil peut ajouter et enlever un employ de la base de donne en
vrifiant que cet employ existe.
La troisime application est lagence. Elle fait toutes les requtes ncessaire la
gestion des clients et des comptes de la banque. Lemploy peut ouvrir ou fermer
un compte, interroger, faire des versement et des retraits sur un compte. Il peut
aussi modifier des donnes relatives au client. Si le client change dadresse, il est
alors transfr sur lautre agence ainsi que son ou ses comptes.
Un journal se trouve sur chaque site et est mis jour chaque fois quune
requte SQL modifie un fragment de table.
Pour chaque requte impliquant une mise jour, nous vrifions chaque tape
quil ny a pas derreur gnre par la requte. Arriv la fin de celle ci, on essaie
dcrire dans le journal, si on y arrive, on fait le commit , sinon on annule tout.
14
DESCRIPTION DE LAPPLICATION
CENTRALE
Une fois le mot de passe du gestionnaire valid, les connexions avec les
diffrents sites sont tablies. Un menu propose au gestionnaire diffrents choix :
interroger un type de compte , grer un employ, soit quitter lapplication.
Pour grer un employ, le gestionnaire le choix dajouter ou de supprimer un
employ. Pour lajout dun employ dans lagence A, on prend les donnes
ncessaire, on teste si le numro demploy existe dans une des deux agences, si
non mise jour du fragment FragA_TableEmp sur le site A, ainsi que sa copie
FragA_TableEmp_CP sur le site Centrale. Ecriture sur les journaux de lagence A
et de la Centrale, si pas derreur, validation des mise jour par un commit.
Supprimer un employ, on demande le numro demploy, on recherche le
numro si le numro existe et on supprime lentre correspondante dans le
fragment FragA_TableEmp si lemploy travail lagence A, ainsi que lentre dans
la copie FragA_TableEmp_CP, aprs lcriture dans les journaux correspondants
on valide la suppression.
Pour interroger un compte qui se trouve dans lagence A, on demande le type
de compte et la transaction (versement ou retrait) et on interroge le fragment
FragA_TableOP_CP avec le type dopration et le type de transaction. Ce fragment
se trouve sur le site de la central ce qui permet de rester en local et de gagner du
temps. Pour interroger la base de donne, on utilise un tampon qui prend les
donnes requises et les transmet lapplication qui les affiches. On ne peut voir que
les transactions sur un type de compte et non sur un compte donn. Une fois
lopration faite, retour au choix initial.
AGENCE
Une fois le mot de passe de lemploy valid, les connexions avec les diffrents
sites sont tablies. Un menu propose lemploy diffrents choix : versement,
retrait, interrogation dun compte, soit changement dadresse dun client
Avant chaque opration, on vrifie lexistence et la localisation du compte.
Pour faire un versement-retrait, suivant sa localisation, par exemple lagence A,
on travail en local sur le fragment FragA_Compte ou sur FragB_Compte_CP.
Pour interroger un compte on fait une simple requte.
Pour changer dadresse on prend le compte concern, on le dplace. Les
lments de la table opration qui concerne le compte dplac et les donnes du
client sont aussi dplacs. Une fois les lments dplacs, on les efface des tables
15
dorigines. Tout cela ncessite de faire des mises jour dans les tables, donc on
ecrit dans les diffrents journaux
Une fois connect choix de lopration). Puis demande du numro de compte
ou lopration doit avoir lieu. Vrification de lendroit o se trouve le compte si le
compte est en local, on travail sur le fragment mme, sinon travail sur la copie du
fragment, ensuite lopration voulue est effectue.
Pour linterrogation, requte SQL par un tampon la base de donnes pour
ressortir les informations voulues.
Pour le versement ou le retrait, demande du montant et requte de mise a jour
des tables oprations et compte. Ces mises jour entranent une criture dans les
diffrents journaux. Une fois ces critures russies, il y a validation des mises jour
par un commit.
Pour le changement dadresse, on demande la nouvelle adresse et on met jour
les fragments concerns. Si le compte change dagence, les donnes du client, des
oprations et du compte, qui appartiennent au compte, sont aussi transfres. Les
mises jour implique dajouter des donnes dans certains fragment et de les enlever
dans dautres, toutes ces transactions sont reportes dans les journaux, si toutes les
critures sont effectues correctement, il y a alors validation des mises jour.
16
fermeture du journal ;
}
mme chose pour
int JournalA(char texte[]){
int JournalB(char texte[]){
int location_check(int compte)
{Interrogation des lments de la table FragA_Compte, o NoCompte = :compte
et mise des lments dans la structure inter_cp;
teste si erreur, cela veut dire que le compte nest pas dans FragA_Compte ;
alors Interrogation des lments de la table FragB_Compte_CP,
o NoCompte = :compte et mise des lments dans la structure inter_cp2 ;
si erreur, ce compte nexiste pas ;
location =1 ;
interrogation des lments de la table FragB_Client_CP,
o NoClient =:inter_cp2.no_client et mise dans la structure client;
affichage des lments de client.
Sinon si pas derreur, cela veut dire que le compte est dans FragA_Compte ;
location =0 ;
interrogation des lments de la table FragA_Client,
o NoClient =:inter_cp2.no_client et mise dans la structure client;
affichage des lments de client.
}
int interrogation(int compte)
{teste si location =0
alors affichage que le compte est sur A ;
excution sur ssc8a ;
dclaration dun tampon pour
interrogation de typeop et de dDate de la table FragA_TableOp,
o NoCompte = :compte et mise dans la structure inter _op ;
ouverture du tampon ;
tant quil ny a pas derreur
recherche des lments dans le tampon;
fermeture du tampon ;
affichage du nb dopration qui est le nb de tuple dans le tampon ;
si le nb de tuple =0
alors compte inxistant ;
input() ;
sortie de la fonction ;
ouverture du tampon
tant quil y a des tuples
recherche des lments dans le tampon et mise dans la structure inter_op ;
affichage des lments sortis du tampon , le montant, le type dop, la date de lOp;
fermeture du tampon
affichage de la somme ducompte ;
sinon affichage que le compte est sur B ;
excution sur ssc8b ;
dclaration dun tampon pour
interrogation de typeop et de dDate de la table FragB_TableOp,
17
PROBLEMES RENCONTR
CONCLUSION
Ce projet nous a permis de nous familiariser avec les bases de donnes rpartie,
ainsi que de plonger des requtes SQL dans un langage comme le C.
Ce projet nous a pris normment de temps pour implmenter les applications.
Le fait que le compilateur dOracle ne fonctionne pas correctement a engendrer
beaucoup de temps perdu.
ANNEXES
18