Vous êtes sur la page 1sur 59

Systme de Gestion de Bases de Donnes Polycopi version 0.

9
Page 1 Version non dfinitive
thomas lebarb, MMVIII




Systmes de Gestion
de Bases de Donnes






thomas lebarb, MMVIII
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 2 Version non dfinitive
thomas lebarb, MMVIII

1. INTRODUCTION 5
1.1. ORGANISATION EN FICHIERS : 5
1.2. LIMITES DE LORGANISATION EN FICHIERS : 5
1.3. ORGANISATION EN BASE DE DONNEES : 5
1.4. ORGANISATION EN BASE DE DONNEES : 6
1.5. DEFINITIONS 6
1.6. COUCHES SGBD 6
1.7. OBJECTIFS DES SGBD 6
1.8. DIFFERENTS TYPES DE BD 7
1.9. NIVEAUX DE DESCRIPTION 7
1.10. FONCTIONS DES SGBD 7
1.11. PROCESSUS DE CONCEPTION DUNE BD 8
2. LE MODELE E/A 9
2.1. ANALYSE ET CONCEPTION DE BD 9
2.2. LE FORMALISME E/A 9
2.3. ASSOCIATION 10
2.4. TYPES DASSOCIATIONS 11
2.5. CARDINALITE 11
2.6. ASSOCIATION 1 : 1 11
2.7. ASSOCIATION 1 : N 11
2.8. ASSOCIATION M : N 12
2.9. ATTRIBUTS DASSOCIATION 12
2.10. ANALYSE ET CONCEPTION 12
2.11. EXEMPLE DE DIAGRAMME E/A 13
2.12. TD NUMERO 1 ET 2 LE MODELE E/A 14
EXERCICE 1 14
EXERCICE2 14
EXERCICE 3 14
EXERCICE 4 14
EXERCICE 5 15
3. LE MODELE RELATIONNEL 16
3.1. GENERALITES 16
3.2. NOTIONS DE BASE 16
3.3. RELATIONS, ATTRIBUTS 16
3.4. N-UPLETS 16
3.5. CONTRAINTES DINTEGRITE 17
3.6. POURQUOI DES RELATIONS 17
3.7. TRADUCTION RELATIONNEL E/A 17
3.8. TRADUCTION E/A MODELE RELATIONNEL : EXEMPLE COMPLET 18
3.9. PROBLEME DE LA REDONDANCE 18
3.10. ANOMALIES DETECTEES 18
3.11. NORMALISATION 18
3.12. DEPENDANCE FONCTIONNELLE (DF) 19
3.13. PROPRIETES DES DEPENDANCES FONCTIONNELLES 19
3.14. PROPRIETES COMPLEMENTAIRES 19
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 3 Version non dfinitive
thomas lebarb, MMVIII
3.15. EXEMPLE DE DF 19
3.16. NOTIONS SUPPLEMENTAIRES 20
3.17. FORMES NORMALES 20
3.18. PREMIERE FORME NORMALE (1FN) 20
3.19. DEUXIEME FORME NORMALE (2FN) 20
3.20. 2FN : NORMALISATION 20
3.21. TROISIEME FORME NORMALE (3FN) 21
3.22. FORME NORMALE DE BOYCE CODD (FNBC) 21
3.23. TD NUMERO 3 PASSAGE DU MODELE E/A AU MODELE RELATIONNEL 22
EXERCICE 1 22
EXERCICE 2 22
EXERCICE 3 22
EXERCICE 4 22
3.24. TD NUMERO 4 DEPENDANCES FONCTIONNELLES, ALGEBRE RELATIONNEL 24
EXERCICE 1 24
EXERCICE 2 24
EXERCICE 3 24
EXERCICE 4 24
EXERCICE 5 25
EXERCICE 6 25
3.25. TD NUMERO 5 FORMES NORMALES, NORMALISATION 26
EXERCICE 1 26
EXERCICE 2 26
EXERCICE 3 26
EXERCICE 4 26
3.26. TP NUMERO 1 INITITIATION A ACCESS OBJETS MANUIPULES
CREATION DE TABLES ET DE FORMULAIRES 27
SE REPERER DANS ACCESS 27
SE REPERER DANS LA BARRE DOUTILS BASE DE DONNEES 27
SE REPERER DANS LA VISUALISATION DUNE BASE DE DONNEES 28
OBJETS MANIPULES 28
ETAPES DE MISE EN UVRE SOUS ACCESS 30
CREATION DUNE NOUVELLE BASE DE DONNEES 30
CREATION DES TABLES AUTEURS, EDITEURS ET LIVRES 31
CREATION DES RELATIONS ENTRE LES TABLES 33
CREATION DE FORMULAIRES 36
3.27. TP NUMERO 2 CREATION DINDEX CREATION DE REQUETES
CREATION DETATS 38
COMPLEMENT AU TP NUMERO 1 38
LES INDEX 38
LES REQUETES 39
LES REQUETES DACTION 42
LES ETATS 43
3.28. TP NUMERO 3 CREATION DE MACROS ALGEBRE RELATIONNEL
EXERCICE RECAPITULATIF 46
LES MACROS 46
APPLICATION PROFESSIONNELLE 49
LALGEBRE RELATIONNEL 50
EXERCICE RECAPITULATIF 53
4. ALGEBRE RELATIONNEL 55
4.1. LUNION 55
4.2. LINTERSECTION 55
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 4 Version non dfinitive
thomas lebarb, MMVIII
4.3. LA DIFFERENCE 55
4.4. LE PRODUIT CARTESIEN 56
4.5. EXEMPLE DE PRODUIT CARTESIEN : 56
4.6. LA PROJECTION 57
4.7. LA RESTRICTION 57
4.8. LA JOINTURE 57
4.9. EXEMPLE DE JOINTURE 58
4.10. DECOMPOSITION DUNE RELATION 58
4.11. PRESERVATION DU CONTENU 58
4.12. PRESERVATION DES DEPENDANCES 59
5. CORRIGES 60
5.1. TD NUMERO 1 ET 2 LE MODELE E/A 60
EXERCICE 1 60
EXERCICE2 60
EXERCICE 3 61
EXERCICE 4 61
EXERCICE 5 62
5.2. TD NUMERO 3 PASSAGE DU MODELE E/A AU MODELE RELATIONNEL 63
EXERCICE 1 63
EXERCICE 2 63
EXERCICE 3 63
EXERCICE 4 64
5.3. TD NUMERO 4 DEPENDANCES FONCTIONNELLES, ALGEBRE RELATIONNEL 65
EXERCICE 1 65
EXERCICE 2 65
EXERCICE 3 65
EXERCICE 4 65
EXERCICE 5 66
EXERCICE 6 67
5.4. TD NUMERO 5 FORMES NORMALES, NORMALISATION 70
EXERCICE 1 70
EXERCICE 2 70
EXERCICE 3 70
EXERCICE 4 71

Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 5 Version non dfinitive
thomas lebarb, MMVIII

1. Introduction

1.1. Organisation en fichiers :

1.2. Limites de lorganisation en fichiers :
!Particularisation de la saisie et des traitements en fonction des fichiers ! un ou
plusieurs programmes par fichier
!Contrle diffr des donnes ! augmentation des dlais et du risque d'erreurs
!Particularisation des fichiers en fonction des traitements ! grande redondance des
donnes

1.3. Organisation en base de donnes :



Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 6 Version non dfinitive
thomas lebarb, MMVIII
1.4. Organisation en base de donnes :

!Uniformisation de la saisie et standardisation des traitements (ex: tous les rsultats
de consultation sous forme de liste et de tableaux)
!Contrle immdiat de la validit des donnes
!Partage de donnes entre plusieurs traitements ! limitation de la redondance des
donnes

1.5. Dfinitions

!Base De Donnes (BDD) : ensemble structur de donnes enregistres avec un
minimum de redondance
!Systme de Gestion de Base de Donnes (SGBD) :Logiciel(s) assurant
structuration, stockage, maintenance, mise jour, et consultation des des donnes d'un
BDD

1.6. Couches SGBD

!Le systme de gestion de fichiers
!Gestion du stockage physique de l'information
!Le SGBD interne
!Placement et assemblage des donnes, gestion des liens et de l'accs rapide
!Le SGBD externe
!Prsentation et manipulation des donnes aux concepteurs et utilisateurs,
gestion de langages de requtes labors

1.7. Objectifs des SGBD

!Indpendance physique : un remaniement de l'organisation physique des donnes
n'entrane pas de modifications dans les programmes d'applications
!Indpendance logique : un remaniement de l'organisation logique des fichiers
n'entrane pas de modifications dans les programmes d'applications
!Manipulation facile des donnes : un utilisateur non informaticien doit pouvoir
manipuler simplement le donnes
!Administration facile des donnes : un SGBD doit fournir des outils pour dcrire
les donnes, permettre le suivi de ces structures et autoriser leur volution
(administrateur de BDD)
!Efficacit des accs aux donnes : garantie d'un bon dbit (nb. de transactions /s)
et d'un bon temps de rponse (temps moyen d'attente pour une transaction)
!Non redondance des donnes : viter la duplication d'informations pour diminuer
le volume de stockage et viter les incohrences
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 7 Version non dfinitive
thomas lebarb, MMVIII
!Cohrence des donnes : ex: l'ge d'une personne est un nombre positif. Le SGBD
veille ce que les applications respectent cette rgle (contrainte d'intgrit)
!Partage des donnes : utilisation simultane des donnes par diffrentes
applications
!Scurit des donnes : les donnes doivent tre protges contre les accs non
autoriss ou en cas de panne

1.8. Diffrents types de BD
!Bases hirarchiques (schma arborescent)
!Bases rseaux (id. mais plus rapides) 20%
!Bases relationnelles (tables et algbre relationnel) 75%
!Bases dductives (tables et logique du 1
er
ordre)
!Bases objets (formalisme objet d'hritage)

1.9. Niveaux de description

!Niveau interne : structure de stockage des donnes : type de fichiers, accs aux
donnes
!Niveau conceptuel : description abstraite de la ralit du domaine d'application
!Niveau externe : ensemble des vues (faon dont les donnes sont perues) qu'ont
les groupes d'utilisateurs

1.10. Fonctions des SGBD

!Description des donnes : Langage de Description des donnes (LDD)
!Recherche des donnes (langage de manipulation de donnes LMD)
!Mise jour des donnes (langage de manipulation de donnes LMD)
!Transformation des donnes (langage de manipulation de donnes LMD)
!Contrle de l'intgrit des donnes
!Gestion de transactions et scurit


Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 8 Version non dfinitive
thomas lebarb, MMVIII
1.11. Processus de conception dune BD

Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 9 Version non dfinitive
thomas lebarb, MMVIII

2. Le modle E/A
2.1. Analyse et conception de BD

!La phase de conception ncessite des choix qui ont d'importantes rpercutions
!Exprimer les besoins avant de l'implanter : l'analyse
!L'analyse prsente de manire abstraite le travail raliser
!On utilise un MCD (Modle Conceptuel des Donnes, mthode MERISE)

2.2. Le formalisme E/A

!E/A signifie entit/Association
!Modle conceptuel des annes 1970
!Il utilise une reprsentation graphique
!Le modle E/A est un outil permettant d'analyser les situations du monde rel

Entits et attributs

!Entit : objet (abstrait ou concret) qui peut tre distingu d'un autre objet
!Classe d'entits : ensemble d'entits similaires
!Attribut : proprit caractristique d'une entit

















!Attribut compos : subdivis en attributs simples (ex: Adresse)
!Attribut driv : dont le valeur est calcule (ex: Age d'aprs la date de naissance)

Client
Nom Prnom
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 10 Version non dfinitive
thomas lebarb, MMVIII



















!Domaine : ensemble des valeurs que peut prendre un attribut (ex: Domaine d'un
PRIX est l'ensemble est rels positifs)
!Occurrence : valeur particulire d'un attribut ou d'une entit (ex: Bleu, Rouge sont
des occurrences d'un attribut Couleur)

Identifiant et cl

!Une cl ou un identifiant est un attribut ou un ensemble d'attributs dont les valeurs
identifient de faon unique les occurrences d'un type d'entit
!Ex: le numro de scurit sociale est une cl






2.3. Association

!Association : regroupement d'entits traduisant une ralit c-a-d une liaison entre
des entits
!Les associations similaires sont regroupes en classes d'associations
!Les entits CLIENT et PRODUITS sont dites participantes la relation
COMMANDE





Adress
e
Rue
Code
Postal
Ville
Pays
Age
Client
Numro
Client
Comm
ande
Produits
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 11 Version non dfinitive
thomas lebarb, MMVIII
2.4. Types dassociations

!Le type d'association caractrise le nombre de liens entre entits
!Associations N-aires entre N entits
!Associations binaires entre deux entits
!Association 1:1 (un un)
!Association 1:n ou 0:N (un ou zro plusieurs)
!Association n:m (plusieurs plusieurs)





2.5. Cardinalit

!La cardinalit d'un couple entit-association (E,A) est la donnes d'un couple
d'entiers (m,M)
!Elle est dfinie par une cardinalit minimum m et maximum M
!m dfinit le nombre minimum d'associations de classe A pouvant exister pour une
entit de classe E

2.6. Association 1 : 1
Ex: un client donn ne commande qu'un seul produit. Un produit donn n'est
command que par un seul client.






!(m,M) m : cardinalit minimum, M : cardinalit Maximum
!Un client commande de m M produits

2.7. Association 1 : n

!Ex: un client donn commande plusieurs produits. Un produit donn n'est
command que par un seul client.





E
A
F
Client
Comm
ande
Produits
(1,1) (1,1)
Client
Comm
ande
Produits
(1,n) (1,1)
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 12 Version non dfinitive
thomas lebarb, MMVIII
!Ex: un client donn commande plusieurs produits. Un produit donn n'est
command que par un seul client mais peut ne pas tre command





2.8. Association m : n
Ex: un client donn commande plusieurs produits. Un produit donn est command
par plusieurs clients.





Les cardinalits "un plusieurs" (1,N) peuvent tre aussi "zro plusieurs" (0,N)

2.9. Attributs dassociation
Attribut d'association : dans une association m:n, il est possible de caractriser
l'association par des attributs
Ex: une commande passe une date donne et qui concerne une certaine quantit












2.10. Analyse et conception
!Marche suivre pour produire un schma E/A
1. Identifier les entits
2. Identifier les associations entre entits
3. Identifier les attributs de chaque entit et de chaque association
4. valuer les cardinalits des associations
5. Identifier le type d'association

Client
Comm
ande
Produits
(1,n) (0,1)
Client
Comm
ande
Produits
(1,n) (1,n)
Client
Comm
ande
Produits
(1,n) (1,n)
Date Quantit

Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 13 Version non dfinitive
thomas lebarb, MMVIII
2.11. Exemple de diagramme E/A

Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 14 Version non dfinitive
thomas lebarb, MMVIII
2.12. TD numro 1 et 2
Le modle E/A
Exercice 1
Nous souhaitons concevoir une base de donnes pour une banque incluant des
informations sur les comptes et les clients. Linformation relative un client consiste
en son adresse, son tlphone ainsi que son numro de scurit sociale. Les comptes
ont un numro, un solde, un type (courant, pargne, etc.). Il faut en outre pouvoir
dterminer quels sont les comptes dun client donn ainsi que le client propritaire
dun compte. On respectera les contraintes suivantes : pour chaque compte, il ny a
quun seul titulaire, un client ne peut possder quun seul compte, les adresses sont
composes dun numro, dun nom de rue, dune ville et dun code postal. Un client
peut avoir plusieurs adresses. Un client peut avoir plusieurs numros de tlphone
pour chaque adresse. Ceci implique de conserver pour chaque adresse quels numros
de tlphone lui sont associs. Donner une reprsentation entits-associations pour la
gestion de cette base de donnes.
Exercice2
Donner une reprsentation entits-associations pour la gestion dune base de donnes
stockant de linformation relative des quipes, des joueurs et leurs fans. On suppose
que chaque quipe a un nom, un capitaine et une couleur de maillot, chaque joueur a
un nom, chaque fan a un nom, des quipes favorites, des joueurs favoris et une
couleur prfre.
Exercice 3
Donner une reprsentation entits-associations pour la gestion dune base de donnes
stockant de linformation relative une bibliothque contenant des ouvrages pouvant
tre emprunts. Un ouvrage est caractris par un numro identifiant, un titre, un
auteur et un diteur. En outre on dcrit un ouvrage par un certain nombre de mots cls
numrots qui indiquent les sujets qui y sont traits. La bibliothque dispose dun ou
de plusieurs exemplaires de chaque ouvrage. Lexemplaire, qui est en quelque sorte la
matrialisation dun ouvrage, est identifi par un numro et caractris par sa position
dans les rayonnages et sa date dachat. Un exemplaire peut tre emprunt par un
emprunteur, qui peut en emprunter plusieurs. Un emprunteur est identifi par un
numro et caractris par son nom et son adresse.
Exercice 4
Donner une reprsentation entits-associations pour la gestion dune base de donnes
stockant de linformation relative la gestion des vols dune compagnie arienne. Un
vol est un parcours arien caractris par un numro, une ville de dpart, une ville
darrive, une distance, une frquence. Lorsquun vol est programm pour une date
dtermine, il constitue un dpart. Un vol nest programm quune seule fois dans une
journe lheure prvue. Un certain nombre de passagers peuvent tre enregistrs
pour un dpart. Un passager est caractris par son nom, son adresse et son numro de
tlphone. Un avion est affect chaque dpart. Un avion est caractris par un
numro, un type et une capacit. Un avion utilise une certaine quantit de carburant
pour accomplir le trajet. Cette dernire dpend des conditions atmosphriques et donc
de la date. Un certain nombre de personnels sont affects chaque dpart. Un
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 15 Version non dfinitive
thomas lebarb, MMVIII
membre du personnel est caractris par son nom, son adresse et son numro de
tlphone.
Exercice 5
Les animaux dun zoo suivent chacun un rgime alimentaire. Un rgime est constitu
dun mlange dingrdients, chacun en quantit dtermine. Le rgime dun animal
peut varier dun jour lautre. Chaque animal est caractris, en fonction de son
espce, par ses besoins minima et maxima en nutriments (calcium, protines, etc.)
exprims en mg par units de poids de lanimal. Ces besoins sont donc fonction de
lespce de lanimal. On connat la teneur de chaque ingrdient en nutriments,
exprime en mg par kg dingrdient. Chaque ingrdient a un cot unitaire. Chaque
animal requiert des soins qui sont valus en francs par jour. Ces soins peuvent varier
dun jour lautre.




Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 16 Version non dfinitive
thomas lebarb, MMVIII

3. Le modle relationnel
3.1. Gnralits
Le modle relationnel est un modle logique associ aux SGBD relationnels (ex:
Oracle, Access, Paradox, dBase, SQLServer)
!Objectifs du modle relationnel :
!Indpendance physique
!Traitement du problme de la redondance
!Propose une dmarche pour :
!La description (LDD)
!L'interrogation (LMD)

3.2. Notions de base
!Une BDD relationnelle est un ensemble de schmas de relations et dont les
occurrences sont des n-uplets de ces relations
!Table = relation
!Noms des colonnes = attributs
!Ligne = n-uplet

Schma de base = l'ensemble des schmas de relations



3.3. Relations, attributs

!Une Relation est un ensemble d'attributs {A
1
,A
2
,,A
n
}.
Ex: la relation PRODUIT est l'ensemble des attributs {NumProd, Dsi, PrixUni}
!Chaque attribut A
i
prend ses valeurs dans un domaine dom(A
i
)
Ex: PrixUni "]0,10000]

3.4. N-uplets
Un n-uplet est un ensemble de valeurs
t=<V
1
,V
2
,,V
n
> o V
i
" dom(A
i
) ou bien V
i
est la valeur nulle (NULL)
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 17 Version non dfinitive
thomas lebarb, MMVIII
Ex: <112,'raquette de tennis',300> est un n-uplet de la relation PRODUIT
Notation : R(A
1
,A
2
,,A
n
)
Ex: PRODUIT(NumProd,Dsi,PrixUni)

3.5. Contraintes dintgrit

!Cl primaire : Ensemble d'attributs dont les valeurs permettent de distinguer les n-
uplets les uns des autres (identifiant)
Ex: NumProd cl primaire de la relation PRODUIT
!Cl trangre : Attribut qui est cl primaire d'une autre relation
Ex: connatre le fournisseur de chaque produit ajout de l'attribut NumFour la
relation PRODUIT

!Notations : cls primaires soulignes, cls trangres en italiques
Ex: PRODUIT(NumProd,Dsi,PrixUni,NumFour)
!Contraintes de domaine : les attributs doivent respecter un condition logique
Ex: PrixUni>0 ET PrixUni # 10000

3.6. Pourquoi des relations

!Modle trs simple
!Modlisation mathmatique
!Bonne adquation avec la faon que nous avons de percevoir les donnes
!Modle thorique sous-jacent SQL qui est le plus important langage pour BDD
ce jour

3.7. Traduction Relationnel E/A

1) Chaque entit devient une relation (une table relationnelle) dont les attributs sont:
!Tous les attributs de l'entit
!L'identifiant de l'entit qui forme la cl primaire de la relation
Ex: CLIENT(NumCli,Nom,Prnom,DateNaiss,Rue,CP,Ville)

2) Chaque association 1:1 se traduit en incluant la cl primaire d'une des relations
comme cl trangre dans l'autre relation
Ex: Si un client peut possder un compte, on aura :
COMPTE(NumCom, Solde)
CLIENT(NumCli,Nom,Prnom,DateNaiss,Rue,CP,Ville, NumCom)

3) Chaque association 1:n se traduit en incluant la cl primaire de la relation dont la
cardinalit maximale est n comme cl trangre dans l'autre relation
Ex:
PRODUIT(NumPord,Dsi,PrixUni,NumFour)
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 18 Version non dfinitive
thomas lebarb, MMVIII
FOURNISSEUR(NumFour,RaisonSoc)

4) Chaque association m:n se traduit en crant une nouvelle relation dont la cl
primaire est la concatnation des cls primaires des relations participantes. Les
attributs de l'association sont insrs dans cette nouvelle relation
Ex: COMMANDE(NumCli, NumProd, Date, Quantit)

3.8. Traduction E/A Modle relationnel : exemple
complet
Schma relationnel complet de l'exemple VPC

CLIENT(NumCli,Nom,Prnom,DateNaiss,Rue,CP,Ville)
PRODUIT(NumPord,Dsi,PrixUni,NumFour)
FOURNISSEUR(NumFour,RaisonSoc)
COMMANDE(NumCli, NumProd, Date, Quantit)

3.9. Problme de la redondance
Soit la relation COMMANDE-PRODUIT

Cette relation prsente des anomalies

3.10. Anomalies dtectes
Anomalies de modification : Si l'on souhaite mettre jour l'adresse d'un
fournisseur, il faut le faire pour tous les n-uplets concerns
Anomalies d'insertion : Pour ajouter un nouveau fournisseur, il faut
obligatoirement fournir des valeurs pour NumProd et Quantit
Anomalies de suppression : la suppression du produit 104 fait perdre toutes les
informations concernant le fournisseur 902

3.11. Normalisation
!La normalisation est le processus de modification relatif la conception d'une Base
de donnes
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 19 Version non dfinitive
thomas lebarb, MMVIII
!Objectifs de la normalisation :
!Suppression des problmes de mise jour
!Minimisation de l'espace de stockage (limination des redondances)
!Sans perte d'informations

3.12. Dpendance fonctionnelle (DF)

!Soit R(X,Y,Z) une relation o X, Y et Z sont des ensemble d'attributs
ventuellement vides
!Dfinition: Y dpend fonctionnellement de X (X$Y) si c'est toujours la mme
valeur de Y qui est associe X dans la relation R
!Ex: PRODUIT(NumProd, Dsi, PrixUni)
NumProd $Dsi et Dsi $PrixUni

3.13. Proprits des Dpendances fonctionnelles

!Rflexivit : Si Y % X alors X $Y
!Augmentation : si W % Z et X $Y alors X,Z $Y,W
!Transitivit : si X $Y et Y $Z
alors X $Z

(Rgles d'infrences d' Armstrong)
3.14. Proprits complmentaires
!Pseudo-transitivit : Si X $ Y et Y,Z $ W alors X,Z $ W
!Union : Si X $ Y et X $ Z alors X $ Y,Z
!Dcomposition : Si Z % Y et X $ Y alors
X $ Z
!La notation X,Y signifie X & Y

3.15. Exemple de DF

!R(Prof, Codmat, J, H, Salle)
!Un n-uplet (p,m,j,h,s) signifie lenseignant p enseigne la matire m dans la salle s
le jour j lheure h
!Contraintes :
!Une enseignant ne peut se trouver dans deux salles la fois un instant donn :
Prof, J, H $ Salle, Codmat
!Deux cours ne peuvent tre donns simultanment par la mme personne un
instant donn : H, J, Salle $ Prof, Codmat
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 20 Version non dfinitive
thomas lebarb, MMVIII
La connaissance dun enseignant implique la connaissance de la matire enseigne :
Prof $ Codmat (faux si lenseignant peut enseigner plusieurs matires)

3.16. Notions supplmentaires

Df: La clture F
+
dun ensemble F est lensemble de toutes les DF consquences
logiques de F. On obtient la clotre en itrant les rgles darmstrong
Df: Un ensemble dattributs X est une cl minimale ssi X est une cl primaire et si
tout sous-ensemble de X nen est pas une.
3.17. Formes normales
!Les schmas de table possdent des caractristiques particulires appeles formes
en vue de la rduction des redondances
!Les relations sont classes en fonction de leurs proprits vis--vis des DF laide
de la notion de forme normale
!La normalisation dune BBD consiste produire des schmas de table dans une
forme normale
!Plus de degr de normalit est lev, plus les anomalies de mise--jour sont rduites

3.18. Premire forme normale (1FN)

!Df: Une relation est en 1FN si tout attribut nest pas dcomposable
!Un attribut non dcomposable est dit indivisible ou atomique
!Ex: Les relations PERSONNE(Nom, Prnom, Age) et DEPARTEMENT(Nom,
Adresse, Tel) ne sont pas en 1FN si les attributs Prnom et Adresse peuvent tre du
type [Jean, Paul] et [Rue des Quatrans, Caen]

3.19. Deuxime forme normale (2FN)
Df: Une relation est en 2FN si elle est en 1FN et si tout attribut non cl primaire est
dpendant de la cl primaire entire et non pas dun sous ensemble de la cl
Il faut viter la configuration suivante :



Si D nest pas une cl primaire, il ne faut pas que D dpende dune partie de la cl

3.20. 2FN : Normalisation

!La relation COMMANDE_PRODUIT(NumProd,NumFour, Quantit,Ville) nest
pas en 2FN car on a NumProd,NumFour $ Quantit et NumFour $ Ville
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 21 Version non dfinitive
thomas lebarb, MMVIII
!La dcomposition suivante donne deux relations 2FN :
COMMANDE(NumProd,NumFour,Quantit) et FOURNISSEUR(NumFour, Ville)

3.21. Troisime forme normale (3FN)

!Df: Une relation est en 3FN si elle est en 2FN et quil nexiste aucune DF entre
deux attributs non cls primaires
!Il faut viter la configuration suivante :



!Ex: La relation COMPAGNIE(Vol,Avion,Pilote) avec les DF Vol $ Avion et
Avion $ Pilote et Vol $ Pilote est en 2FN mais pas en 3FN

!Anomalies de mise jour sur la relation COMPAGNIE : il nest pas possible
dintroduire un nouvel avion sur un nouveau vol sans prciser le pilote correspondant
!La dcomposition suivante donne deux relations en 3FN qui permet de retrouver
(par transitivit) toutes les DF :
R1(Vol,Avion) et R2(Avion,Pilote)

3.22. Forme normale de Boyce Codd (FNBC)

!Df: Une relation est en FNBC si elle est en 3FN et si tout attribut ne dpend que
des cls minimales du schma
!Chaque partie gauche dune dpendance est une cl
Il faut viter la configuration suivante :


Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 22 Version non dfinitive
thomas lebarb, MMVIII
3.23. TD numro 3
Passage du modle E/A au modle Relationnel
Exercice 1
Nous donnons ci-dessous les instances de deux relations qui pourraient constituer un
fragment dune base de donnes bancaire. Indiquer
a) Les attributs de chaque relation
b) Les n-uplets de chaque relation
c) Les composants dun n-uplet pour chaque relation
d) Le schma pour chacune des relations
e) Le schma de la base
f) Un domaine adquat pour chaque attribut
g) Spcifiez les cls (primaires et trangres)

COMPTE NUM TYPE SOLDE
12345 Courant 12000
23456 Codevi 15000
34567 Courant 5000
27569 PEL 7500

CLIENTS NOM PRENOM NUM-CLIENT NUM
Dupont Marcel 901-222 12345
Durand Ginette 805-333 34567
Martin Jrme 555-644 27569
Durand Ginette 805-333 23456
Exercice 2
Transformez le schma E/A de lexercice 3 du Td numro 1 & 2 en un modle
relationnel.
Exercice 3
Transformez le schma E/A de lexercice 4 du Td numro 1 & 2 en un modle
relationnel.
Exercice 4
Transformez le schma E/A suivant en un modle relationnel
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 23 Version non dfinitive
thomas lebarb, MMVIII





















Maires
Communes
Partis
Politiques
administr
Appartient

jouxte
Sigle
Nom_Commune
Population NInsee_Commune
NINSEE_Mairie
Nom_Mairie
(1,1)
(1,1)
(0,1)
(0,n)
(1,n)
(1,n)
1 :1
1 :n
n:m
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 24 Version non dfinitive
thomas lebarb, MMVIII
3.24. TD numro 4
Dpendances fonctionnelles, Algbre relationnel
Exercice 1
Soit une relation de schma R(A,B,C,D,E) munie des dpendances fonctionnelles
F={B$A ; B$C ;B$D ;B$ACDE}, que pouvez vous-affirmer concernant
lattribut B ?
Exercice 2
Pour une relation nomme Bourse, on a lensemble F des dpendances
fonctionnelles F={NumContrat$Agence ;NumContrat$Client ;
NumContrat$NomProduit ; NomProduit$TypeProduit ;
NomProduit$DurePlacementProduit ;
TypeProduit$DurePlacementProduit}
a) Donner une reprsentation graphique de F (un graphe)
b) Calculer la fermeture transitive F
+
t
de F et augmenter le graphe des relations
obtenues
Exercice 3
Considrons lensemble F={A$B,C ; A$H ; B$H ; C,G$H ;
C,G$I ; A,B$I }, dmontrer que A,G$I en calculant la fermeture de {AG}.
Vous utiliserez lalgorithme suivant qui permet dobtenir tous les attributs dtermins
par un ensemble dattributs X relativement lensemble des dpendances
fonctionnelles F.
Rsultat=X
Tant que rsultat volue
Pour chaque DF Y$Z " F
Si Y % rsultat alors rsultat = rsultat & Z
Exercice 4
Df : La couverture minimale dun ensemble F de DF est lensemble de DF
lmentaires vrifiant les proprits suivantes :
Toute DF lmentaire est dans F
+

Aucune dpendance de F nest redondante
Df : Une DF X$A est lmentaire si A ne dpend pas dun sous-ensemble dattributs
de X cest dire si !/ X ' X/ X$A

Soit lensemble de dpendances fonctionnelles F={A$B ; B,C$D ; D$E ;
A,C$D ; A,C$E}
a) Ces dpendances sont-elles lmentaires ?
b) Y-a-t-il des DF redondantes ?
c) Quelle est la couverture minimale de F ?
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 25 Version non dfinitive
thomas lebarb, MMVIII
Exercice 5
Soit le modle relationnel suivant relatif une base de donnes sur des reprsentations
musicales :
REPRESENTATION(nreprsentation, titre_reprsentation,
lieu)
MUSICIEN(nom, nreprsentation)
PROGRAMMER(date, nreprsentation, tarif)

Vous formulerez en algbre relationnel, les requtes suivantes :
a) Donner la liste des titres des reprsentations
b) Donner la liste des titres reprsentations ayant lieu lopra bastille
c) Donner la liste des noms des musiciens et des titres des reprsentations
auxquelles ils participent
d) Donner la liste des titres des reprsentations, les lieux et les tarifs pour la
journe du 14/09/1996
Exercice 6
Soit le modle relationnel suivant relatif la gestion des tapes de contre la montre du
tour de France :
EQUIPE(CodeEquipe, NomEquipe, DirecteurSportif)
COUREUR(NumroCoureur, NomCoureur, CodeEquipe, CodePays)
PAYS(CodePays, NomPays)
TYPE_ETAPE(CodeType, LibellType)
ETAPE(NumroEtape, DateEtape, VilleDp, VilleArr, NbKm,
CodeType)
PARTICIPER(NumroCoureur, NumroEtape, TempsRalis)
ATTRIBUER_BONIFICATION(NumroEtape, Km, Rang, NbSecondes,
NumroCoureur)

Vous formulerez en algbre relationnel, les requtes suivantes :
a) Quelle est la composition de lquipe Festina (Numro, nom et pays des
coureurs) ?
b) Quels sont les noms des coureurs qui nont pas obtenu de bonifications ?

Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 26 Version non dfinitive
thomas lebarb, MMVIII
3.25. TD numro 5
Formes Normales, Normalisation
Exercice 1
Soit la relation PRETK7(NumCli, NomCli, AdrCli, NumK7, TiK7,
DatePrt)
a) Quelles sont les DF entre les attributs de cette relation ?
b) Quelle est la cl de cette relation ?
c) Est-elle en 1FN ? en 2FN ?
d) Dcomposer PRETK7 en 3 relations en 2FN
Exercice 2
Soit la relation FILM(NExploitation, Titre, Ralisateur) et les
dpendances fonctionnelles
F={ NExploitation$Titre ; Titre$Ralisateur }
a) Sous quelles formes normales se trouve cette relation ?
b) Proposez une dcomposition en 3FN qui conserve les DF
Exercice 3
Algorithme de dcomposition en 3FN :
1) Rechercher une couverture minimale G de D
2) Partitionner G en groupes de dpendances G
i
ayant mme partie gauche
3) Fusionner les groupes G
i
possdant des parties gauches X
i
et X
j
quivalentes,
cest dire ceux pour lesquels on a X
i
$X
j
et X
j
$X
i
avec X
i
"G
i
et X
j
"G
j

4) Associer chaque groupe G
i
un schma R
i
=<U
i
, D
i
>. Autrement dit,
construire une relation R
i
pour chaque G
i
dont la cl est la partie gauche des DF
de D
i
et les constituants non cls est la partie droite des DF de D
i

5) Si aucun schma ne contient une cl K de R, crer un schma supplmentaire
<K,(>

On considre la relation R(A,B,C) avec lensemble des DF F={A$B ; B$C }
a) Quelles est la cl primaire de R ?
b) Quelles est sa Forme Normale ?
c) Proposer une dcomposition 3FN de R sans perte dinformations
Exercice 4
Soit la relation R(A, B ,C, D ,E, F) munie des dpendances fonctionnelles
suivantes
F={A$B ; B$A ; A$F ; A,C$D ; C$E ;}
Normalisez la relation en 3FN.

Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 27 Version non dfinitive
thomas lebarb, MMVIII



3.26. TP Numro 1
INITITIATION A ACCESS OBJETS MANUIPULES
CREATION DE TABLES ET DE FORMULAIRES

" Pour lancer ACCESS : ouvrir le menu Dmarrer # Programmes #Microsoft
Office puis slectionner Microsoft Access
SE REPERER DANS ACCESS



1. Barre de titre 2. Barre de menu 3. Barre doutils Base de
donnes
4. Fentre dune base de
donnes
5. Barre dtat
SE REPERER DANS LA BARRE DOUTILS Base de donnes
Cette barre permet dactiver les commandes les plus utilises sans avoir passer par
le menu (elle prsente des raccourcis). Pour connatre la signification dun bouton, il
suffit de placer le pointeur de la souris dessus et dattendre. Une info-bulle
apparat alors, donnant une brve description. Une explication plus longue saffiche
aussi dans la barre dtat.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
" Donnez la signification des 18 boutons de la barre doutils Base de donnes .
2
4
5
3
1
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 28 Version non dfinitive
thomas lebarb, MMVIII
1- 7- 13-
2- 8- 14-
3- 9- 15-
4- 10- 16-
5- 11- 17-
6- 12- 18-

Remarque : Contrairement Word, le bouton Annuler nest pas une liste
droulante ; ils ne peut agir que sur la dernire action effectue.
SE REPERER DANS LA VISUALISATION DUNE BASE DE
DONNEES


Cette fentre (qui nest active que lors de ldition dune BDD) permet la
visualisation du contenu dune base de donnes. Elle est divise en trois parties : une
barre de menu (1), un menu de slection (2) et une zone de visualisation (3).
OBJETS MANIPULES
ACCESS est un SGBD relationnel qui permet dorganiser, de grer et dexploiter des
donnes enregistres dans des tables grce au maintien de relations entre les
tables. Ces notions sont directement lies celle de base de donnes relationnelle.
Rappelons quelques dfinitions :
La base de donnes : Cest lensemble des tables utilises pour grer linformation
La table : Cest un objet qui stocke les donnes dans des lignes (enregistrements) et
des colonnes (champs).
Le champ (ou colonne) : Cest lunit dinformation dans une table. Une table est
constitue de diffrents champs. Chaque champ dune table porte un nom diffrent ;
Attention, certains SGBDR nadmettent pas despaces dans les noms de champs.
3
1
2
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 29 Version non dfinitive
thomas lebarb, MMVIII
Lenregistrement (ou la ligne) : Cest lensemble des donnes relatives la mme
information.
Cl primaire : Cest un champ didentification qui permet didentifier de faon
unique chaque enregistrement. Cela permet de retrouver de faon non quivoque
nimporte quel enregistrement dans une table. Il vaut mieux utiliser un seul champ et
non une combinaison de champs pour raliser une cl primaire car ce genre de cl
complexe est difficile maintenir, prend plus de place dans la base de donnes et
fonctionne mal dans ACCESS.
Un SGBDR tel quACCESS manipule et gre les donnes grce plusieurs objets :
les tables, les formulaires, les requtes et les tats.
Les tables constituent toujours le cur des bases de donnes ACCESS. Les
formulaires, requtes et les tats peuvent se rapporter des tables et ont pour rle de
traiter, de complter, dafficher ou dimprimer les donnes enregistres.
Un formulaire dpend des donnes dune ou plusieurs tables ou requtes.
Normalement, on utilise les formulaires pour saisir des donnes dans une table. Cest
un objet utilis pour la saisie, la modification et laffichage des enregistrements dune
table.
Une requte se base sur des tables ou dautres requtes. Cest un objet utilis pour
poser des questions partir dun jeu de critres sur des donnes stockes dans une ou
plusieurs tables. Les donnes extraites des requtes sont mises jour lors de chaque
nouvelle excution de la requte.
Un tat se rapporte des tables ou des requtes. Il ne sert pas au traitement des
donnes, mais leur reprsentation. Il permet de calculer des valeurs de plusieurs
faons diffrentes. Il est impossible de modifier les donnes dun tat. Cest un objet
utilis pour limpression personnalise denregistrements dune ou plusieurs tables ou
requtes.
Les relations entre les objets sont reprsentes de manire simplifie sur limage
suivante.
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 30 Version non dfinitive
thomas lebarb, MMVIII

ETAPES DE MISE EN UVRE SOUS ACCESS
La cration et la gestion dune base de donnes sous ACCESS se fait en plusieurs
tapes :
1. Cration dune nouvelle base de donnes (lextension est automatiquement
.MDB)
2. Cration des tables en indiquant le format de chaque champ
3. Cration des relations entre les tables
4. Cration des formulaires de saisie
5. Cration de requtes pour interroger la base de donnes
6. Cration dtats pour faire le point sur le contenu de la BDD
CREATION DUNE NOUVELLE BASE DE DONNEES
" Dmarrez lapplication MICROSOFT ACCESS
" Demandez la cration dune nouvelle base de donnes sans utiliser lassistant
" Enregistrez la BDD sous le nom NomPrnom_TP1.mdb dans le rpertoire
c:\Temp si vous ntes pas en rseau sinon dans votre compte rseau.
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 31 Version non dfinitive
thomas lebarb, MMVIII
Cration des tables Auteurs, Editeurs et Livres
Dfinition des tables



Cration des tables
" Pour crer une nouvelle table, dans longlet Table , demandez crer une
nouvelle table (bouton Nouveau) en utilisant le mode (Mode Cration)
" Pour chacune des tables, remplissez la colonne Nom du Champ avec les noms
des champs des tables. Vous dfinirez comme cl primaire les champs AuID, PubID
et ISBN en cliquant avec le bouton droit de la souris sur la ligne.
" Dans la colonne Type de donnes , choisissez un format compatible avec les
donnes stocker. Pour les champs AuID et PubID, vous choisirez un type
NumeroAuto pour crer une numrotation automatique. Pour le champ ISBN vous
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 32 Version non dfinitive
thomas lebarb, MMVIII
prendrez un type texte. Dans longlet gnral situ en bas de la fentre, choisissez
quand cest possible un masque de saisie (pour les tlphones, le code postal, la date
de naissance, le n ISBN). Dfinissez galement les proprits des champs quand
cest possible.
" Identifiez rapidement les options de type de donnes ainsi que les proprits des
champs
Les listes de choix
Nous avons vu prcdemment que parmi les types de donnes est propos un type de
donnes particulier : la liste de choix. Ce nest pas un type proprement parler, cest
un moyen de simplifier la saisie des donnes dans une table en proposant
lutilisateur de cliquer sur un lment propos dans une liste. Le champ de la table
sera rempli avec llment slectionn dans la liste.
Le champ AuTitre de la table Auteurs
" Dans la table Auteurs, on dispose dun champ AuTitre qui donne le statut de
lauteur parmi Monsieur, Madame, Mademoiselle. Nous allons retourner dans la table
Auteurs et modifier le type de donnes du champ AuTitre qui contenir le titre du
client. Au lieu de saisir chaque fois le mot en entier, nous allons crer une liste de
choix qui proposera ces trois titres et il suffira de cliquer sur lun dentre eux pour
remplir automatiquement le champ.
" Ouvrez la table Auteurs en modification et choisissez une liste de choix,
slectionnez parmi les valeurs choisies que vous rentrerez comme tant les trois
valeurs du titre. Donnez ensuite ltiquette AuTitre votre liste de choix.
" Ouvrez la table Auteurs en dition et saisissez les donnes de la table en utilisant
la liste de choix.
Le champ PubID de la table Livres
"Saisissez les donnes de la table Editeurs
" Un livre contient le numro de lditeur qui publie le livre. Lorsque lon a saisi un
livre et que lon a le nom de lditeur, il faut se souvenir de son numro pour le taper.
Une autre faon plus performante de faire consiste insrer dans la table Livres
une liste de choix qui prend ses valeurs dans la table Editeurs . La liste de choix va
proposer la liste de tous les diteurs se trouvant dans la table Editeurs , il suffira de
cliquer sur le nom de lun dentre eux pour que son numro soit automatiquement
entr dans le champ PubID de la table Auteurs
" Ouvrez la table Livres et choisissez Liste de choix pour le champ PubID,
demandez rcuprer les donnes de la table Editeurs
" Parmi les champs proposs, choisissez les champs PubID et PubNom.
" Vous choisissez la largeur des colonnes et ltape suivante, on vous demande ce
que vous voulez faire du rsultat provenant de la liste droulante. Vous devez
demander stocker le rsultat provenant du champ PubID, cest dire la cl primaire
de la table Editeurs qui devient donc une cl trangre de la table Livres .
" Saisissez les donnes de la table Livres en utilisant la liste de choix
Ajout de nouveaux enregistrements

Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 33 Version non dfinitive
thomas lebarb, MMVIII
" Pour se dplacer
parmi les
enregistrements de la
table, on utilise les
icnes flchs en bas
gauche de la fentre de
saisie
" Visualisez le
contenu de la table
Auteurs laide des
icnes flchs de
navigation


" Cachez la colonne AuObservations grce loption Afficher les colonnes du Menu Format .
Cela fait juste disparatre le champ de laffichage pour la saisie mais ne le supprime pas de la table.
Rendez ensuite la colonne nouveau visible.
" On peut galement "figer" une colonne : Figez la colonne du numro didentifiant dun auteur. Cela
sert avoir en permanence le numro de lauteur. Cela se fait par Figer les colonnes dans le Menu
Format . Ainsi le numro de lauteur sera toujours visible mme en dplaant lascenseur.
Tri et Filtrage
Pour trier la table sur un champ, on se positionne sur le champ en question et on utilise un des deux
icnes de la barre doutils qui apparat lorsque lon dite une table en ajout denregistrements :
.
" Triez la table Auteurs par ordre alphabtique sur le champ AuNom.

Les filtres permettent de limiter de faon temporaire les enregistrements affichs dans la table. On peut
filtrer sur un critre (un champ), il suffit de slectionner la valeur du champ et de cliquer sur .
Pour faire rapparatre tous les enregistrements, on clique sur .
" Filtrez la table Auteurs sur la ville de Caen
Pour filtrer sur plusieurs critres, on clique sur licne et un enregistrement vide
saffiche. Slectionnez les livres de la table Livres qui valent 25,00F et qui sont
dits par lditeur BigHouse. En cliquant sur longlet OU qui se trouve en bas de
la dfinition du filtre, on peut dfinir les critres dune deuxime condition. Nous
voulons maintenant les livres de la table Livres qui valent 25,00F qui sont dits
par lditeur BigHouse ou les livres en couleur dits par Alpha Press . Pour
obtenir le rsultat du filtre on clique sur licne .
Pour rechercher des enregistrements, on utilise licne : cherchez lauteur
Snoopy dans la table Auteurs
Cration des relations entre les tables
Nous allons maintenant relier les tables entre elles en respectant le schma obtenu
aprs la phase danalyse et conception qui nous a fourni le schma E/A suivant. Dans
ACCESS on ne peut implanter que des relations de type un un (1:1) et un plusieurs
(1:n). Il sera vu en cours et TD comment passer du modle E/A au modle relationnel
en transformant les relations et entits.
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 34 Version non dfinitive
thomas lebarb, MMVIII


Les relations de type 1:n entranent lajout de la cl primaire de lentit de plus grande
cardinalit celle de plus petite (ici PubID doit donc faire partie de la table
Livres ). Les relations de type plusieurs plusieurs ne peutventse faire comme
pour les relation un un car cela va encombrer la base de donnes dinformations
redondantes. Lapproche correcte pour tablir une relation de type plusieurs
plusieurs consiste ajouter un nouveau schma de table, de manire scinder la
relation en deux relations de type un plusieurs. Dans notre cas on ajoutera un
schma de table Livre/Auteur dont les attributs seront constitues des cls
trangres ISBN et AuID.



" Pour visualiser les liens entre les tables, il suffit de cliquer sur ou de faire
Outils ! Relations. Le lien entre les tables Livres et Editeurs existe dj, il
a t cr automatiquement lors de la cration de la liste de choix associe PubID de
la table Livres qui met les deux tables en relation. Les cls primaires des tables
apparaissent en gras.
" Crez la table Livre/Auteur avec les types numrique et texte pour chacun des
attributs AuID et ISBN sans spcifier une quelconque liste de choix.
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 35 Version non dfinitive
thomas lebarb, MMVIII


" Liez les deux tables Livres et Livre/Auteur la souris en effectuant une relation
entre le champ ISBN de chacune des deux tables. Ne cochez pas pour linstant
loption appliquer lintgrit rfrentielle . Cela aura pour effet de crer le lien
entre les tables. Fermez la fentre Relations en enregistrant les modifications.
" Notez dans la table Livre/Auteur un numro ISBN inexistant dans la table
Livres : ce numro dISBN nexiste pas et la rfrence est boiteuse. Fermez la
table et enregistrez la. Normalement ACCESS ne doit pas vous alerter.

" Nous allons corriger le lien existant entre les tables Livres et Livre/Auteur
afin quil respecte lintgrit rfrentielle. Modifiez le lien existant entre les tables
Livres et Livre/Auteur (clic droit sur le lien puis Modifier une relation ) et
cochez loption appliquer lintgrit rfrentielle : vous devriez obtenir un message
derreur indiquant que votre action est illgale. Lintgrit rfrentielle est
lobligation que chaque valeur de la cl trangre soit une valeur existante de la cl
primaire associe : il faut sassurer que lorsque lon associe deux tables par
lintermdiaire dune cl primaire, cela garanti le bon fonctionnement de la BDD.
" Supprimez de la table Livre/Auteur la rfrence boiteuse puis modifiez la table
Livre/Auteur pour avoir deux listes de choix pour chacun des attributs AuID et
ISBN. Cela aura pour effet de crer les liens entre les tables, modifiez les pour quils
assurent lintgrit rfrentielle.
" Finalement, Les relations que vous devrez obtenir dans ACCESS sont les
suivantes :

Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 36 Version non dfinitive
thomas lebarb, MMVIII


Cration de formulaires
Un formulaire va nous permettre dafficher et de modifier le contenu dune table de
faon bien plus agrable que le mode feuille de donnes qui ne permet quun
affichage en lignes et en colonnes. De plus ce dernier mode ne permet laffichage et la
modification dinformations ne provenant que dune seule table, le formulaire va nous
permettre de manipuler au mme endroit des informations provenant de plusieurs
tables.
" Nous allons crer le formulaire associ la table Auteurs . Pour crer un
formulaire, on clique sur longlet Formulaire puis on utilise lassistant.
" Slectionnez tous les attributs de la relation sauf AuObservations, prenez une
prsentation en colonne simple avec un style industriel. Appelez le formulaire
Formulaire Auteurs .
" Passez en mode modification du
formulaire, une bote outils contenant des
contrles insrer dans le formulaire
apparat. Identifiez chacun des contrles.
" Modifiez ensuite le formulaire pour
rajouter une zone de texte dintitul
AuObservations puis laide dun clic droit
de la souris et Proprits , prcisez
lattribut source du contrle
(AuObservations) et prcisez que le contrle
possde une barre verticale.
" Insrez ensuite une image sur la droite du
formulaire.



" Fermez le formulaire et double-cliquez dessus : le formulaire est affich en mode
saisie/affichage de la base de donnes. Pour se dplacer parmi les enregistrements du
formulaire, on utilise les icnes flchs en bas du formulaire.
Les sous-formulaires
Lun des intrts des formulaires est quils permettent laffichage et la modification
dinformations ne provenant pas que dune seule table. Nous allons rajouter au
formulaire que nous venons de crer un sous-formulaire qui affichera des donnes
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 37 Version non dfinitive
thomas lebarb, MMVIII
provenant dune autre table. Grce au contrle sous formulaire , nous allons donc
pouvoir afficher des formulaires imbriqus dans dautres.
" Dans notre cas, il serait intressant davoir tous les livres crits par chaque auteur
sur chaque formulaire. Modifiez le formulaire Formulaire Auteurs et ajoutez sous
la zone de texte un contrle de sous-formulaire. Choisissez la table Livre/Auteur et
slectionnez tous les champs ( savoir ISBN et AuID), puis ajoutez les champs Titre et
Prix de la table Livres . Il reste ensuite prciser quels champs faisant le lien entre
le formulaire et le sous-formulaire seront affichs : choisissez les champs vous-mme
et prcisez que le lien se fait par le champ AuID (cest lidentifiant de lauteur qui sert
faire la relation avec les autres tables). Verrouillez enfin les donnes du sous-
formulaire.
" Visualisez le rsultat en utilisant le formulaire, pouvez vous modifier des valeurs
du sous-formulaire ?





Conservez bien votre fichier pour pouvoir le rutiliser au prochain TP !


Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 38 Version non dfinitive
thomas lebarb, MMVIII



3.27. TP Numro 2
CREATION DINDEX CREATION DE
REQUETES CREATION DETATS

Complment au TP numro 1
Tout dabord nous allons rajouter la table Catgories qui donnera pour chaque
livre sa catgorie. Pour cela, vous devrez rajouter un champ nomm CatID dont la
saisie se fera par une liste de choix. La relation qui existe entre les tables Livres et
Catgories est de type un plusieurs et assure lintgrit rfrentielle.



Vous respecterez le contenu de la table Catgories et remplirez votre gr le
nouveau champ ajout la table Livres .
Les index
Comme les accs disque sont lents, il est ncessaire dutiliser un fichier dindex qui
va fournir un accs direct aux donnes dans un fichier de base de donnes. Pour
optimiser les temps de recherche dans les tables, ACCESS (et dailleurs tous les
SGBD) a besoin dindex. Lindex permet ACCESS de retrouver plus rapidement
les enregistrements concerns ; il acclre aussi les oprations de tri.
Les index fonctionnent avec une table comme la table des matires avec un livre.
Lorsquon indexe sur un champ, ACCESS stocke hors de la table les valeurs de ce
champ. Lorsque lon effectue une recherche sur ce champ, plutt que de le chercher
dans la table, ACCESS va faire sa recherche dans lindex. Une fois quil aura trouv,
il affichera le contenu de lenregistrement associ cet index.
Supposons que la table Auteurs soit indexe sur le nom de lauteur, lorsque lon
cherchera un enregistrement de la table partir de lauteur, ACCESS parcourra
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 39 Version non dfinitive
thomas lebarb, MMVIII
lindex et affichera lenregistrement correspondant lindex quil aura trouv. Un
index peut tre constitu de plusieurs champs, cela acclrerait les recherches et les
tris, mais ralentirait toutes les mises jour car chaque modification dun champ
index dans la table, il faut le modifier dans lindex.
" Pour voir les index dune table donne, ouvrez la table dans le mode cration et
choisissez Index depuis le menu Affichage ou bien cliquez sur le bouton . Pour
ajouter un index sur plus dun attribut, vous devez entrer les divers attributs sur les
lignes successives de la boite de dialogue Index.
" Ajoutez un index PubTitre bas sur les attributs PubID et Titre pour la table
Livres . Cet index effectue lindexation des entits LIVRES dabord par PubID et
ensuite par Titre.



Les requtes
Les requtes vont servir afficher uniquement certaines donnes contenues dans les
tables selon certains critres. Elles peuvent aussi faire des calculs sur vos donnes,
ainsi que crer des sources de donnes pour les formulaires, les tats ou mme
dautres requtes. Elles servent encore modifier des tables existantes ou en crer
des nouvelles.
Il existe diffrents types de requtes que nous allons dtailler aprs :
La requte slection
La requte danalyse croise
La requte action
Les requtes slection
" Pour crer une requte, cliquez sur longlet Requtes puis sur le bouton
Crer une requte en mode cration . ACCESS nous affiche la liste des tables de
la base. Nous choisissons ici les tables sur lesquelles vont porter la requte. Prenons la
requte Liste des auteurs habitant la ville de Caen . Le requte va donc porter sur
la table Auteurs , on lajoute et on ferme. Faites en sorte davoir une requte qui
affiche le titre, et le nom de tous les auteurs habitant Caen.

Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 40 Version non dfinitive
thomas lebarb, MMVIII

" Nommez cette requte RequeteVille et Double-cliquez sur licne de votre
requte pour voir le rsultat.
" Recommencez les oprations prcdentes pour crer une requte (nomme
RequteLivres ) qui affiche lISBN, le Titre et le Prix dun livre. Pour excuter la
requte en mode cration, on clique sur licne .
" Donnez la signification de chacune des lignes de dfinition de la requte
Les critres de slection
Dans les requtes de slection , on peut utiliser les oprateurs =, <>, <, >, <=, >=,
qui correspondent respectivement gal, diffrent, infrieur, suprieur, infrieur ou
gal, suprieur ou gal. Mais on peut galement utiliser Entre, Dans, Pas.
" Crez les requtes suivantes :
Affichez par ordre dcroissant de Prix, le Titre et PubID des livres dont le prix
est entre 0 et 25 FR et dont lditeur nest pas le numro 1 (nomme
RequteSelection1 )
Affichez les numros de tlphone et le nom de toutes les femmes maris
habitant Saint-L et nes entre le 01 Janvier 80 et le 01 Janvier 99 (nomme
RequteSelection2 )
Affichez les livres dont le numro ISBN commence par 1 et qui sont en
couleur (nomme RequteSelection3 )
On peut utiliser des fonctions dans les critres de slection. ACCESS met notre
disposition un trs grand nombre de fonctions qui sont galement utilises dans les
contrles des formulaires.
" A laide de la fonction Mois(), crez une requte (nomme RequteSelection4 )
qui affiche le nom des auteurs ns au mois de dcembre. Vous pouvez utiliser le
gnrateur dexpression en cliquant sur le bouton .
Les critres de slection que nous avons dfini peuvent tre multi-champs, ces
champs tant spars entre eux par des ET. On peut utiliser un critre de type OU
pour les requtes de la forme Liste des auteurs habitant Paris ou Cherbourg .
Les deux critres sont lun sur la ligne critres et lautre sur la ligne OU .
" Crez une requte qui affiche les noms des auteurs habitant Paris ou Cherbourg
(nomme RequteSelection5 ), et une autre requte affichant les titres des livres
dont le prix est entre 0 et 25 FR ou entre 50 et 500 FR (nomme
RequteSelection6 ).

Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 41 Version non dfinitive
thomas lebarb, MMVIII
Lorsque vous excutez une requte, vous pouvez faire en sorte quune boite de
dialogue saffiche pour demander le critre a appliquer. Cette dmarche consiste
modifier le contenu de la ligne Critres de la requte et placer la question entre
crochets. Cela va nous servir rpondre aux requtes du type Liste des clients qui
habitent dans une ville donne , mais quon veuille entrer nous mme la ville.
" Modifiez la requte RequeteVille en tapant dans la ligne Critres le texte
suivant =[Entrez la ville]. Enregistrez la requte, excutez la, entrez le nom dune
ville et constatez le rsultat de votre action.
" Crez une requte (nomme RequteSelection7 ) qui va afficher le titre, le
numro ISBN et lditeur des livres (le champ PubID) pour un prix donn, ces livres
devant ne pas tre en couleur.
" Crez la requte (nomme RequteSelection8 ) pour faire Affichez les livres
dont le numro ISBN commence par un nombre donn et qui sont en couleur : le
numro par lequel commence lISBN sera prcis par lutilisateur.

Pour linstant, nos requtes ne portaient que sur une seule table, il est possible de faire
des requtes qui portent sur plusieurs tables simultanment. Dans ce cas, les requtes
peuvent tre trs complexes. Par exemple, nous voulons la liste des auteurs ayant un
diteur donn pour leurs livres et dont ces livres sont en couleur.
" Crez une nouvelle requte (nomme RequteMultitable1 )et choisissez toutes
les tables entrant en jeu pour faire cette requte. Le nom de lditeur devra tre saisi
par lutilisateur. Le bouton est utile pour afficher la liste des tables de la base.
Attention : lorsque lon fait une requte portant sur plusieurs tables, il faut respecter
deux rgles :
Toutes les tables doivent tre relies entre elles.
Il ne doit pas y avoir de tables inutiles

Vous devriez obtenir une requte ressemblant ce qui suit et vous pouvez remarquer
que, une fois les bonnes tables installes, la requte est fort simple.


Les requtes de regroupement
Jusqu prsent nos requtes nous permettaient de rpondre des questions du type :
Liste des auteurs habitant Paris , Liste des livres crits par lauteur n1 . Grce
aux fonctions de regroupement, nous allons pouvoir rpondre des questions du
type : Combien dauteurs habitent Paris ou Montant total des prix des livres par
auteur .
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 42 Version non dfinitive
thomas lebarb, MMVIII
" Pour crer ces deux dernires requtes, nous allons utiliser le bouton . En
cliquant dessus, une nouvelle ligne Oprations apparat dans la requte, cest
grce elle que nous allons faire nos oprations. Pour obtenir le nombre dauteurs qui
habitent Paris, vous utiliserez les deux champs AuID et AuVille. Sur la ligne
Oprations , vous prendrez lopration compte et lopration o l o il y a
un critre de slection (AuVille gal Paris). Le rsultat de la requte doit tre un
unique champ non modifiable, la requte est nomme RequteRegroupement1 .
" Pour la deuxime requte, on veut par auteur, le montant total des prix de ses livres. A partir du
moment ou lon veut un rsultat par catgorie, il y a regroupement et cest lopration choisie. La
requte devra afficher le nom de lauteur et ce champ devra donc tre slectionn. Trouvez quelle
opration utiliser pour avoir une rponse correcte la requte, la requte est nomme
RequteRegroupement2 .
" Crez une requte (nomme RequteRegroupement3 ) qui donne le nombre de livres dits pour
chaque diteur et une requte (nomme RequteRegroupement4 ) qui donne le nombre dauteurs
diffrents pour chaque diteur.
Les requtes danalyse croise
Les requtes danalyse croise permettent de rpondre des questions du type Qui a
crit combien de quoi ? . Elles retournent le rsultat sous forme dun tableau
comportant des champs en abscisse et en ordonne.
Exemple : Qui a crit combien de livres de telle catgorie ?


Qui Qui
Quoi Combien Combien
Quoi Combien Combien
Len-tte Qui va contenir le nom des auteurs, len-tte Quoi va contenir la liste des catgories et
Combien va donner, pour chaque auteur, le nombre de livres crit dans la catgorie.
" Crez une requte standard qui donne le nom des auteurs et le code dune
catgorie (AuID et CatID des deux tables Auteurs et Catgories ). Transformez
la requte en requte danalyse croise en allant dans le menu requte. Dans la ligne
analyse, indiquez quel sera len-tte des colonnes, des lignes et rajoutez un champ qui
donnera le nombre des livres de chaque catgorie. La requte sera nomme
RequteAnalyseCroise1 .
" Crez la requte danalyse croise permettant de rpondre combien chaque
auteur a-t-il crit de livres chez chaque diteur ?. La requte sera nomme
RequteAnalyseCroise2 .
Les requtes dAction
Les requtes faites jusqu prsent se contentent de retourner le rsultat dune
slection sous forme de table. Les requtes Action vont permettre de crer des tables
partir du rsultat dun requte, ajouter des enregistrement une table partir du
rsultat dune requte, mettre jour une table, supprimer des enregistrements. Lors de
la cration dune requte, vous pouvez utiliser le bouton qui se trouve
gauche sur la barre doutils Base de donnes . Il permet de vrifier le rsultat dune
requte.
Les requtes cration
Une requte Cration cre une table partir des rsultats quelle produit.
" Crez la requte RequteLivres2 base sur la requte RequteLivres
comme une requte Cration par le menu Requte ! Requte Cration de Table.
Appelez la nouvelle table Livres2 et essayez la requte ainsi modifie.
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 43 Version non dfinitive
thomas lebarb, MMVIII
Les requtes Ajout
Une requte Ajout copie tout ou une partie des enregistrements dune table la fin
dune autre.
" Crez la requte RequteLivres3 (identique RequteLivres ) en la
transformant en une requte Ajout (menu Requte ! Requte Ajout) et slectionnez
la table Livres2 comme table cible. Rajoutez le critre que seuls les livres couleur
devront tre ajouts la base. Excutez votre requte et vrifiez que cela a bien
fonctionn.
Les requtes de Mise jour
Les requtes de mise jour permettent de modifier rapidement tous les
enregistrements dune table ou un groupe dentre eux.
" On veut augmenter de 10% le prix actuel des livres dont le prix est infrieur
30Fr. Crez une requte de mise jour (requte RequteMiseAjour )qui va
augmenter de 10% le prix des livres prsents dans la table Livres2 . Dans la case
Mise jour on prcise laugmentation de 10% soit : [Prix]*1.1 ceci pour les produits
dont le prix est infrieur 30Fr (critre). Excutez votre requte et vrifiez que cela a
bien fonctionn.
Les requtes Suppression
Les requtes Suppression permettent de supprimer un groupe denregistrements qui
rpondent un critre donn. " On veut supprimer tous les livres de la table
Livres2 dont le prix est compris entre 0 et 30 FR, la requte sera nomme
RequteSuppression et sera cre grce au menu Requte ! RequteSuppression.
Les tats
Les tats vont permettre limpression denregistrements selon une prsentation qui
aura t dfinie au pralable. La cration dun tat ressemble celle dun formulaire.
Compar un formulaire, un tat met votre disposition plus de possibilits
dagencement et de prsentation des donnes selon vos besoins.
Cration dun tat simple
Pour crer rapidement des tats, on utilise les tats instantans colonnes et tableau
obtenus laide du bouton Nouveau.
" Crez deux tats diffrents (colonne et tableau) pour la table Auteurs , analysez
les diffrences entre chacun dentre eux (place du titre de la table, des noms de
champs, des enregistrements).
Les deux prcdentes mthodes tant trop restrictives, nous allons crer un tat
partir de lassistant. Comme prcdemment, on choisit partir de quelle table va tre
cr ltat, puis on slectionne les champs que lon veut voir apparatre dans ltat.
" Crez un tat laide de lassistant pour afficher tous les champs de la table
Auteurs (sauf AuObservations) en utilisant un premier regroupement selon la ville
puis sur le titre. Un regroupement signifie que, dans ltat qui va tre gnr,
ACCESS va afficher dabord le nom de la ville avec tous les auteurs habitant cette
ville puis la ville suivante etc. Les noms seront tris par ordre croissant. Vous
choisirez le modle et le style par dfaut de ltat. Vrifiez finalement que ltat
obtenu correspond bien aux spcifications demandes.
" On peut galement crer un tat partir dune requte. Crez un tat avec les
mmes spcifications que prcdemment mais avec le rsultat dune requte qui
permet dafficher uniquement les champs AuTitre, AuNom, AuTel et AuVille.
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 44 Version non dfinitive
thomas lebarb, MMVIII
Cration dun tat avec plusieurs tables
Jusqu prsent, nos tats naffichaient que le contenu dun table, nous allons crer un
tat qui affiche la liste des auteurs avec, pour chaque auteur, la liste des livres quil a
crit.
" Utilisez lassistant pour crer un tat en slectionnant les champs appropris
provenant des tables Auteurs et Livres . ACCESS saperoit qu un auteur
peut correspondre plusieurs livres et propose donc de gnrer un tat qui va soit
afficher tous les auteurs avec pour chaque auteur les livres crits ou bien tous les
livres avec pour chaque livre lauteur qui la crit. Choisissez de regrouper par auteur
puis par prix, les titres des livres tant tris par ordre alphabtique.
Modifier la structure dun tat
A prsent, nous allons modifier ltat prcdent pour avoir, pour chaque auteur, une
ligne qui va indiquer combien il a crit de livres. Ouvrez ltat en modification, vous
pouvez constater quil est compos de plusieurs parties :
En-tte de ltat : imprim une seule fois au dbut de ltat
En-tte de page : imprim au dbut de chaque page
En-tte de groupe : imprim au dbut de chaque groupe (les auteurs)
Le dtail : chaque ligne de ltat (les livres)
Le pied de page : imprim chaque fin de page
Le pied dtat : imprim chaque fin dtat
On va afficher le nombre de livres crits dans le pied de groupe auteur : la fin dun
auteur, on affiche le nombre de livres quil a crit. Cliquez sur pour afficher le
pied de groupe Auteurs Slectionnez Oui pour afficher un pied de groupe. Dans le
pied de groupe Auteurs, ajoutez un contrle Zone de texte qui va nous permettre
dafficher le rsultat dun calcul (le calcul du nombre de livres crits). Ajoutez
=compte(ISBN) comme source du contrle, le texte doit se changer =compte([ISBN]),
ce qui atteste que le nom du champ ISBN a t reconnu. Vrifiez finalement que ltat
affiche bien la valeur escompte.

Remarque : Insrer des formules dans le zones En-tte ou pied dtat permet
deffectuer des calculs sur lensemble des lments prsents.



" Dterminez les oprations effectuer pour que lon voit safficher pour chaque
livre, le prix TTC (5,5% de majoration). Faites galement safficher le nombre total
de livres affich pour ltat.

" Crez une requte qui va prsenter un tat semblable celui de la page suivante.
En-tte dtat
Pied dtat
En-tte de page
Pied de page
En-tte de groupe (Auteur)
Pied de groupe (Auteur)
En-tte de groupe (Auteur)
Pied de groupe (Auteur)
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 45 Version non dfinitive
thomas lebarb, MMVIII


Conservez bien votre fichier pour pouvoir le rutiliser au prochain TP !

Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 46 Version non dfinitive
thomas lebarb, MMVIII



3.28. TP Numro 3
CREATION DE MACROS ALGEBRE
RELATIONNEL EXERCICE RECAPITULATIF

Les Macros
Une macro permet dautomatiser certaines tches dACCESS, elle peut excuter une
srie de commandes qui auraient du tre faites par lutilisateur. Une macro est
compose dactions, chaque action correspond une tche. Certaines de ces actions
plus complexes vous permettent dafficher des boites de dialogue, de tester la rponse
fournie par lutilisateur. La mthode de cration dune macro est lie deux facteurs
importants :
Lenvironnement de dpart de la macro : certaines macros sont lies un objet
de la base de donne, dautres peuvent tre excutes quelle que soit la fentre
active,
Lvnement qui va dclencher lexcution de la macro : un clic sur un
bouton, louverture dun formulaire, la valeur dun contrle etc.
Cration dune macro autonome
Une macro autonome nest pas lie un vnement spcifique et peut tre excute
quelle que soit la fentre active. Nous allons crer une macro qui va ouvrir la table
Auteurs et son formulaire.
" Dans la fentre principale dACCESS, cliquez sur longlet Macro puis sur
Nouveau. La partie suprieure de la fentre (le tableau) est destine aux diffrentes
actions qui vont composer la macro. La plupart des actions ont des paramtres (par
exemple laction OuvrirTable qui ouvre une table et demande en paramtre le nom de
la table ouvrir). La partie infrieure de la fentre sert indiquer les paramtres.
" Il existe un trs grand nombre dactions possibles, Utilisez laide pour avoir la
description de chacune des actions possibles. Choisissez dans le menu droulant
laction que lon veut faire excuter : ici nous voulons ouvrir une table, nous
choisissons laction OuvrirTable .
" Comme vous pouvez le constater, dans le champ NomTable apparaissent les
noms de toutes les tables de la base, on choisit Auteurs . Affichage et Mode
donnes servent respectivement dterminer le mode daffichage de la table (cration
ou dition) ainsi que le mode de saisie des donnes de la table (ajout, modification,
lecture seule). Choisissez feuille de donnes et Lecture Seule.
Le tableau de la fentre Macros contient plusieurs lignes, on peut excuter
plusieurs actions les unes la suite des autres dans la mme macro.
" Maintenant, aprs avoir ouvert notre table Auteurs , nous allons ouvrir le
formulaire associ cette table. Choisissez laction OuvrirFormulaire avec le
formulaire associ la table (ralis au TP n1).
" Enregistrez votre macro sous le nom MacroAutonome1 , comme pour les
requtes, cliquez sur licne point dexclamation, ACCESS excutera toutes les
lignes de la macro.

" Nous allons rajouter une troisime action la macro : afficher une bote de
dialogue pour signaler la fin de lexcution de la macro. Choisissez laction
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 47 Version non dfinitive
thomas lebarb, MMVIII
BoteMsg avec Bip, information et Fin de la macro comme titre et message.
Excutez nouveau la macro afin de vrifier que la bote de dialogue saffiche
correctement.
Excuter la macro pas pas
Pour analyser le droulement dune macro, on peut lexcuter pas pas, cest--dire, action aprs
action. Pour cela il faut
1. Ouvrir la macro en mode
cration
2. Cliquer sur le bouton
3. Excuter ensuite la macro


ACCESS affiche alors une fentre dcrivant la premire action ainsi que ses paramtres. Vous pouvez
alors continuer lexcution de la macro en mode normal, arrter lexcution de la macro ou bien
excuter laction en cours et passer la suivante.

" Excutez la macro MacroAutonome1 en mode pas pas.
Modifier une macro
Pour modifier une macro, ouvrez la en mode cration puis positionnez-vous sur laction modifier,
cliquez dessus avec le bouton droit : vous pouvez alors la supprimer ou en insrer une autre.
" Modifiez la macro en ajoutant une action en tout premier, cette action devra transformer le curseur
de la souris en sablier le temps de lexcution de la macro. Rajoutez galement une action qui
permettra de rduire la fentre de la table Auteurs .
Cration dune macro associe un formulaire
Certaines macros doivent tre excutes en rponse un vnement li au formulaire (ouverture,
fermeture), dautres dpendant dun vnement li un contrle du formulaire (clic, valeur du
contrle). Dans le premier cas, la macro doit tre insre dans la feuille de proprits du formulaire et
dans le second cas, elle doit apparatre dans la feuille de proprits du contrle. Supposons que nous
voulions refuser lenregistrement dun auteur si la date de naissance de cet auteur na pas t saisie
(nous pourrions indiquer dans les proprits du champ Null Interdit : Oui). Quand va-t-on vrifier que
le champ AuDateNaiss est vide ? Cela ne peut se faire que lorsque lon passe un nouvel
enregistrement. Lvnement passer un nouvel enregistrement est li au formulaire et pas au
contrle Date, lvnement sera donc associ au formulaire.

La liste des principaux vnements qui peuvent tre associs un formulaire :
Evnement La macro doit sexcuter
Sur Ouverture A louverture du formulaire
Sur Fermeture A la fermeture du formulaire
Sur Activation Lorsque ACCESS accde un enregistrement
Sur Insertion Lorsquon prcise la valeur dun champ dun nouvel enregistrement
Sur Suppression Lorsque lon va supprimer un enregistrement
Avant MAJ Aprs avoir quitt un enregistrement modifi et avant lenregistrement des
modifications
Aprs MAJ Aprs avoir quitt un enregistrement modifi et aprs lenregistrement des
modifications

La liste des principaux vnements qui peuvent tre associs aux contrles dun formulaire :
Evnement La macro doit sexcuter
Sur Clc Quand on clique sur le contrle
Sur Double Clic Quand on double clique sur le contrle
Sur Entre Avant daccder un contrle
Sur Sortie Lorsque lon quitte un contrle
Avant MAJ Aprs avoir quitt un contrle modifi et avant sa mise jour
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 48 Version non dfinitive
thomas lebarb, MMVIII
Aprs MAJ Aprs avoir quitt un contrle modifi et aprs sa mise jour

Excuter des actions en fonction de conditions
" On va crer une nouvelle macro pour vrifier la date. Une fois la fentre de cration ouverte,
cliquez sur le bouton . Une nouvelle colonne apparat dans la fentre de la macro, cest la colonne
Condition . Cest dans cette colonne quon va taper la condition qui dcidera si oui ou non laction
de la macro doit sexcuter. On veut quun message derreur saffiche lorsque la date de la commande
est vide, la condition pour que le message saffiche est [AuDateNaiss] Est Null. Laction qui sera
dclenche si la condition savre vraie est laffichage dun message derreur. Vous utiliserez laction
BoteMsg pour afficher une bote de dialogue signalant une erreur de saisie.
Dplacer le curseur
Une fois le message derreur affich, il va falloir positionner le curseur automatiquement sur le
contrle Date, pour que lutilisateur puisse re-saisir la date. Il existe plusieurs actions pour dplacer le
curseur (AtteindreContrle, AtteindrePage, AtteindreEnregistrement).
" Nous devons dplacer le curseur dans le formulaire sur le contrle du champ Date, nous utiliserons
donc laction AtteindreContrle . Vous devrez prciser le nom du contrle atteindre pour cette
action, pensez le vrifier en affichant les proprits du contrle du formulaire.
" Vous devrez rpter la condition pour chacune des actions de la macro afin de prciser que toutes
les actions ne se produisent que dans le cas o lerreur serait apparue.
" Rajoutez maintenant laction AnnulerEvnement entre BoteMsg et AtteindreContrle .
Normalement, aprs avoir modifi le formulaire, ACCESS va mettre jour les champs correspondants
dans les tables lies ce formulaire. Juste avant de faire cette mise jour, ACCESS va appeler la
macro associe lvnement AvantMAJ ; La macro va tre excute, puis la mise jour sera faite.
Il faut quon annule cette mise jour sinon le message indiquant que la date est vide va tre affich
puis ACCESS va sauvegarder les modifications et sauver dans la table Auteurs la date vide.
Laction AnnulerEvnement annule la mise jour qui allait tre faite et la date ne sera pas sauve.

" Enregistrez la macro sous le nom ErreurSaisieDate .
Affectation de la macro lvnement
" Maintenant que la macro est cre, on va laffecter lvnement AvantMAJ du formulaire
Formulaire Auteurs . Pour afficher les proprits dun formulaire, cliquez avec le bouton droit sur le
carr noir situ en haut gauche du formulaire, puis dans le menu, cliquez sur Proprits. Choisissez
lvnement auquel vous affectez la macro ErreurSaisieDate . Une fois la macro associe, il suffit
dentrer un auteur pour lequel on omet de saisir la date de naissance pour vrifier que la macro va
sexcuter (vrifiez le).
Dfinir la valeur dun champ dans une macro
On peut, grce une macro, modifier le contenu dun champ dune table. Imaginons
que nous voulions que le nom de chaque client saisi soit en majuscules (on pourrait
trs bien le faire partir du masque de saisie), nous allons pour cela utiliser une macro
qui va modifier le contenu dun champ lors dun vnement.
" Crez une nouvelle macro et utilisez laction DfinirValeur . Cette action prend
deux paramtres : Elment et Expression. Elment indique ce qui est modifier (ici le
champ AuNom) et Expression indique la nouvelle valeur du champ. Vous devrez
trouver vous-mme quelle fonction utiliser pour changer en majuscules la chane de
caractre correspondant au nom de lauteur.
" Sauvegardez la macro sous le nom NomEnMajuscules et associez la
lvnement SurSortie du contrle de nom du formulaire. Essayez de modifier le
nom dun des auteurs lorsque vous quittez le contrle, le nom doit se changer
automatiquement en majuscules.
Mettre un bouton dans un formulaire
Un bouton de commande peut tre plac sur un formulaire, il permet dexcuter
nimporte quelle action dACCESS. Dans le formulaire Formulaire Auteurs , nous
allons ajouter un bouton qui dclenchera limpression du formulaire associ lauteur
courant.
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 49 Version non dfinitive
thomas lebarb, MMVIII
" Vous allez procder en trois tapes. Dabord, on ajoute laction
ExcuterCommande qui permet dexcuter toutes les oprations possibles dans
ACCESS, on choisit laction SlectionnerEnregistrement qui va slectionner
lenregistrement courant. Ensuite on ajoute laction Imprimer en choisissant
slection parmi la dfinition de ce qui doit tre imprim. Enfin on ajoute laction
AtteindreContrle qui va positionner le curseur sur le contrle AuID. Sauvegardez
la macro sous le nom ImpressionUnAuteur .
" Insrez ensuite un bouton de commandes dans le formulaire Formulaire
Auteurs en choisissant parmi les actions possibles, les macros dans la catgorie
Divers.




" Cherchez dans les proprits du bouton, quel vnement a t affecte la macro,
et ajoutez la pour lvnement de double-clic.
Application professionnelle
Afin de donner une allure plus professionnelle notre base de donnes, nous allons
crer un formulaire qui contiendra des boutons lis des commandes pouvant tre des
macros.
" Tout dabord crez un nouveau formulaire sans utiliser lassistant et mettez le en
forme de faon ce quil ressemble celui de la page suivante (sans les boutons).
" Crez quatre macros servant ouvrir respectivement les tables Auteurs, Livres,
Catgories et Editeurs.
" Crez ensuite quatre boutons associs ces quatre macros.
" Crez pour finir tous les autres boutons (voir la figure pour savoir quelle action
associer chaque bouton).
" Sauvegardez le formulaire sous le nom Dmarrage .

Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 50 Version non dfinitive
thomas lebarb, MMVIII
" Pour que le formulaire soit lanc ds que lon ouvre la base de donnes, utilisez le
Menu Outils ! Dmarrage et slectionnez le formulaire nomm Dmarrage
comme formulaire devant tre affich au chargement de la base de donnes.

Lalgbre relationnel
Nous allons examiner lalgbre relationnel. Les oprations de lalgbre relationnel
sont implantes dans ACCESS sous la forme de requtes. Toutes les tables sont
donnes au paragraphe 0. Vous commencrez par crer une nouvelle base de donnes
nomme AlgRel.mdb
Lunion
Si S et T sont deux tables avec le mmes attributs, S " T est la table obtenue en
incluant toutes les lignes de S et T.
" Crez les deux tables Union1 et Union2.
" Crez une requte nomme RequteUnion en mode cration et ajoutez la table
Union2. Transformez la requte en requte Ajout vers Union1. Glissez lastrisque (*)
du schma de Union2 dans la premire cellule de champ. Lancez la requte et vrifiez
que la table contient bien plus denregistrements.

Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 51 Version non dfinitive
thomas lebarb, MMVIII


Lintersection et la diffrence
Si S et T sont deux tables avec les mmes attributs, S # T est la table obtenue en ne
gardant que les lignes apparaissant la fois dans les deux tables.
" Crez les deux tables Intersection1 et Intersection2
" Crez une requte nomme RequteIntersection et ajoutez les deux tables.
Crez une relation entre les deux champs A1. Cliquez avec le bouton droit sur la
relation et choisissez Proprits de jointure . Slectionnez loption 2 qui inclut
tous les enregistrements de Intersection1 et Intersection2 qui ont le champ A1
identique.
" Glissez lastrisque de Intersection1 vers la grille de conception et glissez A1 de
Intersection2 vers la seconde colonne.
" Lancez la requte, les lignes o Intersection2.A1 nest pas NULL forment
lintersection, les lignes ou Intersection2.A1 est NULL forment la diffrence.
" Rajoutez Est pas Null comme critre pour obtenir lintersection.
" Crez les deux tables Diffrence1 et Diffrence2 et une nouvelle requte nomme
RequteDiffrence identique RequteIntersection puis rajoutez Est Null pour
obtenir la diffrence.




Le Produit cartsien
Si S et T sont deux tables, le produit cartsien S $ T est la table o chaque
enregistrement est form par la combinaison de chaque ligne de S et T.
" Crez les deux tables Produit1 et Produit2.
" Crez une nouvelle requte nomme RequteProduitCartsien utilisant les deux
prcdentes tables. Glissez les astrisques de chaque schma vers la grille de
conception. Lancez la requte pour obtenir le produit cartsien.

Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 52 Version non dfinitive
thomas lebarb, MMVIII


La Jointure
Faire la jointure de deux tables revient combiner les lignes de deux tables sur la base
dune comparaison (dgalit pour lqui-jointure) dans des colonnes slectionnes.
" Crez les deux tables Jointure1 et Jointure2.
" Crez une nouvelle requte nomme RequteEquiJointure utilisant les deux
prcdentes tables. Nous volons crer la jointure base sur lgalit entre A1 et B1
ainsi quentre A2 et B2. Glissez le nom du champ A1 sur B1 et A2 vers B2. Glissez les
astrisques vers la grille de conception. Lancez la requte pour obtenir une equi-
jointure.


Les tables






Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 53 Version non dfinitive
thomas lebarb, MMVIII




Exercice rcapitulatif
Vous allez maintenant refaire toutes le dmarches ncessaires la cration dune base de donnes
relationnelle. Vous disposez du schma relationnel suivant :
ETUDIANTS(NumEtud, NomEtud, PrenomEtud, AnneeStage, NumEnt)
ENTREPRISES(NumEnt, NomEnt, NomResp, PrenomResp, TelResp)

" Crez une nouvelle base de donnes nomme StageIUT.mdb , crez les tables, spcifiez les
format de donnes ainsi que les masques de donnes, prcisez les cls primaires.
" Crez lassociation entre les deux tables en respectant lintgrit rfrentielle.
" Construisez une requte permettant de trouver :
Le nom de lentreprise dans laquelle un tudiant a effectu son stage (le nom de ltudiant
devra tre saisi dans une bote de dialogue, puis le prnom dans une autre),
Le nom et le prnom du responsable de stage,
Son numro de tlphone.
" Construisez une requte permettant de trouver tous les tudiants ayant fait leur stage dans une
entreprise (le nom de lentreprise devra tre saisi dans une boite de dialogue). Cette requte doit donner
le nom et le prnom des tudiants ainsi que lanne du stage.
" Faites-en ensuite un tat.

" Construisez un tat donnant les rfrences de toutes les entreprises qui ont pris un ou des
stagiaire(s). Les noms et prnoms des stagiaires doivent apparatre sous chaque entreprise ainsi que
lanne du stage.

" Crez une requte donnant le nombre dtudiants pris en stage par chaque entreprise.

" Crez un formulaire de dmarrage pour lapplication, vous intgrerez des boutons pour effectuer
chacune des requtes ainsi quun bouton permettant de sortir dACCESS.





Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 54 Version non dfinitive
thomas lebarb, MMVIII


Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 55 Version non dfinitive
thomas lebarb, MMVIII

4. Algbre relationnel

!Une requte sur BDD fournit une nouvelle table en rsultat
!Langage de requtes algbrique
!Ensemble doprateurs qui s appliquent aux relations
!Rsultat : une nouvelle relation qui peut sont tour tre manipule
4.1. Lunion

!Union : T = R & S ou T=UNION(R,S) et R et S doivent avoir le mme schma
!Ex: R et S sont les relations PRODUIT de deux socits qui fusionnent et veulent
unifier leur catalogue
!Notation graphique :



4.2. Lintersection

!Intersection : T = R ) S ou T=INTERSECT(R,S) et R et S doivent avoir le mme
schma
!Ex: Permet de trouver les produits communs aux catalogues de deux socits
!Notation graphique :

4.3. La diffrence
!Diffrence : T = R - S ou T=MINUS(R,S) et R et S doivent avoir le mme schma
!Ex: Permet de retirer les produits de la relations S existants dans la relation R
Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 56 Version non dfinitive
thomas lebarb, MMVIII
!Notation graphique :


4.4. Le produit cartsien
!Produit cartsien : T = R * S ou T=PRODUCT(R,S) et R et S peuvent ne pas avoir
le mme schma
!Associe chaque n-uplet de R chaque n-uplet de S
!Notation graphique :


4.5. Exemple de produit cartsien :


Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 57 Version non dfinitive
thomas lebarb, MMVIII
4.6. La projection
!Projection : T = +<A,B,C>(R) ou T=PROJECT(R/A,B,C)
!T ne contient que les attributs A,B et C de R
!Ex: Noms et prnoms des clients
!Notation graphique :


4.7. La restriction
!Restriction : T = ,<C>(R) ou T=RESTRICT(R/C)
!T ne contient que les attributs de R qui satisfont la condition C
!Ex: C=Clients qui habitent Lyon
!Notation graphique :


4.8. La jointure

!Jointure naturelle : T = R S ou T=JOIN(R,S)
!Produit cartsien R * S avec la restriction A=B sur les attributs A"R et B "S
!Notation graphique :

Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 58 Version non dfinitive
thomas lebarb, MMVIII

4.9. Exemple de jointure


!Ex: commande avec le nom du client et pas seulement son numro
!Nb: Requte = enchanement doprations

4.10. Dcomposition dune relation

!Une dcomposition est le remplacement d'une relation R par une collection de
relations R
1
,R
2
,,R
n
obtenues par des projections de R et telle que la relation
rsultant des jointures

constitue un schma relationnel quivalent R.

4.11. Prservation du contenu

!Les n-uplets obtenus par jointure doivent tre exactement ceux de R: la
recomposition par jointure ne doit ni enlever ni ajouter des n-uplets
!Thorme : Une dcomposition R={R
1
,R
2
} prserve le contenu ssi
R
1
) R
2
$ R
1
- R
2

R
1
& R
2
$ R
2
R
1

Systme de Gestion de Bases de Donnes Polycopi version 0.9
Page 59 Version non dfinitive
thomas lebarb, MMVIII
4.12. Prservation des dpendances

!Un algorithme de dcomposition prserve les dpendances si les dpendances
initiales de D peuvent tre reconstruites partir de D
i
. Autrement dit si la fermeture
de D est identique la fermeture de l'union des D
i
:
(D
1
& D
2
& & D
n
)
+
=D
+