Vous êtes sur la page 1sur 21

Ralisation dune premire base de donnes

(Tutoriel - version 3.0)


(Guettez les nouvelles versions de ce tutoriel sur le site web de lenseignement)
(Entrainez-vous reconstituer la base des notes avec ce tutoriel)
(Ce tutoriel nest pas un cours acadmique, il vise rendre les tudiants rapidement oprationnels)

Rgles essentielles :
Il faut :
-

Eclater linformation ;
Rassembler ce qui peut ltre en catgories (familles ou rubriques) ;
Avancer par tapes (chacune doit tre oprationnelle) ;
Mettre dans une rubrique annexe tout ce que lon ne peut pas ranger dans une catgorie
prcise ;
Etre patient.

Mais lessentiel se rgle avec une feuille de papier et un crayon ! Cest la premire tape du travail.
La phase papier/crayon doit tre suffisamment claire et exacte pour passer la pratique
immdiatement. Ceci implique de procder une tape de brain storming puis dtablir et de
suivre un cahier des charges. Finalement le schma des relations doit conduire la ralisation dune
premire version de la base ACCESS faisant passer le Modle Conceptuel des Donnes (MDC) un
Modle Logique de Donnes (MLD)
Il existe une mthode pour raliser (construire) une base de donnes  MERISE
Sans le savoir ou le dire on va appliquer les principes de cette mthode et faire preuve de bon sens.
MERISE :
 Vocabulaire de spcialiste
 Fait pour organiser le travail des informaticiens (annes 60-70) et rendre le traitement de
linformation structure plus performant
 Modle conceptuel des donnes  vision pratique de la base de donnes (vocabulaire
logiciel de la base de donnes)

Les diffrentes tapes de la ralisation de la base notes_tudiants


(Nous passerons outre les dtails dune ventuelle version Excel pour nous pencher exclusivement
sur la faon de raliser une base Acces fonctionnelle)
Aussi surprenant que cela puisse paratre, une base de donnes relate une histoire !
Lhistoire qui est sous jacente (et rpte autant de fois que ncessaire) dans cette base est :
< Ltudiant Machin a obtenu la note X sur 20 dans la matire Truc enseigne par lenseignant Bidule >
Ou encore :
< La note X sur 20 a t obtenue par ltudiant Machin dans la matire Truc enseigne par le prof Bidule >
Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

On soccupe dabord du contenant (prparant lentre du contenu). Il faut donc structurer ce contenant
Commenons donc par clater et catgoriser linformation, ceci va permettre de reprer les futures
tables et de dfinir les futurs champs des enregistrements.
On repre ainsi que 3 catgories (tables) peuvent tre ainsi facilement cres regroupant une
information cohrente. Il reste un problme : o ranger les notes ?

Etudiants

Enseignants

Nom
Prnom
E-mail
Identificateur tudiant
Notes
Annexe

Matire

Identit
Tel
Matire

Coefficient
Intitul

Il y a ici potentiellement 3-4 feuilles Excel


ON NE FIGURE PAS LES OPERATIONS ET AUTRES REQUETES SUR LES DONNEES BRUTES

Notes
Rsultats ??
Maintenant que ltape de conceptualisation est termine, nous pouvons commencer le travail dans Access
(ou dans tout autre SGBDR)

Premires tapes avec Access


Cration de tables : il est clair que 4 tables (a y est le mot est lch) vont tre cres lune aprs lautre
-

On renseigne les noms des champs et le type des donnes (ne pas se tromper dans les formats).
On peut ajouter des champs nimporte quel moment en basculant vers le mode cration
Enregistrement de la table en cours (soit clic droit puis Enregistrer, soit la bascule en mode
feuille de donnes demande automatiquement si lon veut enregistrer les modifications)

Une rgle essentielle : il faut viter les doublons


Lunicit de linformation est plus facilement assure par un codage numrique.
Au dbut, cela surprend un peu, mais on sy fait rapidement lorsque lon constate tous les avantages
que cela procure en souplesse dans la cration, la gestion et lutilisation pratique de la base de donnes.
Table_enseignant
Id_prof
matire
tel

Table_matire

texte (nom)
Id_matiere
texte
intitule
numrique (entier)
coef

Table_notes
nom_etu
matire
note sur 20

Premire base Access

Table_tudiant

numro auto cl primaire


Id_etudiant
texte
nom
numrique (entier)
prenom
e-mail
Id_INE

numro auto cl primaire


texte
texte
texte
numrique

texte (nom)
texte
numrique

- tutoriel -

Pascal Rigolet

Septembre 2013

Cration dune nouvelle base Access


(Nous abordons alors laspect contenu pour la premire fois)
Commenons par crer une base Access qui contiendra lensemble des donnes structures sous le
nom note1.mbd (il faut toujours miser sur la prudence en numrotant les versions de la base de
donnes pour garder une trace de sa ralisation progressive et archiver les versions fonctionnelles
dans un rpertoire Versions )

Linterface de Access 2007 est un peu garni mais il faut toujours faire les choses simplement : ici
cliquer sur licne (en haut gauche de la fentre centrale) Base de donnes vides . Slectionner
le rpertoire daccueil et dfinissez le nom du fichier base de donnes dans le menu de droite (ici
note1.accdb). Depuis la version 2007 la terminaison des fichiers nest plus mdb (pour master
database) mais accdb (pour access database).
Une fois votre fichier ouvert vous rentrez dans lunivers pratique de la ralisation dune base de
donnes avec le SGBDR (Systme de Gestion de Base de Donnes Relationnelles) Access.
Il faudra vous laisser guider par les commandes, fonctions et autres options que proposent les menus
droulants et les boutons du logiciel. Vous verrez que la prise en main est assez intuitive et rapide.
On y retrouve dj les rubriques habituelles de cration et gestion de fichier, ddition et puis de
manipulation de donnes.

Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

A ce stade, vous venez de facto de crer une base de donnes vide. Il faut maintenant commencer
organiser son contenu et crer les tables prvues ltape de conception (figurant sur le schma).
Entrez dans la fentre de cration de la premire table de cette base de donnes Access. On repre
tout de suite le bouton Affichage (cercl en rouge sur la figure ci-dessous) qui permet de faire
passer laffichage de la table en mode feuille de donnes (contenu) ou en mode cration (format /
contenant).

Il est logique de commencer par dfinir le format de la table (contenant) en prcisant la structure des
champs des enregistrements, rpondant des types de donnes prcis. On bascule donc en mode
cration en cliquant sur le bouton affichage. Lors de la validation des premires informations de la
table, le logiciel nous demande de les enregistrer. Enregistrons les sous lidentificateur
Table_etudiant ; sans accent pour respecter la rgle du latin de base (format ASCII)

Ds lors la dfinition prcise de chacun des champs composant les enregistrements peut commencer

Le premier champ sera lidentificateur numrique


(interne) de ltudiant ID_etudiant dont le type
sera num_auto. Ds lors, la numrotation sera
automatiquement incrmente par le systme
chaque nouvel tudiant entr dans la table.

Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

Il est assez simple de dfinir chacun des champs par son identificateur et son type. On pourra
avantageusement utiliser les cases Description pour saisir des commentaires et prciser certains
lments. Lunicit de linformation ntant pas garantie avec le nom ou mme avec le couple (nom,
prnom), elle le sera grce au numro ID de ltudiant. On associe alors (avec le bouton cl primaire,
cercl en rouge sur la figure, ou laide dun clic droit souris / choix cl primaire) la cl primaire sur
le champ ID_etudiant
On remarque que la structure des enregistrements est dcrite de telle faon qu chaque ligne
correspond la dfinition dun champ dans lordre de leur rencontre.
En basculant en mode feuille de donnes le logiciel demande sil faut enregistrer les modifications
effectues. Il faut rpondre oui

Nous sommes ainsi arrivs ltape de lentre des donnes


Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

Crons deux enregistrements :

On voit que les enregistrements sont affichs les uns aprs les autres selon la structure que lon a
dfinie en mode cration, raison dun enregistrement par ligne. Les colonnes de la table
correspondent ainsi aux champs des enregistrements cres (le champ ID_etudiant est
automatiquement incrment dune unit chaque enregistrement cre, on ne sen occupe pas).
On procdera ainsi pour chacune des tables crer

Importation dun fichier Excel/dun fichier .txt


Nous pouvons nous faciliter la tache en rcuprant les noms des tudiants depuis un fichier texte
1 / Enregistrer la feuille Excel en format texte (.txt) (sparateur tabultation)
2 / Ouvrir Access, dans donnes externes : importer fichier .txt, dans la boite de dialogue choisir
le bon sparateur et cocher 1re ligne contient les noms des champs si besoin
3 / On peut choisir de laisser Access choisir une cl primaire ou choisir le champ de la cl
primaire ou ne pas indiquer de cl primaire.
4 / Il faudra ajouter cette table le numro dindex de chaque enregistrement (ID_etudiant)
5 / Enregistrer la table / elle est dsormais totalement utilisable

Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

Une premire bauche les diffrentes tapes, fruit de notre rflexion


1 - Une ralisation par tape

2 - Rpertorier les entits qui vont composer la base de donnes / rassembler les donnes en catgories

3 - Proposer une phrase permettant de placer la base de donnes dans un certain contexte

Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

4 - Vers un premier schma relationnel de la Base des Notes

Nous constatons que la table principale est une table intermdiaire, celle qui contient les notes que
les tudiants ont obtenues dans les diffrentes matires. Tous les lments principaux de lhistoire
sont runis dans ce schma. Dune faon gnrale, on peut avoir intrt, ne serait-ce que pour gagner
du temps, dfinir demble une table centrale qui contient les champs les plus impliqus dans
lhistoire associe la base de donnes (quitte revoir, posteriori, le schma des relations).
Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

Cration des relations


Facilitons nous la tche en crant la table Table_notes

Table_notes
code_etudiant numrique cl trangre
code_matiere numrique
numrique
note sur 20

Icne relations dans menu feuille de donnes


ATTENTION lunicit de linformation ! (il faut faire la
chasse aux doublons). Pour rendre linformation
unique on lassocie une ou plusieurs cls dites cls
primaires.

Table_notes = TABLE CENTRALE


(sans sen rendre compte on vient galement de crer une table intermdiaire permettant
ltablissement de relations de type n m, dite galement 1 plusieurs)
On a cr un champ code_etudiant (ajout dans la table table_tudiant) pour avoir un numro unique.
Dans table_tudiant : clic droit Id_etudiant  cl primaire (ou clic direct sur cl primaire)

Le champ correspondant la cl primaire contient une information rendant UNIQUE


lenregistrement complet
Quand un champ correspond la cl primaire il ne peut pas tre supprim (il faut au pralable
supprimer lattribut cl primaire )
Pour crer une relation :
- Toutes les tables devant tre mises en relation doivent tre fermes
- cliquer-glisser du champ Id_etudiant (table_tudiant) vers code_etudiant (table_notes)
- dans la fentre de dialogue cocher :
Appliquer lintgrit rfrentielle
et
Mettre jour en cascade les champs correspondants

Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

Du Modle Conceptuel de Donnes (MDC) un Modle Logique de Donnes (MLD)

MDC, Relations et cardinalits


Nous serons amens rencontrer 3 types de relations (associes des cardinalits), brivement
illustres dans cette page : les relations un un, un plusieurs et plusieurs plusieurs.
Il nest pas toujours aussi vident que cela de dterminer quel type de relation (ou cardinalit) doit
tre utilise entre 2 tables de la base.
Prenez lhabitude de dfinir les cardinalits (minimum et maximum possibles) dans les deux sens.
Rpondez pour cela la question suivante : pour un enregistrement de la premire table considre
combien peut-il y en avoir dans la seconde table ?
De plus, essayer dassocier un verbe ( linfinitif) dans le schma qui rsulte de cette relation.

Pour construire une relation il faut :


-

2 tables (au sens large, requtes incluses)


1 champ permettant lchange des contenus communs dans chacune des tables
Ex : Id_etudiant (table_tudiant) et code_etudiant (table_notes)
Il faut ncessairement que lun dentre eux soit associ une cl primaire (lautre sera par
dfinition la cl trangre)
Le type dinformation partag doit tre le mme dans les 2 champs et leur taille identique
Ex : entier long li un entier long, rel avec rel, un texte de 4 caractres avec un texte de 4
caractres (la seule exception est celle liant un champ de type numroAuto avec un
champ de type numrique Entier long)
Mme catgorie dinformation : un code_enseignant ne peut pas tre reli un ID_matiere
ou un ID_etudiant, cela va de soi.

Rq : On peut galement (je le dconseille) crer un lien provisoire dans une requte

On validera le Modle Logique de Donnes :


-

A laide dun jeu dessai


En poussant la base ses limites

Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

10

Relation un un (1 1)
Table_Etudiant

0 ,1

0, 1

Table_Bicyclette

Possder
0, 1

0, 1

1 tudiant circule avec 1 vlo qui est le sien donc nappartient qu lui
Il nest pas dit que tous les tudiants possdent un vlo et quil nexiste pas de vlo sans propritaire
Ici le verbe est possder
0 1 tudiant possde 0 1 vlo
Et 0 1 vlo est possd par 0 1 tudiant
Relation un plusieurs (1 N)
Table_Matiere

1 ,1

1, N
Enseigner

1, 1

Table_Enseignant

1, 1

1 matire est enseigne par un ou plusieurs enseignants ; chacun deux nenseignant quune seule
matire
Hypothses : toutes les matires sont enseignes (par au moins un enseignant)
Chaque enseignant enseigne une et une seule matire
Ici le verbe est enseigner
1 1 enseignant enseigne 1 1 matire
Et 1 1 matire est enseigne par 1 N enseignant(s)
Relation plusieurs plusieurs (N M)
Table_Etudiant

0 ,N

0, N
Suivre

0, N

Table_Matiere

1, N

1 matire est suivie par un ou plusieurs tudiants ; chacun deux suivant aucune plusieurs matire
Hypothses : - les tudiants inscrits mais ne suivant pas les cours ne suivent aucune matire
- certaines matires ne sont suivies par aucun tudiant (option nouvrant pas cette anne-l)
Ici le verbe est suivre
0 N tudiant(s) suit par 0 N matires(s)
Et 1 N matires(s) est/sont suivie(/s) 0 N tudiant(s)

Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

11

Schma des relations


(Rajoutez la main le type des
relations et associez-y un verbe)

Table_notes
code_etudiant numrique cl trangre
code_matiere numrique cl trangre
note sur 20
numrique

Table_tudiant
Table_matire
Id_etudiant
nom
prenom
e-mail
Id_INE

numro auto cl primaire


texte
texte
texte
numrique

Id_matiere
intitule
coef
code_enseignt

numro auto cl primaire


texte
numrique
numrique

Table_enseignant

Ca colle bien avec lhistoire raconter :


Ltudiant machin a obtenu la note X sur 20
dans la matire truc enseigne par le prof bidule.
Tout va bien, on a bien travaill.

Id_enseignant
nom
code_matiere
qualit
tel
e-mail

numro auto cl primaire


texte
numrique cl trangre
texte
numrique
texte

plusieurs

Hypothses :
1. un tudiant a plusieurs notes mais une seule par matire
2. Un enseignant peut enseigner plusieurs matires
3. Chaque matire son coefficient
4. Il y a un seul correcteur par matire

Exercice :
Comment transformer cette structure pour tenir compte du fait quune matire peut galement
faire intervenir plusieurs enseignants (il y a plusieurs solutions) ?
Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

12

Astuce
Premier enregistrement auto pour chacune des tables
 non dfini + valeur par dfaut = 1 pour tous les code_...
 Permet de ne pas avoir de problme et toujours avoir des liaisons qui marchent.
Listes de choix
Dans table_matire il faut pouvoir imposer que le coefficient soit compris dans une liste :
-

On cre une nouvelle table Table_coef avec un seul champ coef_matiere qui est
numrique.
Dans Table_matiere on change le type de donnes (si cela ne marche pas effacer le champ
puis recommencer) et on slectionne assistant liste de choix au lieu de numrique.
Assistant liste de choix doit rechercher dans table,., on choisit Table_coef puis le champ
coef_matiere.
Ainsi lorsque lon veut renseigner dun coefficient dans le champ coef on dispose dun
ascenseur qui nous permet de choisir parmi les valeurs de coef_matiere dans la
Table_coef.
!!! Attention !!! on peut mettre dautres valeurs, si lon veut rester dans la fourchette
donne par la Table_coef il faut aller dans valide si >0 Et <=5

Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

13

Relations dans le Modle Logique de Donnes (ex : Base de Donnes Access)


Finalement un compromis possible est celui figurant ci-dessous

(hypothse : un seul enseignant par groupe)

Transformation de la base de donnes des notes pour intgrer le champ code_enseignant dans la
table Table_note et relier cette table la table Table_enseignant (relation N M)
Ceci va autoriser lapplication de lhypothse : plusieurs enseignants peuvent enseigner dans une
mme matire et un enseignant peut enseigner plusieurs matires

Pour commencer, il nous faut tout dabord supprimer le lien qui relie la table Table_enseignant la
table Table_matiere. Pour cela : clic droit sur le lien puis slectionner loption supprimer. Le logiciel,
prudent, vous demande alors si vous tes surs de vouloir supprimer la relation slectionne.
Rpondez oui .
Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

14

Les 2 tables sont ds lors indpendantes.

Vous pouvez rarranger lorganisation des tables dans le schma des relations afin de faire
apparatre la table Table_enseignant sous la table Table_matiere. De cette faon, le nouveau lien se
construira plus facilement et lon y gagnera en prsentation.

Il est alors possible de rajouter un champ dans la table Table_note dont le contenu sera partag avec
lidentificateur de lenseignant. Bouton de souris droit puis choix insrer des lignes . Ensuite
cration du champ (numrique) correspondant la cl trangre : code_enseignant.

Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

15

Il faudra ensuite penser initialiser le champ une valeur par dfaut cohrente (ici : 1 qui
correspond un enseignant dfinir ) puis renseigner correctement les nouveaux champs avec
le code du professeur enseignant chacune des matires. Cette dmarche assurera lintgrit
rfrentielle des donnes relies entre les deux tables (rappel : un enseignant peut enseigner
plusieurs matires mais une matire nest enseigne que par un seul prof).

Finalement il faudra effacer les 2 cls primaires dj prsentes dans la table pour redfinir lunicit
de linformation sur le triplet (code_etudiant, code_matiere, code_enseignant). Vous tes donc
amens insrer 3 cls primaires sur ce triplet. Il est noter que ceci naffectera ni le contenu de la
table, ni les liens dj existants. Puissant, nest-il pas ?

Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

16

Il ne nous reste plus qu crer le lien 1 N ( 1 plusieurs ) entre la table Table_note et la table
Table_enseignant par lintermdiaire du partage de contenu entre les champs code_enseinant
(Table_notes) et ID_enseinant (Table_enseignant). Noubliez pas de fermer les tables concernes
pour crer ce nouveau lien.

Pour finir, supprimez le champ code_prof de la table Table_matiere qui ne sert plus rien.
Nous obtenons ainsi la structure figurant ci-dessous :

Ainsi construite, la base de donnes est encore plus performante. Nous avons atteint l un bon
niveau de MDC (Modle Conceptuel des Donnes).

Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

17

Vers une autre version de la base de donnes


On peut sintresser intgrer lensemble dans la spcialit (module) choisie par les tudiants. Pour
Chaque module il y aura une srie de notes par tudiants (correspondant aux matires dfinissant le
module). Cela peut donner le schma suivant :
La cl primaire est dfinie sur les champs code_etudiant et code_matiere pour viter les doublons
dans lattribution des notes
Table_notes
code_etudiant numrique cl primaire
code_matiere numrique cl primaire
note sur 20
numrique

Table_etudiant
Table_matiere
Id_etudiant
nom
prenom
e-mail
Id_INE

numro auto cl primaire


texte
texte
texte
numrique

Id_matiere
intitule
coef
code_enseignt

numro auto cl primaire


texte
numrique
numrique

Table_enseignant
Id_enseignant
nom
code_matiere
qualit
tel
e-mail

Table_module
Id_module
code_etudiant
responsable
secretaire
code_APOGEE

numro auto cl primaire


numrique cl trangre
texte
texte
numrique

Premire base Access

- tutoriel -

Pascal Rigolet

numro auto cl primaire


texte
numrique
texte
numrique
texte

Septembre 2013

18

Rgles daccs/de priorits


SQL : System Query Langage  langage de programmation reconnu par Access (transparent pour nous)

Exportation vers un fichier excel

Exemple : rsultat dune requte

Exercice :
Extraire la table rsultat de la requte (matire= Gologie ) et raliser le graphe de la rpartition
des notes en classes de 2 points.

Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

19

Les 4 mtiers qui se cachent derrire une base de donnes :


ladministrateur de la base qui gre les informaticiens (crent le SGBD, dfinissent les requtes,
fonctions, validations etc), les personnes qui renseignent la base de donnes (donnent un contenu
fiable la base) et celles qui saisissent les donnes.
Besoin de faire des tests pour rvler le maximum derreur  mises jour de la base.

Rgle du 80/20

Rgle du 80/20 : ( propos de la recherche de performance)


Sapplique la notion de cahier des charges
Cahier des charges : objectifs 100% des charges ralises
On passe 20% du temps pour honorer 80% du cahier des charges.
Pour sintresser au reste (dtails) du cahier des charges (20% restant), le temps y consacrer est
indfini
Le parfait nexiste pas, il faut dj faire quelque chose de bien. Apprendre travailler vite et bien.
Aller lessentiel (au plus vident).

A lissue de ce travail, nous sommes prts nous intresser des considrations plus
environnementales

Premire base Access

- tutoriel -

Pascal Rigolet

Septembre 2013

20

Comment renseigner la base des spcialits (4) suivies par ltudiant(e) ???
(variante)

But : pouvoir sortir la liste des tudiants pour chaque spcialit + pouvoir sortir la liste des spcialits
pour chaque tudiant (1 ou plusieurs)
Crer une nouvelle table. Chaque tudiant peut suivre une ou plusieurs spcialits. Crer une table
avec la liste des spcialits pour pouvoir choisir dans la Table_master la spcialit dans la liste
Liste_master.

Table_master_tudiant
Rgle du 80/20 :
code_etu
numrique
code_specialite numrique

Table_tudiant
Id_etudiant
nom
prenom
e-mail
Id_INE

numro auto cl primaire


texte
texte
texte
numrique

Permet de combiner indpendamment des


informations nouvelles corrles (spcialits = intitul
prcis du master)
Soit la nouvelle table Table_master est en
amont de Table_matire, soit la Table_master
directement relie par une relation de 1 plusieurs (1
n) la Table_tudiant.

Les requtes permettent dafficher (ou non) cette


nouvelle information avec les autres.

Table_master
Liste_master
Id_master
Intitule
Responsable

numro auto cl primaire


liste
texte

Premire base Access

- tutoriel -

Nom_master

Pascal Rigolet

texte

Septembre 2013

21