Beruflich Dokumente
Kultur Dokumente
2005-2006
thomas lebarb, MMV
Page 1
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
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
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
1. Introduction
1.1. Organisation en fichiers :
1.2.
1.3.
Page 5
1.4.
1.5.
Dfinitions
structuration, stockage, maintenance, mise jour, et consultation des des donnes d'un BDD
1.6.
Couches SGBD
!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
1.7.
!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.
!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
1.11.
Page 8
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
!Occurrence : valeur particulire d'un attribut ou d'une entit (ex: Bleu, Rouge sont
des occurrences d'un attribut Couleur) Identifiant et 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
2.4.
Types dassociations
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
Client
(1,n)
Comm ande
(1,1)
Produits
Page 11
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
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
2.11.
Page 13
2.12.
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
Page 14 Version non dfinitive thomas lebarb, MMV
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
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
Ex: la relation PRODUIT est l'ensemble des attributs {NumProd, Dsi, PrixUni}
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
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
!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.
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
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.9.
Problme de la redondance
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
!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.
3.13.
3.14.
Proprits complmentaires
!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
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
3.18.
!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.
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
!Df: Une relation est en 3FN si elle est en 2FN et quil nexiste aucune DF entre
deux attributs non cls primaires
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.
!Df: Une relation est en FNBC si elle est en 3FN et si tout attribut ne dpend que
des cls minimales du schma
Page 21
3.23.
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 12345 23456 34567 27569 TYPE Courant Codevi Courant PEL SOLDE 12000 15000 5000 7500 NUM 12345 34567 27569 23456
CLIENTS
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
NINSEE_Mairie
Nom_Commune Nom_Mairie
NInsee_Commune
Population
Maires
(1,1)
1 :1 (1,1)
administr
(0,1)
Appartient
1 :n (0,n)
n:m
Partis Politiques
Sigle
Page 23
3.24.
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 ?
Page 24
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
3.25.
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 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
123456-
789101112-
131415161718-
Remarque : Contrairement Word, le bouton Annuler nest pas une liste droulante ; ils ne peut agir que sur la dernire action effectue.
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
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
" 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
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
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
" 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 . .
Pour rechercher des enregistrements, on utilise licne Snoopy dans la table Auteurs
Page 33
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
" 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
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.
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 ?
Page 37
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
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
Page 40
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
" 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 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
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
Page 45
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 .
Aprs MAJ
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
" 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
" 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
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
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
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
Page 54
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
!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
!Notation graphique :
4.4.
Le produit cartsien
4.5.
Page 56
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
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
4.11.
Prservation du contenu
Page 58
4.12.
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