Vous êtes sur la page 1sur 59

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

Parcours Informatique, lettres, langues et langage

Systmes de Gestion de Bases de Donnes

2005-2006
thomas lebarb, MMV

Page 1

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

1.

INTRODUCTION ORGANISATION EN FICHIERS : LIMITES DE LORGANISATION EN FICHIERS : ORGANISATION EN BASE DE DONNES : ORGANISATION EN BASE DE DONNES : DFINITIONS COUCHES SGBD OBJECTIFS DES SGBD DIFFRENTS TYPES DE BD NIVEAUX DE DESCRIPTION FONCTIONS DES SGBD PROCESSUS DE CONCEPTION DUNE BD

5 5 5 5 6 6 6 6 7 7 7 8 9 9 9 10 11 11 11 11 12 12 12 13 14 14 14 14 14 15 16 16 16 16 16 17 17 17 18 18 18 18 19 19 19

1.1. 1.2. 1.3. 1.4. 1.5. 1.6. 1.7. 1.8. 1.9. 1.10. 1.11. 2.

LE MODLE E/A

2.1. ANALYSE ET CONCEPTION DE BD 2.2. LE FORMALISME E/A 2.3. ASSOCIATION 2.4. TYPES DASSOCIATIONS 2.5. CARDINALIT 2.6. ASSOCIATION 1 : 1 2.7. ASSOCIATION 1 : N 2.8. ASSOCIATION M : N 2.9. ATTRIBUTS DASSOCIATION 2.10. ANALYSE ET CONCEPTION 2.11. EXEMPLE DE DIAGRAMME E/A 2.12. TD NUMRO 1 ET 2 LE MODLE E/A EXERCICE 1 EXERCICE2 EXERCICE 3 EXERCICE 4 EXERCICE 5 3. LE MODLE RELATIONNEL GNRALITS NOTIONS DE BASE RELATIONS, ATTRIBUTS N-UPLETS CONTRAINTES DINTGRIT POURQUOI DES RELATIONS TRADUCTION RELATIONNEL E/A TRADUCTION E/A MODLE RELATIONNEL : EXEMPLE COMPLET PROBLME DE LA REDONDANCE ANOMALIES DTECTES NORMALISATION DPENDANCE FONCTIONNELLE (DF) PROPRITS DES DPENDANCES FONCTIONNELLES PROPRITS COMPLMENTAIRES

3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 3.7. 3.8. 3.9. 3.10. 3.11. 3.12. 3.13. 3.14.
Page 2

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

3.15. EXEMPLE DE DF 3.16. NOTIONS SUPPLMENTAIRES 3.17. FORMES NORMALES 3.18. PREMIRE FORME NORMALE (1FN) 3.19. DEUXIME FORME NORMALE (2FN) 3.20. 2FN : NORMALISATION 3.21. TROISIME FORME NORMALE (3FN) 3.22. FORME NORMALE DE BOYCE CODD (FNBC) 3.23. TD NUMRO 3 PASSAGE DU MODLE E/A AU MODLE RELATIONNEL EXERCICE 1 EXERCICE 2 EXERCICE 3 EXERCICE 4 3.24. TD NUMRO 4 DPENDANCES FONCTIONNELLES, ALGBRE RELATIONNEL EXERCICE 1 EXERCICE 2 EXERCICE 3 EXERCICE 4 EXERCICE 5 EXERCICE 6 3.25. TD NUMRO 5 FORMES NORMALES, NORMALISATION EXERCICE 1 EXERCICE 2 EXERCICE 3 EXERCICE 4 3.26. TP NUMRO 1 INITITIATION A ACCESS OBJETS MANUIPULES CREATION DE TABLES ET DE FORMULAIRES SE REPERER DANS ACCESS SE REPERER DANS LA BARRE DOUTILS BASE DE DONNES SE REPERER DANS LA VISUALISATION DUNE BASE DE DONNEES OBJETS MANIPULES ETAPES DE MISE EN UVRE SOUS ACCESS CREATION DUNE NOUVELLE BASE DE DONNEES CRATION DES TABLES AUTEURS, EDITEURS ET LIVRES CRATION DES RELATIONS ENTRE LES TABLES CRATION DE FORMULAIRES 3.27. TP NUMRO 2 CREATION DINDEX CREATION DE REQUETES CREATION DETATS COMPLMENT AU TP NUMRO 1 LES INDEX LES REQUTES LES REQUTES DACTION LES TATS 3.28. TP NUMRO 3 CREATION DE MACROS ALGEBRE RELATIONNEL EXERCICE RECAPITULATIF LES MACROS APPLICATION PROFESSIONNELLE LALGBRE RELATIONNEL EXERCICE RCAPITULATIF 4. 4.1. 4.2.
Page 3

19 20 20 20 20 20 21 21 22 22 22 22 22 24 24 24 24 24 25 25 26 26 26 26 26 27 27 27 28 28 30 30 31 33 36 38 38 38 39 42 43 46 46 49 50 53 55 55 55

ALGBRE RELATIONNEL LUNION LINTERSECTION

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

4.3. 4.4. 4.5. 4.6. 4.7. 4.8. 4.9. 4.10. 4.11. 4.12. 5.

LA DIFFRENCE LE PRODUIT CARTSIEN EXEMPLE DE PRODUIT CARTSIEN : LA PROJECTION LA RESTRICTION LA JOINTURE EXEMPLE DE JOINTURE DCOMPOSITION DUNE RELATION PRSERVATION DU CONTENU PRSERVATION DES DPENDANCES

55 56 56 57 57 57 58 58 58 59 60 60 60 60 61 61 62 63 63 63 63 64 65 65 65 65 65 66 67 70 70 70 70 71

CORRIGS

5.1. TD NUMRO 1 ET 2 LE MODLE E/A EXERCICE 1 EXERCICE2 EXERCICE 3 EXERCICE 4 EXERCICE 5 5.2. TD NUMRO 3 PASSAGE DU MODLE E/A AU MODLE RELATIONNEL EXERCICE 1 EXERCICE 2 EXERCICE 3 EXERCICE 4 5.3. TD NUMRO 4 DPENDANCES FONCTIONNELLES, ALGBRE RELATIONNEL EXERCICE 1 EXERCICE 2 EXERCICE 3 EXERCICE 4 EXERCICE 5 EXERCICE 6 5.4. TD NUMRO 5 FORMES NORMALES, NORMALISATION EXERCICE 1 EXERCICE 2 EXERCICE 3 EXERCICE 4

Page 4

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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 :

Page 5

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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 !Le SGBD interne

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

!Le SGBD externe

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) le volume de stockage et viter les incohrences
Page 6

!Non redondance des donnes : viter la duplication d'informations pour diminuer


Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

!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
20% 75%

!Bases hirarchiques (schma arborescent) !Bases rseaux (id. mais plus rapides) !Bases relationnelles (tables et algbre relationnel) !Bases dductives (tables et logique du 1er 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

Page 7

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

1.11.

Processus de conception dune BD

Page 8

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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

Client

Nom

Prnom

!Attribut compos : subdivis en attributs simples (ex: Adresse) !Attribut driv : dont le valeur est calcule (ex: Age d'aprs la date de naissance)
Page 9 Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

Rue Adress e Code Postal Ville Pays Age


!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

Client
2.3. Association

Numro

!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

Client

Comm ande

Produits

Page 10

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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)

E
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.

Client

(1,1)

Comm ande

(1,1)

Produits

!(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.

Client

(1,n)

Comm ande

(1,1)

Produits

Page 11

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

!Ex: un client donn commande plusieurs produits. Un produit donn n'est


command que par un seul client mais peut ne pas tre command

Client
2.8.

(1,n)

Comm ande

(0,1)

Produits

Association m : n

Ex: un client donn commande plusieurs produits. Un produit donn est command par plusieurs clients.

Client

(1,n)

Comm ande

(1,n)

Produits

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

Client

(1,n)

Comm ande

(1,n)

Produits

Date
2.10.
1. 2. 3. 4. 5.

Quantit

Analyse et conception

!Marche suivre pour produire un schma E/A

Identifier les entits Identifier les associations entre entits Identifier les attributs de chaque entit et de chaque association valuer les cardinalits des associations Identifier le type d'association

Page 12

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

2.11.

Exemple de diagramme E/A

Page 13

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

2.12.
Exercice 1

TD numro 1 et 2 Le modle E/A

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
Page 14 Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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.

Page 15

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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.
!Une

Notions de base

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 {A1,A2,,An}.


Ex: PrixUni "]0,10000]

Ex: la relation PRODUIT est l'ensemble des attributs {NumProd, Dsi, PrixUni}

!Chaque attribut Ai prend ses valeurs dans un domaine dom(Ai)


3.4. N-uplets

Un n-uplet est un ensemble de valeurs t=<V1,V2,,Vn> o Vi " dom(Ai) ou bien Vi est la valeur nulle (NULL)
Page 16 Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

Ex: <112,'raquette de tennis',300> est un n-uplet de la relation PRODUIT Notation : R(A1,A2,,An) Ex: PRODUIT(NumProd,Dsi,PrixUni)

3.5.

Contraintes dintgrit

!Cl primaire : Ensemble d'attributs dont les valeurs permettent de distinguer les nuplets 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) Ex: PrixUni>0 ET PrixUni # 10000

!Contraintes de domaine : les attributs doivent respecter un condition logique


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)
Page 17 Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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.
de donnes
Page 18

Normalisation

!La normalisation est le processus de modification relatif la conception d'une Base


Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

!Objectifs de la normalisation :

!Suppression des problmes de mise jour !Minimisation de l'espace de stockage (limination des redondances) !Sans perte d'informations
Dpendance fonctionnelle (DF)

3.12.

!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
Page 19 Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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
Page 20 Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

!La dcomposition suivante donne deux relations 2FN :


3.21.

COMMANDE(NumProd,NumFour,Quantit) et FOURNISSEUR(NumFour, Ville)

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


(par transitivit) toutes les DF : R1(Vol,Avion) et R2(Avion,Pilote)

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

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 :

Page 21

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

3.23.
Exercice 1

TD numro 3 Passage du modle E/A au modle Relationnel

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 12345 23456 34567 27569 TYPE Courant Codevi Courant PEL SOLDE 12000 15000 5000 7500 NUM 12345 34567 27569 23456

CLIENTS

NOM Dupont Durand Martin Durand

PRENOM Marcel Ginette Jrme Ginette

NUM-CLIENT 901-222 805-333 555-644 805-333

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

Page 22

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

NINSEE_Mairie

Nom_Commune Nom_Mairie

NInsee_Commune

Population

Maires

(1,1)

1 :1 (1,1)
administr

Communes (1,n) (1,n)


jouxte

(0,1)
Appartient

1 :n (0,n)

n:m

Partis Politiques

Sigle

Page 23

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

3.24.
Exercice 1

TD numro 4 Dpendances fonctionnelles, Algbre relationnel

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 ?

Page 24

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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 ?

Page 25

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

3.25.
Exercice 1

TD numro 5 Formes Normales, Normalisation

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 Gi ayant mme partie gauche 3) Fusionner les groupes Gi possdant des parties gauches Xi et Xj quivalentes, cest dire ceux pour lesquels on a Xi$Xj et Xj$Xi avec Xi "Gi et Xj "Gj 4) Associer chaque groupe Gi un schma Ri=<Ui , Di>. Autrement dit, construire une relation Ri pour chaque Gi dont la cl est la partie gauche des DF de Di et les constituants non cls est la partie droite des DF de Di 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.

Page 26

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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 4. Fentre dune base de donnes

2. Barre de menu 5. Barre dtat

3. Barre doutils Base de donnes

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 .
Page 27 Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

123456-

789101112-

131415161718-

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


1 3

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.

Page 28

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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.

Page 29

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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.

Page 30

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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
Page 31 Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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

Page 32

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

" 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 . : cherchez lauteur

Pour rechercher des enregistrements, on utilise licne 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.

Page 33

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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.

Page 34

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

" 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 :

Page 35

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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
Page 36 Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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 sousformulaire. " 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!!

Page 37

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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
Page 38 Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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.

Page 39

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

" 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 ).

Page 40

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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 .
Page 41 Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

" 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.
Page 42 Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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.

Page 43

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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.
En-tte dtat En-tte de page En-tte de groupe (Auteur) Pied de groupe (Auteur) En-tte de groupe (Auteur) Pied de groupe (Auteur) Pied de page Pied dtat

" 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.

Page 44

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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

Page 45

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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
Page 46 Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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. 3. Cliquer sur le bouton 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 Page 47 Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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.
Page 48 Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

" 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 .

Page 49

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

" 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.

Page 50

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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.

Page 51

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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 equijointure.

Les tables

Page 52

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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.

Page 53

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

Page 54

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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
Page 55 Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

!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 :

Page 56

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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 :

Page 57

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

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 R1,R2,,Rn 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 R1 ) R2 $ R1 - R2 R1 & R2 $ R2 R1

!Thorme : Une dcomposition R={R1,R2} prserve le contenu ssi

Page 58

Version non dfinitive thomas lebarb, MMV

Systme de Gestion de Bases de Donnes

Polycopi version 0.9

4.12.

Prservation des dpendances

!Un algorithme de dcomposition prserve les dpendances si les dpendances

initiales de D peuvent tre reconstruites partir de Di. Autrement dit si la fermeture de D est identique la fermeture de l'union des Di : (D1 & D2 & & Dn )+=D+

Page 59

Version non dfinitive thomas lebarb, MMV