Académique Documents
Professionnel Documents
Culture Documents
OFPPT
RESUME THEORIQUE
&
GUIDE DE TRAVAUX PRATIQUES
Module : 5
Manipulation d'une base de donnes
REMERCIEMENT
Pour la supervision :
Pour la conception :
Pour la validation :
Said Slaoui
Page 2/91
TABLE DE MATIERE
PARTIE 7 EVALUATION............................................................................................................................83
ANNEXE.............................................................................................................................................................87
Module N 5 Manipulation de base de donne Filire : TSSSRI
PARTIE 1 Objectifs
COMPORTEMENT ATTENDU
Pour dmontrer sa comptence, le stagiaire doit utiliser les techniques de manipulation
d'une base de donnes l'aide d'un logiciel de bases de donnes selon les conditions, les
critres et les prcisions qui suivent.
CONDITIONS DEVALUATION
OBJECTIFS
A. Analyser la demande pour manipuler une Base de donnes
B. Traiter et manipuler les donnes
C. Adapter la structure de la base de donnes de nouveaux besoins
D. Documenter la base de donnes
Module N 5 Manipulation de base de donne Filire : TSSSRI
Dfinition et Historique
Une base de donnes est un ensemble structur de donnes enregistres sur des supports
informatiss, pouvant satisfaire simultanment plusieurs utilisateurs de faon slective, en un dlai
raisonnable.
Le concept de Base de Donnes (BDD) est apparu vers 1960, face au nombre croissant
d'informations que les entreprises devaient grer et partager :
Chaque nouvelle application crait alors ses propres fichiers de donnes et ses propres
programmes ;
le concept de base de donnes va l'encontre de cette faon de procder : il permet la
centralisation, la coordination, l'intgration et la diffusion de l'information archive.
La base de donnes enregistre les faits ou vnements qui surviennent dans la vie d'un organisme,
pour les restituer la demande : elle permet galement de tirer des conclusions en rapprochant
plusieurs faits lmentaires.
Les donnes peuvent tre manipules par plusieurs utilisateurs ayant des vues diffrentes sur
ces donnes ("points de vue" diffrents).
La structure densemble des donnes suit une dfinition rigoureuse appele SCHEMA.
- dfinir des "bases de donnes", et des relations entre les lments de chaque base ;
- spcifier le traitement de ces donnes : interrogations, mises jour, calculs, extractions...
Le SGBD reoit des commandes aussi bien des programmes d'application que des utilisateurs :
il commande les manipulations de donnes, gnralement par l'intermdiaire d'un SGF.
Utilisateur
Ouvrir, fermer, Demande d'un
Units
lire, crire enreg. physique De
Gestion de la
SGBD SGF Lecture/
Base
Ecriture
Code rponse, Enreg. physique
ou code erreur
Programme Donnes logiques
applicatif
Pour pallier aux inconvnients des mthodes classiques de gestion de fichiers, les SGBD visent
quatre objectifs : intgration et corrlation, flexibilit (indpendance), disponibilit, scurit.
Ces objectifs exigent une distinction nette entre les donnes et les procdures de manipulation
de ces donnes : aux donnes, on associera une fonction d'administration des donnes,
aux procdures de manipulation une fonction de programmation.
Intgration et corrlation
Dans les systmes classiques, chaque application gre ses donnes dans ses propres "fichiers",
do :
Dans l'approche SGBD, un "rservoir" commun (intgration) est constitu, reprsentant une
modlisation (corrlation) aussi fidle que possible de l'organisation relle de l'entreprise :
Toutes les applications puisent dans ce rservoir, les donnes qui les concernent, vitant ainsi
les duplications.
Mais le partage des donnes entre les utilisateurs pose le problme de la synchronisation des
accs concurrents.
Flexibilit ou indpendance
Dans les systmes classiques, tout changement intervenant dans le stockage des donnes
(support, mthode d'accs physique) entrane des modifications lourdes des applications
correspondantes.
L'approche SGBD poursuit trois objectifs, pour assurer lindpendance des donnes par rapport
aux traitements :
- indpendance physique: tout changement de support, de mthode d'accs reste transparent au
niveau de l'utilisateur.
- indpendance logique : les programmes d'application sont rendus transparents une
modification dans l'organisation logique globale, par la dfinition de sous-schmas couvrant les
besoins spcifiques en donnes.
Page 8/91
- indpendance vis--vis des stratgies d'accs : l'utilisateur n'a plus prendre en charge
l'criture des procdures d'accs aux donnes. Il n'a donc pas intgrer les modifications
tendant optimiser les chemins d'accs (ex: cration d'index).
Disponibilit
Le choix d'une approche SGBD ne doit pas se traduire par des temps de traitement plus longs
que ceux des systmes antrieurs.
Lutilisateur doit ignorer l'existence d'utilisateurs concurrents.
L'aspect "performance" est donc crucial dans la mise en oeuvre d'une base de donnes. Un tel
objectif ne peut tre atteint que si la conception d'une base de donnes est mene de faon
rigoureuse avec un dcoupage fonctionnel adquat. Les rgles et contraintes inhrentes sont
voques lors de l'apprentissage d'une mthodologie d'analyse (exemple MERISE).
Scurit
Pour ne pas trop affecter les performances, la scurit doit galement tre prise en compte ds
la phase de conception.
Programmeur
Schma Schma Schma
Modle externe
Externe externe externe d'application
Utilisateur 1 Utilisateur 2 Application 3
Schma Analyste
Modle conceptuel
conceptuel
Schma
Administrateur
Modle interne interne de la base
Niveau conceptuel
Cest une abstraction aussi fidle que possible, de l'univers de l'entreprise, aprs modlisation
et indpendamment de toute rfrence l'utilisation et l'implantation en machine.
Module N 5 Manipulation de base de donne Filire : TSSSRI
Le modle conceptuel de donnes (MCD) permet le passage d'un concret inaccessible (l'univers
rel) un abstrait manipulable : le schma conceptuel. Celui-ci peut donc tre considr
comme la description du contenu de la base : c'est le rsultat d'un travail d'analyse et de
conception d'un systme d'information automatis.
Un schma conceptuel doit offrir les caractristiques suivantes :
- puissance de reprsentation : aspects structurels, contraintes existant dans l'univers rel.
- stabilit et flexibilit : l'ajout d'une nouvelle donne ou d'une nouvelle contrainte ne doit pas
entraner de changement important dans le schma.
- simplicit de comprhension : nombre d'lments rduit, dissociation claire des diffrents
concepts.
- simplicit d'utilisation : nombre restreint d'outils ou de primitives de manipulation.
- base formelle : la dfinition du schma doit s'appuyer sur une mthode rigoureuse,
mathmatique, pour viter toute ambigut d'interprtation et pour garantir la fiabilit des
donnes.
Pour aboutir au schma conceptuel, l'analyste doit reprer dans le rel, et recenser de manire
exhaustive, toutes les entits et toutes les associations :
- Une entit peut tre dfinie comme une personne, un objet, un lieu, un statut, un vnement
qui ont une existence dans le monde rel. C'est un objet concret ou abstrait, possdant un
certain nombre de caractristiques spcifiques (exemple : le produit x cote y francs).
- Gnralement, les entits du monde rel se manifestent travers des faits lmentaires.
- Certains faits faisant intervenir plusieurs entits, il apparat la notion d'association. Une
association (ou lien) est un ensemble de deux ou plusieurs entits, chacune d'elles jouant un
rle particulier.
Exemple : le fait que la "voiture x" appartienne la "personne y" est une association entre les
entits "voiture " et "personne".
X X
Y Y
Z Z
Exemple : dans un lyce donn, un enseignant peut dispenser des cours dans plusieurs matires
diffrentes ; de la mme faon, une matire peut tre dispense par plusieurs enseignants.
Page 10/91
Niveau externe
Le niveau externe comprend les "vues" spcifiques dfinies pour la manipulation des donnes.
Il prend en compte les contraintes d'accs imposes par la nature des applications considrer
(indpendamment des caractristiques techniques) et exprime les besoins en donnes des
diffrents utilisateurs, ou applications.
Le modle logique des donnes (MLD) utilis ce niveau externe peut diffrer de celui utilis
au niveau conceptuel. Ainsi, certaines vues peuvent ne pas tre construites dans la base, mais
dduites par calcul partir de certaines donnes du schma conceptuel (exemple : anciennet
obtenue par diffrence entre anne en cours et annne d'embauche dans la socit).
L'efficacit doit tenir compte d'une part des contraintes d'implantation (taille des disques,
optimisation du systme de fichiers), d'autre part des critres d'utilisation (traitement
interactif ou en batch, selon la frquence dutilisation et la dure du traitement).
Un programme d'application A met une demande de lecture de donnes au SGBD sur une des
bases :
Cette prsentation des SGBD fait apparatre la ncessit de bien diffrencier deux tapes :
- la dfinition des donnes par ladministrateur de la base (DBA)
- leur utilisation par les utilisateurs ou les programmeurs d'application.
Le SGBD met donc disposition deux types de langage : LDD et LMD
L'utilisation d'une BDD suppose un grand nombre d'utilisateurs, souvent non informaticiens, ayant
des tches et des besoins varis auxquels le LMD doit pouvoir rpondre. Le SGBD fournit deux
niveaux daccs :
le langage d'interrogation, ou langage de requte interactif
vite le recours des langages gnraux de programmation. Il doit avoir une syntaxe souple, si
possible graphique, tre accessible aux non-spcialistes et permettre la formulation de demandes
utilisant des critres varis et combins.
le langage hte
pour les traitements rguliers, le SGBD doit fournir une interface permettant l'utilisation de la base
l'aide des langages procduraux (COBOL, Pascal, C/C++.), en incorporant les requtes dans
des programmes classiques.
Les trois principaux modles sont, dans l'ordre chronologique de leur arrive sur le march, le
modle hirarchique, le modle rseau (ou navigationnel), le modle relationnel.
Le modle hirarchique
Socit
L'anctre le plus rpandu est le SGBD IMS (Information Management System), dvelopp et
commercialis par IBM dans les annes 70
Page 12/91
- Forte dpendance entre la description de la structure des donnes et la manire dont celles-ci
sont enregistres sur le support physique.
- Les lments de base du modle sont des enregistrements logiques relis entre eux pour
constituer un arbre ordonn.
- Les entits (ou segments) constituent les noeuds, celui de plus haut niveau portant le nom de
racine ; les branches (pointeurs logiques entre entits) constituent les liens. Chaque segment
est une collection d'objets appels champs (ou Fields).
- Chaque segment a obligatoirement un pre (sauf la racine), et peut avoir plusieurs fils.
Avantages :
- rigueur des structures et des chemins d'accs
- simplicit relative de l'implmentation
- adquation parfaite du modle une entreprise structure arborescente.
Inconvnients :
- les accs se font uniquement depuis la racine
- la structure interdit les liens N:M, ne permettant que le lien 1:N. La reprsentation d'autres
relations impose de ce fait une redondance de l'information.
Exemple : comment reprsenter dans ce modle, un parc de vhicules et un ensemble de
chauffeurs, chaque chauffeur pouvant conduire plusieurs vhicules, et un vhicule pouvant tre
conduit par plusieurs chauffeurs ?
- les "anomalies" que l'on constate lors des oprations de mise jour (insertion, destruction,
modification) : l'limination d'un noeud entrane l'limination de tous les segments de niveau
infrieur qui lui sont rattachs (risque de perdre des donnes uniques)
- indpendance logique trs rduite : la structure du schma doit reflter les besoins des
applications.
- pas d'interface utilisateur simple.
Le modle en rseau
Evolution du modle hirarchique intgrant les rsultats du travail du groupe CODASYL (comit
de langage de programmation), qui avait dmarr l'tude d'une extension de COBOL pour
manipuler les bases de donnes. En 1969, il donne ses premires recommandations concernant
syntaxe et smantique du LDD et du LMD.
Mme si cette vue est un peu simplificatrice, une base en rseau peut tre dcrite comme un
certain nombre de fichiers comportant des rfrences les uns vers les autres. Les entits sont
connectes entre elles l'aide de pointeurs logiques :
- un enregistrement d'un ensemble de donnes A est associ une srie d'enregistrements (ou
records) d'un autre ensemble de donnes B. On constitue ainsi des SET, ou COSET, structure
fondamentale du modle en rseau
- le lien entre les enregistrements de A et ceux de B est 1:N
- le COSET comporte un type d'enregistrement "propritaire" (l'enregistrement de A est dit
OWNER) et un type d'enregistrement "membre" (les enregistrements de B sont MEMBER).
Produits Fournisseurs
Magasin de Domiciliation
stockage Produit/Fournisseur bancaire
Le modle relationnel
C'est un article publi en 1969 par un mathmaticien du centre de recherche IBM, Codd, qui
dfinit les bases de ce modle relationnel. Codd s'est intress au concept d'information et a
cherch le dfinir sans se proccuper de la technique informatique, de ses exigences et de ses
contraintes. Il a tudi un modle de reprsentation des donnes qui repose sur la notion
mathmatique de "relation". Dans la pratique, une relation sera reprsente par une table de
valeurs.
Dfinitions
Une relation est un ensemble de tuples (lignes), dont l'ordre est sans importance. Les colonnes
de la table sont appeles attributs ou champs. Lordre des colonnes est dfini lors de la cration
de la table.
Une cl est un ensemble ordonn d'attributs qui caractrise un tuple. Une cl primaire le
caractrise de manire unique, l'inverse d'une cl secondaire.
On dit qu'un attribut A est un dterminant si sa connaissance dtermine celle de l'attribut B (B
dpend fonctionnellement de A).
Caractristiques du modle
Schma de donnes facile utiliser : toutes les valeurs sont des champs de tables deux
dimensions.
Amliore l'indpendance entre les niveaux logique et physique : pas de pointeurs visibles par
l'utilisateur.
Fournit aux utilisateurs des langages de haut niveau pouvant ventuellement tre utiliss par
des non-informaticiens (SQL, L4G) et un ensemble d'oprateurs bas sur l'algbre
relationnelle : union, intersection, diffrence, produit cartsien, projection, slection, jointure,
division.
Optimise les accs aux bases de donnes
Amliore l'intgrit et la confidentialit : unicit de cl, contrainte dintgrit rfrentielle
Prend en compte une varit d'applications, en gestion et en industriel
Fournir une approche mthodologique dans la construction des schmas.
Page 14/91
Module N 5 Manipulation de base de donne Filire : TSSSRI
Les formes normales permettent de construire un schma conceptuel correct partir des relations
Exemple:
L'exemple porte sur un ensemble de donnes concernant des tests de types diffrents, effectus
R (libell matriel, code marque, libell marque, type de test, date du test, rsultat du
test) n'est pas en 1re forme normale car aucun attribut ne peut tre cl primaire : le libell
matriel peut tre identique pour plusieurs lments.
R (code matriel, libell matriel, code marque, libell marque, code type de test, libell
du test, date du test, rsultat du test) n'est pas en 1re forme normale car on peut faire
plusieurs tests sur un mme matriel, ce qui exige de rpter les informations "code type de test",
"libell du test", "date du test", "rsultat du test", dans un mme nuple.
La relation doit tre clate en deux, pour tre exprime en 1re forme normale :
R-MATERIEL (code matriel, libell matriel, code marque, libell marque)
R-TEST (code matriel, code type, libell test, date du test, rsultat du test)
Les deux relations ne comportent que des attributs sans rptition. Dans R_TEST, la cl primaire
est compose de "code matriel" et "code type" : un type de test peut concerner plusieurs
matriels, un matriel peut tre test plusieurs fois, mais chaque matriel ne subit quune fois un
type de test donn.
R-TEST(code matriel, code type, libell test, date du test, rsultat du test)
n'est pas en 2me forme normale car l'attribut "libell test" ne dpend que du "code type" et pas du
"code matriel" ;
La relation doit clate en deux, pour tre exprime en deuxime forme normale :
N 1
MATERIEL MARQUE
TYPE TEST
1 1
TEST
N N
ADHERENT
Nom adhrent
Prnom adhrent ACTIVITE LIEU
Date de naissance
Adresse Nom du lieu
Code postal Nom activit Droit dentre
Ville
Numro de tlphone Tarif activit
Page 18/91
ACTIVITE
ADHERENT PRATIQUE
Num_adh Code_activ
Nom_adh Activ
Prn_adh Tarif
Dat_Nais_adh
Ad_adh
CP_adh UTILISE LIEU
Vil_adh
Num_tl_adh Code_lieu
Lieu
Entre
Num_adh est lidentifiant de la table ADHERENT. Ce champ sera dfini comme cl primaire
index sans doublon.
Code_activ est lidentifiant de la table ACTIVITE. Il sera dfini comme cl primaire index sans
doublon.
Code_lieu est lidentifiant de la table LIEU. Il sera dfini comme cl primaire index sans
doublon.
LES REGLES DE GESTION
Ce sont les rgles qui rgissent notre application. Ici un adhrent peut pratiquer plusieurs
activits, sur un seul lieu. Il suffira quil paie le tarif des cotisations correspondant aux
quipements utiliss, et le droit dentre sur le lieu de pratique.
LE MODELE RELATIONNEL
Nous devons maintenant crer le modle relationnel.
Les activits
Un adhrent peut pratiquer plusieurs ACTIVITES
Une activit peut tre pratique par plusieurs ADHERENTS
Il y a donc une relation de plusieurs plusieurs entre les tables ADHERENT et ACTIVITE.
Avec ACCESS, il nest pas possible de crer un tel type de relation directement entre deux tables. Il
faut ncessairement transiter par une table intermdiaire. Pour cela, il faut remplacer
lassociation matrialise par le verbe utiliser par une nouvelle table qui servira de lien entre les
2 autres tables.
Cette nouvelle table que nous appellerons PRATIQUE comprendra donc les champs suivants :
Num_adh
Code_activ
N.B Ces deux champs correspondent aux cls primaires des deux autres tables.
Nous tablirons une relation de type un plusieurs entre le champ Num_adh de la table
ADHERENT et le champ Num_adh de la table PRATIQUE.
Nous tablirons une relation de type un plusieurs entre le champ Code_activ de la table ACTIVITE
et le champ Code_activ de la table PRATIQUE.
Le lieu de pratique
Un adhrent ne pratique que sur un seul lieu.
Un lieu peut recevoir plusieurs adhrents.
N.B Nous avons donc une relation de un plusieurs entre la table LIEU et la table ADHERENT.
Pour crer cette relation, nous allons devoir rajouter dans la table ADHERENT le code du lieu de
pratique, afin dtablir la relation directe entre le champ Code_lieu de la table LIEU et le champ
Code_lieu de la table ADHERENT.
Le modle relationnel sera donc le suivant
Module N 5 Manipulation de base de donne Filire : TSSSRI
Page 20/91
PROPRIETAIRE VEHICULES
TYPE
Num immat NomType
Numro Possde
NomType Appartien Marque
Couleur Puissance
La relation entre la table PROPRIETAIRES et la table VEHICULES est matrialise par la table
POSSEDE. Celle-ci a comme attributs les deux cls primaires des deux tables et le champ Date
dachat, point de dpart de la possession du vhicule.
La relation entre la table VEHICULES et la table TYPES ne ncessite pas la cration dune table
intermdiaire puisquil sagit dune relation de un plusieurs de la table TYPES vers la table
VEHICULES.
Module N 5 Manipulation de base de donne Filire : TSSSRI
Pour qu'une base de donnes Access existe, il faut au moins une table. Il peut bien videmment y
en avoir plusieurs.
Les tables servent emmagasiner les donnes stables (quand on dit donnes stables, cela veut
dire que leur structure est stable ; par exemple une table clients contiendra toujours des noms,
des adresses, etc. et ces lments se retrouveront un emplacement dtermin).
La table ressemble physiquement une feuille de calcul Excel : il y a des colonnes, qui prennent ici
le nom de champs et des lignes qu'on appelle enregistrements.
Crer une table, c'est d'abord dcider de sa structure c'est--dire quels champs il faut crer et quel
sera leur type de contenu (alphabtique, numrique, etc.)
Enregistrements
(lignes)
Chaque ligne contiendra les coordonnes dun client
(On saisira ces donnes plus tard)
Le travail va consister dcider les noms des champs puis choisir le type de donnes qui
figureront dedans. (Par exemple, le nom de l'adhrent contiendra du texte exclusivement ;
ce sera donc un champ de type Texte).
Module N 5 Manipulation de base de donne Filire : TSSSRI
Entrez les noms des champs tels qu'ils apparaissent ci-contre ; pour le moment ne touchez
pas au type de donnes.
Vous obtenez
Jusque-l, vous travaillez sur la structure c'est--dire l'envers du dcor. Pour visualiser ce que vous
venez de crer, passez en mode feuille de donnes
Rpondez oui la question : la table doit d'abord tre enregistre, donnez-lui le nom
ADHRENTS et rpondez non la question laisser ACCESS dfinir une cl primaire.
Rsultat (rappel : vous vous trouvez en mode feuille de donnes)
Pour continuer travailler sur la structure de la table, il faut repasser en mode cration.
Page 24/91
Cliquez aprs le mot Texte sur la mme ligne que CodeAd et choisissez Numrique. Cela veut
dire que le code de vos adhrents sera constitu de chiffres. Remarque : un champ Texte peut
contenir des lettres ou des chiffres, alors qu'un champ Numrique ne peut contenir que des
chiffres.
Laissez les autres champs en texte.
Pour le CodePostal ; placez-vous sur sa ligne et limitez-le 5 caractres en corrigeant les 50
en 5 dans la zone Taille de champ de l'onglet Gnral en bas
Ce serait intressant de crer une liste droulante pour les civilits, c'est dire une liste
dans laquelle il suffirait de choisir au lieu d'avoir saisir.
Le curseur tant sur la ligne de Civilit, cliquez sur l'onglet Liste de choix puis sur la ligne
Zone de texte et choisissez Zone de liste modifiable.
Pour le moment, vous navez pas saisi ces donnes ; il est en effet
prfrable davoir cr toutes les tables utiles avant de les remplir,
car sil y avait une erreur dedans, en la corrigeant on risquerait de
perdre tout ou partie de la saisie, cest--dire davoir travaill
pour rien !
Notion de cl primaire
Dans un systme de gestion de bases de donnes comme Access, pour toute table que lon cre il
faut se poser une question : Quel est le champ qui contiendra pour chaque enregistrement
une caractristique unique ? (Vous allez comprendre : sil sagit de personnes, la caractristique
que lon est absolument sr de ne pas retrouver chez plusieurs personnes diffrentes, cest son
numro INSEE !) Il est indispensable que toute table comporte un tel champ, de faon que le
systme puissse identifier de manire certaine chaque enregistrement.
Dans la table ADHRENTS, quel champ va servir didentifiant ?
Cest bien sr le Code Adhrent : chaque adhrent aura le sien.
Pour indiquer au systme que le champ CodeAd est lidentifiant unique, vous allez poser dessus
une cl (on dit une cl primaire).
En mode cration, slectionnez la ligne de CodeAd et cliquez sur licne de cl. Un symbole de
cl sinsre en dbut de ligne.
Page 26/91
Pour Access, cela signifie quil est impossible de donner deux fois le mme code dans la
table.
Remarque : la cl est gnralement pose sur un champ numrique mais techniquement rien
n'empche de la poser sur un champ texte, dans la mesure o on est sr que le contenu sera
unique dans la table. Il est possible aussi de poser une cl sur deux champs en mme temps : ce
moment-l ce sera lassociation des deux contenus qui devra tre unique.
On peut louer trois types de bateaux, mais il y a plusieurs bateaux de chaque type ; vous aurez
donc besoin de deux tables : la table TYPES DE BATEAUX, qui contiendra pour chaque
enregistrement les caractristiques du type de bateau. La table BATEAUX contiendra le nom
propre de chaque bateau et sera rattache la table TYPES DE BATEAUX (de cettemanire, vous
naurez saisir les caractristiques quune fois par type de bateau). Dans la partie Tables de la
fentre Base de donnes, cliquer Crer une table en mode Cration.
Rflchissez maintenant aux champs ncessaires dans chacune de ces deux tables. Il sagit de
chercher dans le descriptif de la flotte ce qui se rapporte au Type de bateau et ce qui se rapporte
un bateau en particulier (de cette analyse dpend le bon fonctionnement de la base de donnes).
On peut ainsi schmatiser la structure de nos deux tables :
Catgorie CodeTypeBateau
NbPersonnesMax NomBateau
NbPersonnesMin Autres champs
TarifHteSaison
TarifBsSaison
Depuis la fentre Base de donnes, dans llment Tables, faites Crer une table en mode
cration.
Constituez la table TYPES DE BATEAUX comme sur le modle ci-contre. Noubliez pas de
poser la cl sur le premier champ. Vrifiez que vous ne vous tes pas tromp(e) de type de
donnes pour chaque champ. Pour les tarifs, mettez en plus de Montaire un format Euro dans
l'onglet du bas.
Refermez et enregistrez la table sous le nom TYPES DE BATEAUX (les donnes seront saisies
plus tard, de mme que pour la table ADHRENTS)
Crez la table CROISIRES comme ci-contre. Pour les champs montaires, demandez un
format euro.
Refermez la table.
La base AURAY comporte maintenant 4 tables : ADHRENTS, BATEAUX, TYPES DE BATEAUX
et CROISIRES.
Ainsi juxtaposes, les 4 tables ne communiquent pas entre elles. Les liaisons que vous allez tablir
dans le chapitre suivant vont les rendre communicantes.
Quelles relations peut-on tablir entre ces tables ? Pour trouver la rponse cette question, on
utilise des phrases avec sujet, verbe, complment :
Le fait de rserver ou louer nous amne crer deux autres tables : une table des rservations et
une table des locations dans laquelle seront stocks les lments propres aux rservations ou aux
locations (exemple : la date ; celle-ci est bien une caractristique de la rservation et non du
bateau).
Page 28/91
Crez la table RSERVATIONS comme ci-contre.
Placez la cl sur le champ CodeResa
Pour la date, prenez un format Date, abrg
Dfinition des relations
Cette partie du travail est particulirement importante, car si vous rencontrez des problmes ils se
rpercuteront tout au long du travail. Il faut donc imprativement que les relations fonctionnent
parfaitement.
Depuis la fentre de la Base de donnes, cliquez sur licne Relations
Vous vous trouvez sur ADHRENTS ; cliquez Ajouter. Dplacez-vous sur BATEAUX, cliquez
Ajouter, et ainsi de suite sur CROISIRES puis LOCATIONS puis RSERVATIONS puis TYPES
DE BATEAUX.
Les 6 tables sont affiches. Cliquez Fermer. (Si par mgarde vous avez ajout deux fois une
table, tez-la en appuyant sur la touche Suppr du clavier aprs l'avoir slectionne avec la souris).
Les tables peuvent tre redimensionnes et dplaces comme nimporte quelle fentre Windows.
Amnagez-les pour obtenir ceci :
Module N 5 Manipulation de base de donne Filire : TSSSRI
Placez-vous sur CodeAd de la table ADHRENTS et sans lcher le clic, tirez-le pour le dposer
sur le champ CodeAd de la table RSERVATIONS.
Dans la fentre qui apparat, cochez Appliquer lintgrit rfrentielle puis cliquez sur Crer.
Le rsultat est une ligne qui va de CodeAd de la table ADHRENTS jusqu CodeAd de la table
RSERVATIONS.
Signification de cette ligne
Le systme retrouve ladhrent qui a rserv grce son code, indiqu dans la table des
RSERVATIONS
1. Le chiffre 1 et le symbole (infini) signifient que pour 1 adhrent, plusieurs rservations sont
possibles. En revanche, une rservation ne peut tre attribue qu un et un seul adhrent.
2. Le sens de la relation, de 1 indique aussi que lorsque vous saisirez les donnes, il faudra
dabord saisir celles de la table du ct du 1 (en clair : il ne sera pas possible denregistrer une
rservation pour un adhrent qui nexiste pas encore).
Dfinissez les autres relations pour obtenir ceci (chaque fois il suffit de prendre le champ de
dmarrage et de le dposer sur le champ d'arrive, attention de ne pas vous tromper).
Vrifiez bien que votre cran est conforme cette image
Page 30/91
A partir de maintenant, le modle est prt. On sait quelles sont les tables, quels sont les champs
quelles contiennent avec quel type de donnes lintrieur, on sait o se trouvent les cls, et on
sait quelles relations unissent les tables.
Depuis la fentre Base de donnes, dans les tables, double-cliquez sur ADHRENTS pour ouvrir la
table en mode Feuille de donnes. Vous obtenez :
Vous allez saisir le premier adhrent de la liste. Cliquez dans le champ CodeAd, 1re ligne, et
saisissez 1 puis tabulateur pour passer au champ Civilit.
Cliquez sur la petite flche de la liste droulante et choisissez Madame.
Continuez saisir les donnes du premier adhrent. Constatez que le masque de saisie pour le
tlphone a bien fonctionn. Un petit problme se pose cependant : la date de naissance n'a pas
t prvue. Vous allez remedier cela.
La structure de la table peut encore tre modifie si cela ne touche pas au champ qui
comporte la cl. De plus il ne s'agit que d'ajouter un champ. Cliquez sur l'querre pour passer en
mode cration.
Slectionnez la ligne DateAd et appuyez sur la touche Inser du clavier pour ajouter une ligne
vierge.
Crez le champ DateNaiss de type Date/Heure et dans l'onglet Gnral du bas donnez un
format Date, abrg.
Module N 5 Manipulation de base de donne Filire : TSSSRI
Le champ DateAd n'avait pas jusqu'ici de format Date,abrg ; profitez de l'occasion pour le
faire.
Vous obtenez le rsultat ci-contre
La saisie que vous venez d'effectuer s'est faite en mode Table, c'est--dire dans un tableau o sont
regroupes toutes les donnes de tous les enregistrements.
Heureusement, on peut se faciliter la vie en crant une sorte de fentre de dialogue qui s'appelle
Formulaire. La diffrence avec la table, c'est que le formulaire n'affiche qu'un enregistrement la
fois. (Pour ceux qui connaissent la fonction Base de donnes d'Excel, cela correspond l'affichage
Grille).
Saisie en
Formulaire Donnes Donnes mode table
En fait les donnes sont toujours contenues dans la table ; si vous les saisissez depuis le
formulaire, elles vont dans le mme "rservoir".
Page 32/91
Saisie de donnes en mode formulaire
Grce aux assistants d'Access, le travail va tre facile.
Depuis la fentre Base de donnes, placez-vous sur la table TYPES DE BATEAUX et dveloppez le
menu droulant Nouvel objet, choisissez Formulaire automatique.
C'est vraiment instantan ! Vous avez devant les yeux un formulaire tout prt. Il n'y a plus qu'
entrer les donnes dedans et amliorer sa prsentation, mais ceci est un dtail que nous verrons
par la suite.
Vous allez vrifier que les donnes saisies dans le formulaire sont bien prsentes dans les tables.
Aujourd'hui, deux nouveaux clients s'inscrivent AURAY PLAISANCE ; avant de les enregistrer,
crez un formulaire instantan partir de la table ADHRENTS. Saisissez ensuite les donnes de :
Monsieur LE GUEN Denis fait part de son nouveau numro de tlphone : 06 14 30 45 78. Faites la
modification (vous pouvez pour cela utiliser le filtre par formulaire).
Madame MARIN a chang dadresse : dsormais elle habite 13 place Kerval (mme localit).
Tri
Ouvrez la table ADHRENTS. Vous voulez obtenir un tri alphabtique par noms dadhrents.
Page 34/91
Slectionnez le champ NomAd ; cliquez sur licne A/Z. Immdiatement, la table est trie.
Constatez que les donnes de la ligne entire ont suivi le nom de ladhrent (heureusement !)
Remarque : sous Excel, il peut arriver que les donnes soient destructures si vous avez fait une
slection malencontreuse ; avec Access, cela ne peut pas arriver.
Recherche
Vous recherchez ladhrent GUEGUEN. Cliquez sur licne qui reprsente des jumelles.
Remplissez la fentre dialogue comme suit.
Cliquez licne Filtrer par formulaire. Placez-vous dans le champ Ville et choisissez RENNES
dans la petite liste. Ensuite, cliquez sur Appliquer le filtre.
Vous avez devant les yeux la liste des adhrents de Rennes. Pour annuler le filtre, dsactivez
licne (qui sappelle maintenant Supprimer le filtre).
Supprimer le critre Rennes.
Filtrez les adhrents ns aprs le 1er janvier 1965 (saisissez > 01/01/65 dans le champ
DateNaiss).
Faites dautres essais votre guise (attention, noubliez pas dter les critres entre deux essais,
sinon le systme va chercher des enregistrements qui correspondent la fois plusieurs critres et
naura peut-tre pas de rponse).
Amliorer la prsentation d'un formulaire
Jusqu'ici nous ne nous sommes pas intresss la prsentation car d'autres choses taient plus
importantes toutefois il est toujours plus agrable de travailler sur un cran convivial et c'est
pourquoi vous allez consacrer un peu de temps amliorer votre cadre de saisie. Ceci est dans
votre intrt personnel, mais il faut penser que, dans l'entreprise, ce sont peut-tre d'autres
personnes qui devront saisir des donnes et qu'il est bon de leur faciliter aussi le travail.
Module N 5 Manipulation de base de donne Filire : TSSSRI
Depuis la fentre Base de donnes, dans l'lment Tables, placez-vous sur ADHRENTS et
crez un formulaire instantan comme d'habitude.
Vous obtenez :
Passez en mode Cration
Vous allez travailler sur l'envers du dcor. A tout moment, vous pouvez passer en mode
Visualisation pour voir leffet produit par vos manipulations.
Page 36/91
Les tiquettes (ou intituls) sont des emplacements o on peut crire ce quon veut, alors que
les zones de textes correspondent pour le systme des champs qui ont t dfinis dans la base
de donnes. Ainsi vous ne pouvez changer le mot CodeAd de la zone de texte fond blanc sans
perturber le fonctionnement. En revanche, le mot CodeAd sur fond gris de ltiquette peut tre
modifi.
Slectionnez le mot CodeAd ainsi
Tapez la place N Adhrent
Agrandissez la fentre au maximum
Ecrivez Adhrent la place de Civilit dans l'tiquette
Ecrivez NOM la place de NomAd
Supprimez l'tiquette CodePostal et l'tiquette Ville
Vous obtenez
Rapprochez les tiquettes des zones de texte concernes
Dplacez les contrles pour arriver une prsentation ressemblant celle-ci. Renommez les
tiquettes Numtel en Tlphone, DateAd en Date d'adhsion, DateNaiss en N(e) le.
Cliquez Affichage En-tte/Pied de formulaire.
Ouvrez la bote outils
Cliquez l'outil Aa
Crez une tiquette dans l'en-tte de formulaire (il faut la dessiner c'est--dire cliquer glisser
depuis le coin gauche suprieur jusqu'au coin droit infrieur).
Tapez ADHERENTS dans l'tiquette. Slectionnez le cadre pour mettre l'tiquette en 24 gras.
Cliquez avec le bouton droit sur le fond de l'en-tte de formulaire et dans l'option Couleur
d'arrire-plan remplissage, choisissez une couleur orange clair. Faites la mme chose pour la partie
Dtail du formulaire.
Vous allez formater en une fois toutes les tiquettes. Pour les slectionner, cliquez sur la
premire (N Adhrent) puis appuyez sur la touche MAJ du clavier et maintenez-la enfonce puis
cliquez sur chacune des autres tiquettes une par une. Lorsque la slection est faite, mettez les
tiquettes en gras italique. Peut-tre certaines d'entre elles seront trop troites il vous suffira de
les agrandir lgrement comme n'importe quel objet de dessin.
Vous allez amliorer l'alignement des zones de texte et des tiquettes. Slectionnez les zones
de texte (fond blanc) de la premire partie, depuis CodeAd jusqu' CodePostal. Cliquez avec le
bouton droit dans cette slection et choisissez Alignement puis Gauche.
Faites la mme chose pour les zones de texte de la deuxime partie.
Alignez les tiquettes de la premire partie sur la droite puis celle de la deuxime partie. Page
suivante, voir rsultat obtenir.
Repassez en mode Cration. Vous allez crer un bouton de commande pour fermer le
formulaire. Assurez-vous que l'outil Assistant est enclench.
Dans la bote outils, (affichez-la si ncessaire) choisissez l'outil Bouton de commande.
Dessinez un petit rectangle avec cet outil dans la zone en-tte du formulaire, droite de
l'tiquette ADHERENTS.
Choisissez les paramtres suivants : Oprations sur formulaire et Fermer formulaire
Dans la bote suivante, choisissez Texte Fermer Formulaire, Ok, puis donnez comme nom
votre bouton Fermer Adhrents.
Passez en mode Affichage pour juger du rsultat. Testez le fonctionnement de votre bouton.
Page 38/91
Allez au dernier enregistrement pour inscrire un nouvel adhrent
Enregistrez le nouvel adhrent : Mademoiselle Claire NANTREC, 7 impasse des Sternes,
RENNES, tlphone 02 99 65 41 89, date de naissance 5/6/71, individuel.
Fermez le formulaire.
Ouvrez le formulaire LOCATIONS en mode Cration.
Affichez En-tte et pied de formulaire. Crez une tiquette LOCATION DE BATEAUX dans len-
tte. Formatez-la en gras 18.
Le problme cest que pour enregistrer une location, il va falloir aller chercher le code de
ladhrent dans la table ADHRENTS et le code du bateau dans la table BATEAUX. Heureusement,
vous allez pouvoir automatiser tout cela grce aux outils assists.
La technique va consister supprimer le champ et le remplacer par une liste droulante,
laquelle ira chercher les donnes dans une table. Repassez en Cration.
Cliquez sur le contrle CodeAd et supprimez-le (touche Suppr).
Module N 5 Manipulation de base de donne Filire : TSSSRI
Dans la bote outils prenez loutil Zone de liste modifiable (licne Assistant doit tre
enclenche) et dessinez le nouveau contrle la mme place que prcdemment.
Cliquez deux fois Suivant (vous voulez que le systme aille chercher les donnes dans la table
ADHRENTS).
Dans le panneau suivant, prenez les trois premiers champs (CodeAd, NomAd et Prnom). Ce
sont ceux qui safficheront pour que vous puissiez choisir ladhrent. Cliquez Suivant.
Dans le panneau suivant, gardez loption Colonne cl cache (en fait, dans le formulaire, peu
vous importe de connatre le numro de ladhrent, pourvu que la machine sy retrouve).
Dans le panneau suivant, cochez loption Stocker la valeur dans le champ et choisissez
CodeAd. Ceci est une ncessit de la base de donnes pour quelle sy retrouve. Suivant.
Donnez comme nom ltiquette : Adhrent. Termin.
Passez en mode Affichage pour voir ce que a fait.
Revenez en mode Cration pour crer la deuxime liste modifiable.
Supprimez le contrle CodeBateau. Avec loutil zone de liste modifiable, dessinez-en un autre.
Avec lassistant, laissez-vous guider par les crans comme prcdemment (en choisissant la table
BATEAUX), gardez les trois colonnes, et noubliez pas de stocker la valeur dans le champ
CodeBateau. Donnez le nom Bateau retenu votre tiquette.
Passez en mode Affichage pour voir.
Repassez en Cration, mettez votre formulaire dans une couleur de votre choix.
Saisissez dans votre formulaire les locations suivantes :
Monsieur LE GOFF Andr loue un EAU CLAIRE (bateau de type 2) pour une semaine compter
du 20/07. Il y aura 3 adultes et 5 enfants.
Mademoiselle DURUEL Vronique loue un ESPADE 850 (type 1) pour 3 adultes pour deux
semaines compter du 09/09.
Monsieur BERLAND loue un CAT CAMP (type 3) pour la semaine prochaine pour 6 personnes
Cest dabord une question quon pose au systme (exemple : quels sont les clients qui habitent
RENNES ? ou Quels sont les bateaux retenus pour telle priode ?). Le systme fournit une rponse
sous forme de liste. Lavantage de dfinir une requte (par rapport une simple interrogation) est
que vous pouvez lenregistrer et vous en resservir plus tard. La rponse ultrieure du systme
tiendra compte, bien entendu, des mises jour qui auraient eu lieu entretemps.
Avec une requte on peut aussi faire des calculs, des regroupements,etc.
Dans le cas qui nous intresse, vous allez utiliser la requte pour regrouper des tables et ainsi
crer un formulaire qui affiche les donnes venant de ces tables.
Requte slection
Dans la fentre Base de donnes, placez-vous dans longlet Requtes, puis cliquez Crer une
requte en mode Cration.
Double-cliquez ADHRENTS puis fermer.
Page 40/91
Double-cliquez les champs suivants : CodeAd, NomAd, Prnom, Ville
Vous obtenez
Sur la ligne Critres du champ Ville saisissez RENNES. Vous obtenez :
Excutez la requte en appuyant sur licne point dexclamation de la barre doutils.
Le rsultat saffiche : il y a 3 clients RENNES..
Refermez la requte ; donnez-lui le nom
ADHRENTS RENNES.
Requte Tri
Vous voulez disposer tout moment dune liste des clients trie par codes postaux puis
alphabtiquement lintrieur de ce classement.
Pour linstant, inutile dexcuter la requte, car il ny a pas de donnes saisies dans les tables.
Refermez-la et donnez-lui comme nom Pour formulaire rservations.
Dans la fentre Base de donnes, placez-vous sur la requte que vous venez de crer et
cliquez sur Formulaire instantan de faon crer votre formulaire automatiquement en se
basant sur les tables regroupes dans la requte.
Supprimez le contrle RESERVATIONS.CodeC
Comme vous lavez fait dans le formulaire LOCATIONS, vous allez remplacer CodeAd par une
liste droulante qui affichera les noms en clair. Supprimez le contrle puis dessinez avec la bote
outils une zone de liste modifiable puis laissez-vous guider par les crans en choisissant la talbe
ADHRENTS et en demandant laffichage des champs CodeAd, NomAd, Prnom. Noubliez pas de
stocker la valeur dans le champ CodeAd.
Remplacez aussi le contrle CROISIERES.CodeCrois par une liste modifiable (choisissez la
talbe CROISIRES et demandez laffichage des 2 premiers champs) et stockez la valeur dans le
champ CodCrois. Supprimez le contrle NomCrois car cela ferait double emploi.
Passez en mode Affichage et remplissez votre formulaire pour tester son fonctionnement avec
cette rservation : Monsieur GUEGUEN Alphonse rserve une croisire AU FIL DE L'EAU pour le
20/07 pour un groupe de 32 personnes (17 adultes et 15 enfants)
Constatez que lorsque vous choisissez une croisire dans la liste droulante, ses
caractristiques se reportent automatiquement dans les autres champs. Ceci se fait en fonction de
tout ce que vous avez dtermin dans le modle de base. De mme, la ville o habite ladhrent se
reporte automatiquement.
Amliorez la prsentation du formulaire en le mettant en couleur,en alignant mieux les
diffrentes tiquettes et zones de texte. Insrer un en-tte de formulaire avec une tiquette de
titre RSERVATIONS DE CROISIRES, comme ci-dessous.
Le formulaire commence prendre tournure.Toutefois vous pensez peut-tre avec raison quil
serait intressant de pouvoir calculer directement le cot de cette rservation pour le client. Le
nombre dadultes et denfants est connu, de mme que les tarifs. Il faudrait pouvoir crer un
champ qui calcule. Cest possible ! Mais rappelez-vous, le formulaire est bas sur une requte.
Cest dans celle-ci quil faut prparer le champ calcul ; ensuite il suffira dinsrer ce nouveau
champ dans le formulaire.
Page 42/91
Fermez le formulaire, ouvrez la requte Pour formulaire RSERVATIONS en mode Cration.
Placez-vous sur le premier champ libre (tout--fait droite de tous les autres) et saisissez trs
exactement lexpression de calcul suivante (attention, toute erreur de crochet ou de majuscules
provoquera un dysfonctionnement). Noubliez pas le signe deux-points aprs Cot. Rappel : le
crochet sobtient en actionnant la touche AltGr et la touche 5 ou .
Cot:[NbAd]*[TarifAd]+[NbEnf]*[TarifEnf]
En effet, dans la liste qui apparat vous voyez le champ Cot que vous venez de crer. Prenez-
le avec la souris et placez-le dans le formulaire.
Passez en mode Affichage pour voir.
Enregistrez les deux rservations suivantes dans votre formulaire.
pour le 23/06 pour 40 adultes et 11 enfants pour le 7 juillet pour 52 personnes (35 adultes
entre 3 et 12 ans et 17 enfants)
Vous pouvez constater que ds que vous positionnez le nom de la croisire, le reste saffiche de lui-
mme. Toutefois vous avez remarqu que la touche tabulation qui vous permet de passer dun
champ lautre passe un peu du coq lne car les champs ont t dplacs ou rajouts et cela ne
suit pas lordre qui vous faciliterait la saisie. Il y a heureusement un remde.
Sans fermer la fentre des proprits, cliquez sur CodeAd ; mettez 1 la place de lindex tab.
Continuez de la mme manire pour tous les autres champs, jusquau Cot qui sera le 10e.
Dornavant, la touche tabulation vous emmnera du dbut la fin selon votre paramtrage !
Un nouvel adhrent sinscrit (le 3 juin) :
Jacques FERRUGIA
84 route de Vannes
56740 LOCMARIACQUER
Tl. 02 97 45 78 12 N le 7/3/51
Individuel
Vous allez lenregistrer dans le formulaire ADHRENTS ; toutefois vous avez remarqu que
vous tes oblig de taper en majuscules le nom de famille ; il serait prfrable de disposer dun
systme o la saisie serait faite en majuscules mme si on tape en minuscules. Il y a une solution !
Ouvrez le formulaire en mode Cration. Placez-vous sur le champ NomAd, ouvrez la fentre
des proprits, onglet Format. Sur la ligne Format, saisissez simplement le caractre > (il forcera
laffichage en majuscules dans ce champ).
Repassez en mode Affichage pour saisir votre nouvel adhrent et constatez que votre
manipulation a port ses fruits.
Enregistrez la location dans le formulaire LOCATIONS.
Page 44/91
Requte Mise jour
Malheureusement, les prix des locations de bateaux augmentent de 10 %. Vous allez devoir
changer les tarifs de la table TYPES DE BATEAUX. La mauvaise solution serait de le faire
manuellement ; bien entendu le cas de notre exemple est tellement petit que ce ne serait pas
gnant de faire les oprations la main. Mais il faut toujours penser gros volumes avec une
base de donnes.
Vous allez donc crer une requte qui procdera automatiquement laugmentation des prix.
Dans llment Requtes de la fentre Base de donnes, crez une requte en mode Cration.
Ajoutez la table TYPES DE BATEAUX, affichez tous les champs sauf les nombres de
personnes.
Cliquez sur le menu Requte et choisissez Requte Mise jour, ce qui aura pour effet
dajouter une ligne Mise jour dans vos champs.
Saisissez comme ci-dessous les expressions de calcul dans les champs des tarifs (attention,
pas derreur de saisie, sans quoi cela ne marchera pas !)
Excutez la requte. Attention, ne faites la manuvre quune seule fois ! Si vous la lancez
plusieurs fois, les prix seront augments plusieurs fois de 10 %, et chaque fois sur la base dj
augmente Il faudra alors calculer le coefficient capable de ramener les choses leur tat initial.
Donc vous lexcutez une seule fois et vous cliquez sur Feuille de donnes pour voir le rsultat.
Requte Somme/Regroupement
Vous aimeriez disposer dun moyen permanent de connatre ce qua rapport globalement chaque
type de croisire
Crez une requte en mode Cration, ajoutez la requte Pour formulaire RSERVATIONS,
affichez les champs Cot et CROISIERES.CodeCrois.
Cliquez licne de la barre doutils qui aura pour effet dajouter une ligne Regroupement
dans vos champs.
Dans cette ligne pour le champ Cot, droulez la liste et choisissez Somme. Pour le deuxime
champ, laissez Regroupement.
Excutez la requte. Fermez la requte et enregistrez-la sous le nom Chiffre daffaires
croisires. Vous pourrez tout moment lancer cette requte et connatre ainsi votre chiffre
daffaires croisires.
Requte slection (autre genre)
Vous souhaiteriez disposer moments rguliers de la liste des clients ayant lou un bateau et de
celle des clients ayant rserv une croisire. Cela pourra tre dit sous forme dtat, ce que vous
allez tudier dans le chapitre suivant. Mais il faut dj disposer de la requte qui fait lextraction de
donnes.
Crez une requte en mode Cration, ajoutez les tables ADHRENTS, RSERVATIONS,
CROISIRES.
Affichez les champs :Nom, Prnom, Ville, Individuel de la table ADHRENTS, NbAd et NbEnf
de la table RSERVATIONS, NomCrois de la table CROISIERES.
Pour connatre le nombre total de personnes de chaque croisire, crez un champ calcul sur
le premier champ vierge, ainsi paramtr :
Nb Total :[NbAd]+[NbEnf]
Excutez la requte.
Module N 5 Manipulation de base de donne Filire : TSSSRI
Vous voudriez que la liste soit trie par ordre alphabtique des clients. Que pouvez-vous modifier
dans la requte pour lobtenir ?
IV Langage SQL
INTRODUCTION
Qu'appelle ton SQL?
SQL (Structured Query Language, traduisez Langage de requtes structur) est un langage de
dfinition de donnes (LDD, ou en anglais DDL Data Definition Language), un langage de
manipulation de donnes (LMD, ou en anglais DML, Data Manipulation Language), et un langage de
contrle de donnes (LCD, ou en anglais DCL, Data Control Language), pour les bases de donnes
relationnelles.
Le modle relationnel a t invent par E.F. Codd (Directeur de recherche du centre IBM de San
Jos) en 1970, suite quoi de nombreux langages ont fait leur apparition:
IBM Sequel (Structured English Query Language) en 1977
IBM Sequel/2
IBM System/R
IBM DB2
Ce sont ces langages qui ont donn naissance au standard SQL, normalis en 1986 par l'ANSI pour
donner SQL/86. Puis en 1989 la version SQL/89 a t approuve. La norme SQL/92 a dsormais
pour nom SQL 2.
SQL est un langage de dfinition de donnes
SQL est un langage de dfinition de donnes (LDD), c'est--dire qu'il permet de crer des tables
dans une base de donnes relationnelle, ainsi que d'en modifier ou en supprimer.
SQL est un langage de manipulation de donnes
SQL est un langage de manipulation de donnes (LMD), cela signifie qu'il permet de slectionner,
insrer, modifier ou supprimer des donnes dans une table d'une base de donnes relationnelle.
SQL est un langage de protections d'accs
Il est possible avec SQL de dfinir des permissions au niveau des utilisateurs d'une base de
donnes. On parle de DCL (Data Control Language).
Typologie du langage
Il est possible d'inclure des requtes SQL dans un programme crit dans un autre langage (en
langage C par exemple), ainsi que d'envoyer directement les requtes SQL telles quelles au SGBD.
Il est possible d'ajouter des commentaires grce:
au caractre %. Tous les caractres situs aprs celui-ci sur la mme ligne ne seront pas
interprts
aux dlimiteurs /* et */. Tous les caractres compris entre les dlimiteurs sont considrs
comme des commentaires
Le langage SQL n'est pas sensible la casse (en anglais case sensitive), cela signifie que l'on peut
aussi bien crire les instructions en minuscules qu'en majuscule. Toutefois, cette insensibilit la
casse n'est que partielle dans la mesure o la diffrenciation entre minuscules et majuscules existe
au niveau des identificateurs d'objets.
La commande SELECT est base sur l'algbre relationnelle, en effectuant des oprations de
slection de donnes sur plusieurs tables relationnelles par projection. Sa syntaxe est la suivante:
Page 46/91
SELECT [ALL] | [DISTINCT] <liste des noms de colonnes> | *
FROM <Liste des tables>
[WHERE <condition logique>]
Il existe d'autres options pour la commande SELECT:
GROUP BY
HAVING
ORDER BY
L'option ALL est, par opposition l'option DISTINCT, l'option par dfaut. Elle permet de
slectionner l'ensemble des lignes satisfaisant la condition logique
L'option DISTINCT permet de ne conserver que des lignes distinctes, en liminant les
doublons
La liste des noms de colonnes indique la liste des colonnes choisies, spares par des
virgules. Lorsque l'on dsire slectionner l'ensemble des colonnes d'une table il n'est pas
ncessaire de saisir la liste de ses colonnes, l'option * permet de raliser cette tche
La liste des tables indique l'ensemble des tables (spares par des virgules) sur
lesquelles on opre
La condition logique permet d'exprimer des qualifications complexes l'aide d'oprateurs
logiques et de comparateurs arithmtiques
III- EXPRESSION DES PROJECTIONS
Expression d'une projection
Une projection est une instruction permettant de slectionner un ensemble de colonnes dans une
table. Soit la table VOITURE suivante:
TABLE VOITURE
Marque Modle srie Numro
Renault 18 RL 469sj45
Renault Kango RL 4568hd16
Renault kango RL 6576VE38
Peugeot 106 KID 7845ZS83
Peugeot 309 Chorus 5647ABY82
Ford Escort Match 8562EV23
La slection des colonnes Modle et Srie en liminant les doublons se fait par l'instruction:
SELECT DISTINCT Modle, Srie FROM VOITURE
Rsultat Modle srie
18 RL
kango RL
106 KID
Module N 5 Manipulation de base de donne Filire : TSSSRI
309 Chorus
Escort Match
TABLE OCCAZ
Marque Modle srie Numro Compteur
Renault 18 RL 469sj45 123450
Renault Kango RL 4568hd16 56000
Renault kango RL 6576VE38 12000
Peugeot 106 KID 7845ZS83 75600
Peugeot 309 Chorus 5647ABY82 189500
Ford Escort Match 8562EV23
Le champ prsentant la valeur du kilomtrage au compteur de la Ford Escort est dlibrment non
renseign.
La slection de toutes les voitures d'occasion ayant un kilomtrage infrieur 100 000 Km se fait
par l'instruction:
SELECT * FROM OCCAZ
WHERE (Compteur < 100000)
Rsultat Marque Modle srie Numro Compteur
Renault Kango RL 4568hd16 56000
Renault kango RL 6576VE38 12000
Peugeot 106 KID 7845ZS83 75600
La slection des colonnes Marque et Compteur des voitures ayant un kilomtrage infrieur 100
000 Km se fait par l'instruction:
SELECT Marque, Compteur FROM OCCAZ
WHERE (Compteur < 100000)
Rsultat Marque Compteur
Renault 56000
Renault 12000
Peugeot 75600
La slection de toutes les voitures d'occasion ayant un kilomtrage infrieur ou gal 100 000 Km,
mais suprieur ou gal 30000Km, se fait par l'instruction:
Page 48/91
SELECT * FROM OCCAZ
WHERE (Compteur <= 100000) AND (Compteur >= 30000)
Rsultat Marque Modle srie Numro Compteur
Renault Kango RL 4568hd16 56000
Peugeot 106 KID 7845ZS83 75600
Restriction sur une comparaison de chane
Le prdicat LIKE permet de faire des comparaisons sur des chanes grce des caractres, appels
caractres jokers:
Le caractre % permet de remplacer une squence de caractres (ventuellement nulle)
Le caractre _ permet de remplacer un caractre (l'quivalent du "blanc" au scrabble...)
Les caractres [-] permettent de dfinir un intervalle de caractres (par exemple [J-M])
La slection des voitures dont la marque a un E en deuxime position se fait par l'instruction:
SELECT * FROM OCCAZ
WHERE Marque LIKE _E%
Rsultat Marque Modle srie Numro Compteur
Renault 18 RL 469sj45 123450
Renault Kango RL 4568hd16 56000
Renault kango RL 6576VE38 12000
Peugeot 106 KID 7845ZS83 75600
Peugeot 309 Chorus 5647ABY82 189500
La slection des voitures d'occasion dont la marque est Peugeot ou Ford se fait grce
l'instruction:
SELECT * FROM OCCAZ
WHERE Marque IN (Peugeot, Ford)
Rsultat Marque Modle srie Numro Compteur
Peugeot 106 KID 7845ZS83 75600
Peugeot 309 Chorus 5647ABY82 189500
Ford Escort Match 8562EV23
La slection de toutes les colonnes de la table tries par ordre croissant de l'attribut Marque, puis
par ordre dcroissant du compteur, se fait par l'instruction:
SELECT * FROM VOITURE
ORDER BY Marque ASC, Compteur DESC
Rsultat Marque Modle srie Numro Compteur
Ford Escort Match 8562EV23
Peugeot 106 KID 7845ZS83 75600
Peugeot 309 Chorus 5647ABY82 189500
Renault 18 RL 469sj45 123450
Renault Kango RL 4568hd16 56000
Renault kango RL 6576VE38 12000
Regroupement de rsultats
Il peut tre intressant de regrouper des rsultats afin de faire des oprations par groupe
(oprations statistiques par exemple). Cette opration se ralise l'aide de la clause GROUP BY,
suivie du nom de chaque colonne sur laquelle on veut effectuer des regroupements.
Les principales fonctions pouvant tre effectues par groupe sont:
AVG: Calcule la moyenne d'une colonne (ou de chaque regroupement si elle est couple la clause
GROUP BY)
COUNT: Calcule le nombre de lignes d'une table (ou de chaque regroupement ...)
MAX: Calcule la valeur maximale d'une colonne (ou de chaque regroupement ...)
MIN: Calcule la valeur minimale colonne (ou de chaque regroupement ...)
SUM: Effectue la somme des valeurs d'une colonne (ou de chaque regroupement ...)
Soit la table VOITURE ci-dessus:
L'affichage des moyennes des compteurs par marque se fait par l'instruction:
SELECT AVG(Compteur) FROM VOITURE
GROUP BY Marque
Rsultat Marque Modle srie Numro Compteur
Renault kango RL 4568hd16 70350
Peugeot 309 Chorus 5647ABY82 63816.6
Ford Escort Match 8562EV23
La clause HAVING va de pair avec la clause GROUP BY, elle permet d'appliquer une restriction sur
les groupes crs grce la clause GROUP BY.
Page 50/91
L'affichage des moyennes des compteurs non nulles regroupes par marque se fait par
l'instruction:
SELECT AVG(Compteur) FROM VOITURE
GROUP BY Marque
HAVING Compteur IS NOT NULL
Rsultat Marque Modle srie Numro Compteur
Peugeot 309 Chorus 5647ABY82 70350
Ford Escort Match 8562EV23 63816.6
LES JOINTURES
Expression des jointures
Une jointure (ou -jointure) est un produit cartsien de deux tables. On appelle quijointure une -
jointure dont la qualification est une galit entre deux colonnes.
En SQL, l'expression d'une jointure se fait en prcisant le nom des colonnes des tables sur
lesquelles on fait la jointure, en dsignant les colonnes des diffrentes tables en crivant le nom de
la table, suivie d'un point puis du nom de la colonne. La clause WHERE permet de prciser la
qualification de la jointure.
Soit les deux tables suivantes:
TABLE OCCAZ
Marque Modle srie Numro Compteur
Renault 18 RL 469sj45 123450
Renault Kango RL 4568hd16 56000
Renault kango RL 6576VE38 12000
Peugeot 106 KID 7845ZS83 75600
Peugeot 309 Chorus 5647ABY82 189500
Ford Escort Match 8562EV23
TABLE SOCIETE
NOM PAYS
Renault France
Peugeot France
Ford US
L'affichage des pays d'origine des voitures par marque/modle se fait par l'instruction:
SELECT Occaz.Marque, Occaz.Modele, Societe.Nom, Societe.Pays FROM OCCAZ,SOCIETE
WHERE Occaz.Marque = Societe.Nom
Rsultat Marque Modle Pays
Renault 18 France
Renault Kango France
Renault kango France
Peugeot 106 France
Peugeot 309 France
Ford Escort US
LES SOUS-REQUETES
Expression des sous requtes
Effectuer une sous requte consiste effectuer une requte l'intrieur d'une autre, ou en d'autres
termes d'utiliser une requte afin d'en raliser une autre.
Une sous-requte doit tre place la suite d'une clause WHERE ou HAVING, et doit remplacer une
constante ou un groupe de constantes qui permettraient en temps normal d'exprimer la
qualification.
Lorsque la sous-requte remplace une constante utilise avec des oprateurs classique, elle doit
obligatoirement renvoyer une seule rponse (une table d'une ligne et une colonne). Par exemple:
SELECT ---- FROM ----
WHERE ---- < (SELECT ---- FROM ----)
Module N 5 Manipulation de base de donne Filire : TSSSRI
Lorsque la sous-requte remplace une constante utilise dans une expression mettant en jeu les
oprateurs IN, EXISTS, ALL ou ANY, elle doit obligatoirement renvoyer une seule ligne.
SELECT ---- FROM ----
WHERE ---- IN (SELECT ---- FROM ----)
Revenons a la table voiture:
La slection des voitures dont le compteur est infrieur la moyenne se fait par l'instruction:
SELECT * FROM OCCAZ
WHERE Compteur < (SELECT AVG(Compteur) FROM OCCAZ)
Rsultat Marque Modle srie Numro Compteur
Renault Kango RL 4568hd16 56000
Renault Kango RL 6576VE38 12000
Peugeot 106 KID 7845ZS83 75600
OPERATIONS ENSEMBLISTES
Les oprations ensemblistes
Les oprations ensemblistes en SQL, sont ceux dfinis dans l'algbre relationnelle. Elles sont
ralises grce aux oprateurs:
UNION
INTERSECT (ne fait pas partie de la norme SQL et n'est donc pas implment dans tous les SGBD)
EXCEPT (ne fait pas partie de la norme SQL et n'est donc pas implment dans tous les SGBD)
Ces oprateurs s'utilisent entre deux clauses SELECT.
L'oprateur UNION
Cet oprateur permet d'effectuer une UNION des tuples slectionns par deux clauses SELECT (les
deux tables sur lesquelles on travaille devant avoir le mme schma).
SELECT ---- FROM ---- WHERE ------
UNION
SELECT ---- FROM ---- WHERE ------
Par dfaut les doublons sont automatiquement limins. Pour conserver les doublons, il est
possible d'utiliser une clause UNION ALL.
L'oprateur INTERSECT
Cet oprateur permet d'effectuer une INTERSECTION des tuples slectionns par deux clauses
SELECT (les deux tables sur lesquelles on travaille devant avoir le mme schma).
SELECT ---- FROM ---- WHERE ------
INTERSECT
SELECT ---- FROM ---- WHERE ------
L'oprateur INTERSECT n'tant pas implment dans tous les SGBD, il est possible de le remplacer
par des commandes usuelles:
SELECT a,b FROM table1
WHERE EXISTS ( SELECT c,d FROM table2
WHERE a=c AND b=d )
L'oprateur EXCEPT
Cet oprateur permet d'effectuer une DIFFERENCE entre les tuples slectionns par deux clauses
SELECT, c'est--dire slectionner les tuples de la seconde table n'appartenant pas la premire
(les deux tables devant avoir le mme schma).
SELECT a,b FROM table1 WHERE ------
INTERSECT
SELECT c,d FROM table2 WHERE ------
L'oprateur EXCEPT n'tant pas implment dans tous les SGBD, il est possible de le remplacer par
des commandes usuelles:
SELECT a,b FROM table1
WHERE NOT EXISTS ( SELECT c,d FROM table2
WHERE a=c AND b=d)
Page 52/91
MODIFICATION DES DONNEES
Le SQL permet la modification d'une table par un utilisateur (pour peu qu'il ait les droits
suffisants...). La modification d'une table consiste :
Ajouter des tuples
Modifier des tuples existants
Ou bien supprimer des tuples
Insertion de donnes
L'insertion de nouvelles donnes dans une table se fait grce l'ordre INSERT, qui permet d'insrer
de nouvelles lignes dans la table.
L'ordre INSERT attend la clause INTO, suivie du nom de la table, ainsi que du nom de chacune des
colonnes entre parenthses (les colonnes omises prendront la valeur NULL par dfaut).
Les valeurs insrer peuvent tre prcises de deux faons:
avec la clause VALUES: une seule ligne est insre, elle contient comme valeurs, l'ensemble des
valeurs passes en paramtre dans la parenthse qui suit la clause VALUES. Les donnes sont
affectes aux colonnes dans l'ordre dans lequel les colonnes ont t dclares dans la clause INTO
INSERT INTO Nom_de_la_table(colonne1,colonne2,colonne3,...)
VALUES (Valeur1, Valeur2, Valeur3,...)
Lorsque chaque colonne de la table est modifie, l'numration de l'ensemble des colonnes est
facultative
avec la clause SELECT: plusieurs lignes peuvent tre insres, elle contiennent comme valeurs,
l'ensemble des valeurs dcoulant de la slection. Les donnes sont affectes aux colonnes dans
l'ordre dans lequel les colonnes ont t dclares dans la clause INTO
INSERT INTO Nom_de_la_table(colonne1,colonne2,...)
SELECT colonne1, colonne2,... FROM Nom_de_la_table2
WHERE qualification
Lorsque l'on remplace un nom de colonne suivant la clause SELECT par une constante, sa valeur
est affecte par dfaut aux tuples. Il n'est pas possible de slectionner des tuples dans la table
dans laquelle on insre des lignes (en d'autres termes Nom_de_la_table doit tre diffrent de
Nom_de_la_table2)
Modification de donnes
La modification de donnes (aussi appele mise jour) consiste modifier des tuples (des lignes)
dans une table grce l'ordre UPDATE. La modification effectuer est prcis aprs la clause SET.
Il s'agit d'une affectation d'une valeur une colonne grce l'oprateur = suivi d'une expression
algbrique, d'une constante ou du rsultat provenant d'une clause SELECT. La clause WHERE
permet de prciser les tuples sur lesquels la mises jour aura lieu
UPDATE Nom_de_la_table
SET Colonne = Valeur_Ou_Expression
WHERE qualification
Suppression de donnes
La suppression de donnes dans une table se fait grce l'ordre DELETE. Celui-ci est suivi de la
clause FROM, prcisant la table sur laquelle la suppression s'effectue, puis d'une clause WHERE qui
dcrit la qualification, c'est--dire l'ensemble des lignes qui seront supprimes.
L'ordre DELETE est utiliser avec prcaution car l'opration de suppression est irrversible. Il
faudra donc s'assurer dans un premier temps que les lignes slectionnes sont bien les lignes que
l'on dsire supprimer!
Nom_de_colonne2 Type_de_donne,
...);
Le nom donn la table doit gnralement (sur la plupart des SGBD) commencer par une lettre, et
le nombre de colonnes maximum par table est de 254.
Les types de donnes
Pour chaque colonne que l'on cre, il faut prciser le type de donnes que le champ va contenir.
Celui-ci peut tre un des types suivants:
L'option NOT NULL, place immdiatement aprs la type de donne permet de prciser au systme
que la saisie de ce champ est obligatoire.
Insertion de lignes la cration
Il est possible de crer une table en insrant directement des lignes lors de la cration. Les lignes
insrer peuvent tre alors rcupres d'une table existante grce au prdicat AS SELECT. La
syntaxe d'une telle expression est la suivante:
CREATE TABLE Nom_de_la_table (Nom_de_colonne1 Type_de_donne,
Nom_de_colonne2 Type_de_donne,
...)
AS SELECT Nom_du_champ1,
Nom_du_champ2,
...
FROM Nom_de_la_table2
WHERE Prdicat;
LES CONTRAINTES DINTEGRITE
Expression de contraintes d'intgrit
Une contrainte d'intgrit est une clause permettant de contraindre la modification de tables, faite
par l'intermdiaire de requtes d'utilisateurs, afin que les donnes saisies dans la base soient
conformes aux donnes attendues. Ces contraintes doivent tre exprimes ds la cration de la
table grce aux mots cls suivants:
CONSTRAINT
DEFAULT
NOT NULL
UNIQUE
CHECK
Dfinir une valeur par dfaut
Le langage SQL permet de dfinir une valeur par dfaut lorsqu'un champ de la base n'est pas
renseign grce la clause DEFAULT. Cela permet notamment de faciliter la cration de tables,
ainsi que de garantir qu'un champ ne sera pas vide.
La clause DEFAULT doit tre suivie par la valeur affecter. Cette valeur peut tre un des types
suivants:
Constante numrique
Constante alphanumrique (chane de caractres)
Le mot cl USER (nom de l'utilisateur)
Le mot cl NULL
Le mot cl CURRENT_DATE (date de saisie)
Page 54/91
Le mot cl CURRENT_TIME (heure de saisie)
Le mot cl CURRENT_TIMESTAMP (date et heure de saisie)
Forcer la saisie d'un champ
Le mot cl NOT NULL permet de spcifier qu'un champ doit tre saisi, c'est--dire que le SGBD
refusera d'insrer des tuples dont un champ comportant la clause NOT NULL n'est pas renseign.
Emettre une condition sur un champ
Il est possible de faire un test sur un champ grce la clause CHECK() comportant une condition
logique portant sur une valeur entre les parenthses. Si la valeur saisie est diffrente de NULL, le
SGBD va effectuer un test grce la condition logique. Celui-ci peut ventuellement tre une
condition avec des ordres SELECT...
Tester l'unicit d'une valeur
La clause UNIQUE permet de vrifier que la valeur saisie pour un champ n'existe pas dj dans la
table. Cela permet de garantir que toutes les valeurs d'une colonne d'une table seront diffrentes.
Nommer une contrainte
Il est possible de donner un nom une contrainte grce au mot cl CONSTRAINT suivi du nom que
l'on donne la contrainte, de telle manire ce que le nom donn s'affiche en cas de non respect
de l'intgrit, c'est--dire lorsque la clause que l'on a spcifie n'est pas valide.
Si la clause CONSTRAINT n'est pas spcifie, un nom sera donn arbitrairement par le SGBD.
Toutefois, le nom donn par le SGBD risque fortement de ne pas tre comprhensible, et ne sera
vraisemblablement pas compris lorsqu'il y aura une erreur d'intgrit. La stipulation de cette clause
est donc fortement conseille.
Exemple de cration de table avec contrainte
Voici un exemple permettant de voir la syntaxe d'une instruction de cration de table avec
contraintes:
create TABLE clients(
Nom char(30) NOT NULL,
Prenom char(30) NOT NULL,
Age integer, check (age < 100),
Email char(50) NOT NULL, check (Email LIKE "%@%"))
Dfinition de cls
Grce SQL, il est possible de dfinir des cls, c'est--dire spcifier la (ou les) colonne(s) dont la
connaissance permet de dsigner prcisment un et un seul tuple (une ligne).
L'ensemble des colonnes faisant partie de la table en cours permettant de dsigner de faon unique
un tuple est appel cl primaire et se dfinit grce la clause PRIMARY KEY suivie de la liste de
colonnes, spares par des virgules, entre parenthses. Ces colonnes ne peuvent alors plus
prendre la valeur NULL et doivent tre telles que deux lignes ne puissent avoir simultanment la
mme combinaison de valeurs pour ces colonnes.
PRIMARY KEY (colonne1, colonne2, ...)
Lorsqu'une liste de colonnes de la table en cours de dfinition permet de dfinir la cl primaire
d'une table trangre, on parle alors de cl trangre, et on utilise la clause FOREIGN KEY suivie
de la liste de colonnes de la table en cours de dfinition, spares par des virgules, entre
parenthses, puis de la clause REFERENCES suivie du nom de la table trangre et de la liste de
ses colonnes correspondantes, spares par des virgules, entre parenthses.
FOREIGN KEY (colonne1, colonne2, ...)
REFERENCES Nom_de_la_table_etrangere(colonne1,colonne2,...)
Module N 5 Manipulation de base de donne Filire : TSSSRI
Reprenons lexemple de dpart. Le directeur du centre souhaite que lorsque ladhrent vient
sinscrire, la saisie soit facile faire et que le montant payer apparaisse directement sur le
formulaire de saisie. Le reu des cotisations devra alors pouvoir tre imprim facilement.
Nous allons donc crer un formulaire de saisie qui nous permettra dentrer les renseignement
concernant ladhrent et les activits quil souhaite pratiquer, et visualiser le montant total payer.
La saisie doit pouvoir se faire dans les deux tables ADHERENT et PRATIQUE, au moyen dun seul
formulaire, avec sous formulaire, qui se prsentera ainsi :
Nous devons baser le formulaire principal sur une requte partir des tables ADHERENT et LIEU,
de faon faire apparatre tous les champs concernant ladhrent, son lieu de pratique et le
montant du droit dentre quil aura payer. Cette requte est trie sur le numro de ladhrent, et
se nommera R_entre par adhrent.
Pour le sous formulaire nous crons une requte base sur la table PRATIQUE et la table
ACTIVITE, en filtrant :
Code_activ de la table PRATIQUE
Activits de la table ACTIVITES
Tarif de la table ACTIVITES
Num_adh de la table PRATIQUE
Elle se nommera R_activits par adhrent et aura lallure suivante :
Le formulaire est cr laide de lassistant partir de tous les champs de la premire requte
(pour le formulaire principal) , et des champs Code_activ, Activit et Tarif de la deuxime
requte (pour le sous formulaire).
Le formulaire principal est nomm SAISIE DES ADHERENTS et le sous formulaire SF activits
par adhrent.
Il reste maintenant modifier le formulaire principal de faon faire apparatre le montant global
des cotisations concernant les activits et le montant total payer par ladhrent.
Le droit dentre figure dj dans le formulaire principal dans un contrle nomm Entre. On peut
le dplacer en bas du formulaire de faon le regrouper avec les autres calculs.
Calculs dans le sous formulaire
Il faut modifier le sous formulaire SF activits par adhrent de faon rajouter le calcul du total
des cotisations, dans le pied de formulaire. Ce calcul est introduit dans un contrle de type zone de
texte par la formule suivante :
=SOMME([tarif])
Ce contrle est nomm Total.
Calculs dans le formulaire principal
Dans le formulaire principal, il suffit maintenant de crer un contrle de type Zone de texte dans
lequel on va gnrer la formule suivante :
=[SF activits par adhrent].[Formulaire]![Total]
Celle-ci rcupre le total des cotisations dans le sous-formulaire. Ce contrle se nommera Cotis.
Dans un autre contrle de type zone de texte, il suffit maintenant dentrer la formule suivante :
=[Entre]+[Cotis]
Celle-ci renvoie le total d par ladhrent.
Page 56/91
Nous pouvons aussi ajouter un contrle de type Zone de liste pour faciliter le choix du lieu de
pratique.
Nous pouvons schmatiser lenchainement des lments de la faon suivante :
REQUETE REQUETE
R_entre par adhrent R_activits par adhrent
Formulaire principal
Calculs
Sous formulaire
avec calcul du total
VI LES ETATS
L'tat, dans un systme de bases de donnes, est l'lment qui permet d'obtenir une prsentation
des donnes sur papier. Bien sr vous pouvez imprimer n'importe quel autre objet, table,
formulaire, etc. Mais vous aurez une liste exhaustive de toutes les donnes et de tous les champs,
alors qu'un tat donne la possibilit de n'imprimer que certains champs, avec une mise en forme
choisie, et de plus on peut obtenir des calculs et des regroupements. Il est aussi possible par le
biais de l'tat de crer des tiquettes pour envoyer des courriers.
tat-liste
Pour obtenir une tat ainsi prsent, vous allez utiliser l'assistant-tat d'Access.
Module N 5 Manipulation de base de donne Filire : TSSSRI
Cet tat, comme vous le voyez, affiche les adhrents et les classe par ville. Tri alphabtique
l'intrieur de chaque ville.
Dans le fentre Bases de donnes, placez-vous dans l'onglet Etats et cliquez crer un Etat
l'aide de l'assistant.
Double-cliquez les champs suivants : Civilit, NomAd, Prnom, Adresse, CodePostal, Ville,
DateAd. Cliquez Suivant.
Dans le panneau suivant, choisissez le niveau de regroupement : Ville (double-cliquez
dessus). Vous voyez se dessiner l'tat. Cliquez Suivant.
Choisissez NomAd dans le panneau qui suit. Cliquez Suivant.
Cliquez encore deux fois Suivant et la fin acceptez le nom Adhrents pour votre tat.
L'tat se prsente l'cran en mode Affichage ; mais le fait d'avoir utilis l'assistant ne vous
oblige pas accepter la prsentation exactement telle qu'il la propose ! Vous prfreriez juste
titre avoir une prsentation en Paysage pour ne pas tronquer certains champs.
Passez en mode Cration. Vous tes l'envers du dcor.
Regardez comment se prsente la structure de cet tat ; dans la section En-tte de page,
vous avez les tiquettes (les titres des colonnes) dans la section En-tte de groupe vous avez le
champ de regroupement (Ville) et dans la section Dtail, ce sont les zones de texte (l o
saffichent les donnes).
Commencez par mettre ltat en Paysage (Fichier Mise en page, Page, Paysage).
Ensuite arrangez, dplacez, agrandissez les tiquettes pour quelles ne soient pas tronques ;
vous pouvez changer leur contenu si vous le souhaitez (par exemple, au lieu de DateAd saisissez
Date dadhsion). Puis modifiez la place des zones de texte de la section Dtail pour quelles
soient conformes au tiquettes. Ne changez rien au contenu des zones de texte, car comme vous le
savez, ces contenus correspondent des champs bien prcis de la base.
Passez en Affichage pour voir (pour les tats, le mode Affichage est symbolis par licne
Aperu). Les traits bleus sont trop courts maintenant que vous avez mis la page en Paysage.
Repassez en Cration, reprez les traits (ils sont dans la section En-tte de page au ras en
haut et en bas de cette zone) et agrandissez-les avec la souris.
Changez le titre de ltat : juste aprs ADHRENTS, saisissez PAR VILLE.
Jugez de leffet en mode Affichage. Imprimez votre tat.
Planche dtiquettes
Depuis llment Etats de la fentre Base de donnes, cliquez sur licne Nouvel Objet,
choisissez Etat, puis Assistant Etiquette, et choisissez ADHRENTS comme table.
Page 58/91
Cliquez deux fois sur Suivant.
Double-cliquez sur les champs insrer dans ltiquette en plaant des espaces entre eux. Si
vous ne mettez pas despaces, ne vous plaignez pas ensuite que la prsentation est vilaine.
Dans le panneau suivant, choisissez le tri sur le NomAd pour diter vos tiquettes en ordre
alphabtique. Suivant. Terminer. Vos 10 tiquettes doivent tenir sur une page A4.
Vous avez cr prcdemment une requte qui prsente les locations par types de bateaux.
Vous souhaiteriez disposer dun Etat bas sur cette requte qui effectuerait des calculs : dabord le
nombre total et le nombre moyen de participants un sjour pour un type de bateau, ensuite la
dure moyenne dun sjour ainsi que la dure totale par type de bateau.
Dans Etats, cliquez Crer un tat laide de lassistant. Basez-vous sur la requte
LOCATIONS PAR TYPE DE BATEAU.
Ajoutez les champs Catgorie, NomBateau, NomAd, Nb total, Dure. Cliquez 3 fois Suivant.
Cliquez Options de synthse.
Cochez Somme et Moyenne pour les deux lignes.
Laissez Dtail et Total, cliquez Ok. Choisissez NomAd comme critre de tri, cliquez 3 fois
suivant. Donnez comme nom ltat : TAT DES CROISIRES PAR CATGORIE DE BATEAUX.
Passez en cration ; supprimez les zones en italiques synthse.. ; <
Revenez en Affichage pour voir si cela vous convient. Si vous le souhaitez, vous pouvez
apporter des amliorations la prsentation.
Vous allez enregistrer quelques rservations supplmentaires et ensuite vous raliserez un autre
type dtat, visant calculer le chiffre daffaires des croisires.
Vous allez crer un tat qui permettra de connatre le chiffre d'affaires des croisires, avec le dtail
par croisire. Il aura cette allure :
Module N 5 Manipulation de base de donne Filire : TSSSRI
Vous allez d'abord pour plus de facilit crer une requte qui regroupe les tables utiles, d'o vous
pourrez extraire les champs que vous voulez utiliser.
Crez une nouvelle requte en mode Cration. Ajoutez les tables ADHRENTS,
RSERVATIONS et CROISIRES.
Ajoutez les champs NomCrois, NomAd, NbAd, NbEnf.
Crez la suite des champs affichs deux champs calculs comme suit :
Nb Pers : [NbAd]+[NbEnf]
Cot total : [TarifAd]*[NbAd]+[TarifEnf]*[NbEnf]
Excutez la requte pour voir le rsultat puis fermez-la et enregistrez-la sous le nom POUR
TAT CROISIRES.
Dans l'lment Etats, cliquez Crer un Etat avec l'aide de l'assistant.
Choisissez la requte POUR TAT CROISIRES, ajoutez tous les champs en cliquant sur le
double chevron.
Cliquez Suivant. Regroupez sur le NomCrois. Cliquez Options de synthse, cochez Somme
pour Nb Pers et pour Cot et Moyenne pour Nb Pers. Ok.
Triez selon les NomAd. Suivant. Allez jusqu'au bout, donnez comme nom CHIFFRE
D'AFFAIRES CROISIRES.
Passez en Cration, agrandissez les tiquettes et/ou les zones qui pourraient tre tronques
(faites notamment attention aux zones qui contiennent des chiffres, car si elles sont tronques, on
peut croire que les calculs sont faux alors qu'ils sont cachs).
Supprimez la mention en italique "Synthse;" qui n'est pas utile.
Pour peaufiner, rapprochez les mots Somme et Moyenne des chiffres concerns. Ecrivez en
clair les intituls.
Page 60/91
tat bas sur une requte
Nous voulons maintenant diter un tat gnral des cotisations des adhrents.
Il suffit de crer une requte filtrant les renseignements suivants :
Table ADHERENT : Numro adhrent, Nom, Prnom, Entre,
Table LIEU : Lieu de pratique,
Table ACTIVITE : Activit, Tarif
Nous crons ensuite un tat avec regroupement sur les caractristiques de ladhrent.
Nous rajoutons le calcul du cumul des cotisations des activits en pied de groupe, ainsi que le
calcul du Montant total payer.
AUTRES ETATS
On pourra ainsi crer dautres tats en fonction des besoins de lapplication. Par exemple on
peut crer ltat des cotisations par lieu de pratique :
Page 62/91
Module N 5 Manipulation de base de donne Filire : TSSSRI
Introduction
Les travaux dapplications sont conu pour tre une synthse des
acquis thorique vue dans le modules 5 manipulation de base de
donnes , ils sont poses sous forme datelier enchaner qui abouti
a llaboration dune application de base de donne touchant la
totalits des fonctionnalits dun SGBDR Tel que MS Access. Le
projet est ports sur la GESTION DUN FOURNISSEUR DE
PHARMACIES
Page 64/91
Module N 5 Manipulation de base de donne Filire : TSSSRI
Un laboratoire de mdicaments dsire informatiser la gestion de stock des mdicaments ainsi que
la gestion des commandes, et les mdicaments prims et dautres oprations manuelles.
1) Crer une nouvelle base de donnes sur le disque dur, en prcisant le nom de la base gestion
dun Laboratoire de mdicaments .
2) Crer la table mdicaments pour le stockage des informations concernant tous les
mdicaments
Sur la 1re colonne, vous prciserez les noms des champs,
Sur la 2me colonne, vous prciserez les types des champs,
Sur la 3me colonne, vous donnez les descriptions des champs.
La liste des champs de la table mdicaments est la suivante :
4) Une fois les noms des champs spcifis, vous devez dfinir la cl primaire pour la table en
utilisant licne .
5) Crer la table Catgorie de mdicament nomme (Catgorie)
La liste des champs de la table Catgorie est la suivante :
1) Entrez les donnes des mdicaments dans la table mdicaments , en cliquant sur le bouton
table puis ouvrir.
Informations saisir dans la table mdicaments :
Page 66/91
ATELIER N 3 Proprit des tables
A) Copier la table mdicament sous un autre nom mdicament1 (la structure seulement).
B) Ouvrez la table mdicament1 et dfinissez les proprits des champs.
Aprs avoir dfini chaque nouveau format, basculez du mode cration vers le mode feuille
de donnes pour tester le format que vous venez de crer
1. Rfrence mdicament doit tre numrique
2. Le Libell du mdicament doit avoir une entre indispensable, sachant quune chane vide
est interdite
3. La quantit min doit avoir une valeur par dfaut 10 .
4. Le libell du mdicament doit tre saisi en majuscule et affich en bleu
5. Le tel domicile doit comporter uniquement des chiffres
6. La date de premption doit tre suprieur la date du systme
7. La Quantit min doit tre comprise entre 10 et 100
8. Pour la date de premption, elle doit tre comprise entre date systme +1jour et la date
systme +5ans.
9. Lorsque vous entrez une date qui ne respecte pas la rgle de validit, Access ouvre une
bote de dialogue affichant un message derreur. Modifiez le message de cette bote de
dialogue.
10. Crer une rgle de validit qui permet de contrler si la quantit en stock est suprieure
la quantit min. (Proprit de la table). Afficher un message derreur personnalis.
Module N 5 Manipulation de base de donne Filire : TSSSRI
N.B Les stagiaires doivent raliser latelier en utilisant les deux modes dinterrogation des bases
de donnes (graphique et code SQL).
1. Crez une requte n'affichant que les mdicament(s) dont la date de premption est
infrieure 2003.
Procdez comme suit :
16.Crer une requte permettant laffichage de la liste des pharmacies se trouvant rabat.
17.Crer une requte permettant laffichage de la liste des pharmacies se trouvant rabat et
dont le numro de tlphone commence par le 77.
18.Crer une requte permettant laffichage du nombre total dachat par pharmacie pendant
une anne.
19.Crer une requte permettant laffichage du nombre total de mdicaments par catgorie
donne comme paramtre.
20.Crer une requte paramtr permettant dafficher le montant minimum dachat dune
pharmacie.
21.Afficher le prix de mdicament le plus cher dune catgorie donne.
Page 68/91
22.Crer la requte qui affiche les nom des mdicaments dont la date de premption est
aujourdhui.
23.Augmenter de 10% le prix des mdicaments dont le prix est suprieur 100.
25.Requte dajout
Requte ajout permettant dajouter des pharmacies dans la table pharmacie partir de
la table pharmacie sauve.
26.Requte Suppression
Requte suppression permettant de supprimer un mdicament quelconque dans la
table mdicament.
Requte suppression permettant de supprimer les achats passs avant le
(01/01/2001).
Requte suppression permettant de supprimer les achats dune pharmacie donne.
2. Utilisez les boutons de navigation, situs en bas du formulaire, pour passer dun
enregistrement un autre.
3. Crez un deuxime formulaire mode cration de la table Catgorie.
4. Modifiez le format de votre formulaire en basculant en mode cration.
5. Crez un formulaire de la table mdicament dans le format tabulaire (reprsentant
les valeurs en lignes et colonnes comme un tableau dune feuille de calcul).
6. Insrez dans votre formulaire un graphique Excel reprsentant les donnes suivantes :
Page 70/91
ATELIER N 6 Les Formulaires (suite)
Objectifs : Crer et imprimer les tats basant sur des tables et des requtes
Crer des de regroupement
Mettre en forme les tats
10.Crer ltat qui affiche partir dune requte crois dynamique le nombre de mdicaments
par catgorie et par date de premption.
Page 72/91
ATELIER N 8 Les Macros
1. Comment synchroniser laffichage de deux formulaires aprs ouverture via une macro
Exemple (Liste des mdicaments par catgorie).
2. Crer des formulaires de la table mdicament plusieurs pages via le contrle saut de
page et dune Macro ?
Page 74/91
Module N 5 Manipulation de base de donne Filire : TSSSRI
Tables Clients
Tables Commandes
Table Article
5. Crez :
Une requte permettant laffichage des commandes passes entre le 01/1997 et le
12/1997.
Une requte paramtre permettant laffichage des commandes entre une date de
dbut et une date de fin.
6. Crez une requte permettant laffichage du nombre de commandes par client au Maroc.
7. Crer une requte permettant laffichage de tous les clients trangers.
8. Crer la requte qui permet de slectionner les clients dont le pays est le Royaume-Uni ou
dont la ville est Paris.
9. Crez une requte permettant laffichage de lentte dune commande cest--dire
(lensemble des informations de la commande et le client qui a pass la commande).
10.Crez une requte permettant laffichage du dtail de la commande Cest--dire pour
chaque ligne commande (code ligne commande, libell article, prix unitaire, quantit
commande et une expression de calcul permettant de calculer le montant de ligne
commande).
11.Crez une requte permettant laffichage du pied de commande cest--dire pour chaque
commande, le montant total des lignes commande.
12.Crer un formulaire qui permet laffichage des informations de la table article en accordant
une remise de prix pour chaque article de 0,75.
13.Crer le formulaire qui permet dafficher la liste des bons de commandes par client.
14.Crez un formulaire permettant laffichage dune commande.
Page 76/91
15.Crer un tat qui permet laffichage de la liste alphabtique des clients.
16.Crer ltat qui permet de regrouper les commandes livres par semaine.
17.Crer ltat qui permet laffichage des informations de la tables article.
18.Crer ltat qui permet dafficher la liste des clients qui ont pass une commande
Exercice 1 :
Select nom_diteur, ville, rgion
from diteurs
Exercice 2 :
SELECT nom_employ, pn_employ, date_embauche, position_employ
FROM employ
WHERE (nom_employ LIKE 'L%') AND (date_embauche LIKE '%1990%') AND (position_employ
BETWEEN 10 AND 100)
Exercice 3 :
nom_employ id_diteur
------------------------------ ----------
Brognon 0736
Ibsen 0736
Josephs 0736
Karttunen 0736
Lebihan 0736
Mendel 0736
O'Rourke 0736
Saveley 0736
Snyder 0736
etc (43 ligne(s) affecte(s))
Exercice 4 :
SELECT nom_auteur, pays, adresse
FROM auteurs
WHERE pays IN ('FR','CH', 'BE')
Exercice 5 :
SELECT position_employ, count(*), MIN(date_embauche),MAX(date_embauche)
FROM employ
GROUP BY position_employ
position_employ
---------------- ----------- --------------------------- ---------------------------
32 1 6/nov./1989 0:00 6/nov./1989 0:00
35 3 9/nov./1989 0:00 8/dc./1992 0:00
64 1 7/juil./1992 0:00 7/juil./1992 0:00
75 3 1/janv./1990 0:00 5/dc./1992 0:00
78 1 9/dc./1988 0:00 9/dc./1988 0:00
80 1 11/nov./1993 0:00 11/nov./1993 0:00
..etc (31 ligne(s) affecte(s))
Exercice 6 :
SELECT id_titre, MAX(droits)
FROM droits_prvus
GROUP BY id_titre
id_titre
-------- -----------
BU1032 12
BU1111 24
BU2075 24
BU7832 24
MC2222 20
MC3021 24
..etc (16 ligne(s) affecte(s))
Exercice 7 :
select ville, nom_diteur, count(*)
from diteurs
GROUP BY ville, nom_diteur
HAVING ville LIKE '%L%' OR ville LIKE '%B%'
ville nom_diteur
-------------------- ---------------------------------------- -----------
Boston New Moon Books 1
Bruxelles Algodata Infosystems 1
Lausanne Ramona, diteur 1
(3 ligne(s) affecte(s))
Exercice 8 :
SELECT droits, id_titre, minimum, maximum
FROM droits_prvus
ORDER BY droits
Module N 5 Manipulation de base de donne Filire : TSSSRI
Exercice 9 :
SELECT nom_auteur, titre, prix
FROM auteurs a, titres t, titreauteur ta
WHERE (ville = 'PARIS') AND (a.id_auteur = ta.id_auteur) AND (ta.id_titre = t.id_titre)
Exercice 10
SELECT nom_diteur, nom_auteur, titre, qt
FROM auteurs a,titreauteur ta, titres t, diteurs e, ventes v
WHERE (a.id_auteur = ta.id_auteur) AND (ta.id_titre = t.id_titre) AND (t.id_diteur = e.id_diteur)
AND (t.id_titre = v.id_titre)
ORDER BY nom_diteur
COMPUTE SUM(qt) BY nom_diteur
Exercice 11
Exercice 12
SELECT nom_auteur, pn_auteur
FROM auteurs a
WHERE id_auteur IN (SELECT id_auteur FROM titreauteur) /* lauteur doit avoir crit au moins
un livre */
AND 100 = ALL (SELECT droits_pourcent
FROM titreauteur
WHERE a.id_auteur = id_auteur)
ORDER BY nom_auteur
Page 80/91
nom_auteur pn_auteur
---------------------------------------- --------------------
Bec Arthur
Bourne Stphanie
Chartier Laurent
Merrell Patricia
Sorense Christophe
Vilc Benjamin
Vue Jessica
(7 ligne(s) affecte(s))
Exercice 13 :
SELECT titre, prix
FROM titres
WHERE prix = (SELECT MAX (prix)
FROM titres )
titre prix
------------------------------------------------------------------------- ------
Est-ce vraiment convivial ? 156,00
(1 ligne(s) affecte(s))
Exercice 14 :
Afficher la liste des titres et le cumul de leurs ventes, tous magasins confondus, classs par ordre
croissant des ventes
SELECT titre, somme = (SELECT SUM (qt)
FROM ventes v
WHERE t.id_titre = v.id_titre)
FROM titres t
ORDER BY somme
Titre somme
-------------------------------------------------------------------------------- -----------
La psychologie des ordinateurs de cuisine (null)
Guide des bonnes manires sur un rseau (null)
Les festins de Parly 2 10
Guide des bases de donnes du gestionnaire press 15
Toute la vrit sur les ordinateurs 15
Privation durable d'informations : tude de quatre cas reprsentatifs 15
Phobie et passion informatique : ventail de comportements 20
Cinquante ans dans les cuisines de l'Elyse 20
La cuisine japonaise - la porte de tous 20
La cuisine - l'ordinateur : bilans clandestins 25
Vivre sans crainte 25
Equilibre motionnel : un nouvel algorithme 25
Est-ce vraiment convivial ? 30
Le stress en informatique n'est pas une fatalit ! 35
Les micro-ondes par gourmandise 40
Oignon, poireau et ail : les secrets de la cuisine mditerranenne 40
Les secrets de la Silicon Valley 50
La colre : notre ennemie ? 108
(18 ligne(s) affecte(s))
Exercice 15 :
Afficher le titre du livre le plus vendu de tous les magasins, et le nom de ce magasin
SELECT titre, nom_mag
FROM titres t, ventes v, magasins m
WHERE t.id_titre = v.id_titre
AND v.qt = ( SELECT MAX(qt)
FROM ventes)
AND v.id_mag = m.id_mag
titre nom_mag
------------------------------------------------- ----------------------------------------
Module N 5 Manipulation de base de donne Filire : TSSSRI
Exercice 16 :
Rentrez vos noms, prnoms, dans la table auteurs, avec un identificateur qui n'existe pas dj
insert auteurs (id_auteur, nom_auteur, pn_auteur, contrat)
values ('100-00-1020', 'Lcu', 'Rgis', 1)
Exercice 17 :
Recopier toutes les caractristiques d'un auteur en lui donnant un nouvel identificateur, et un
nouveau nom
INSERT auteurs (id_auteur, nom_auteur, pn_auteur, tlphone, adresse, ville, pays, code_postal,
contrat)
SELECT '100-00-1200', 'toto', pn_auteur,tlphone, adresse, ville, pays, code_postal, contrat
FROM auteurs
WHERE nom_auteur = 'Bourne'
Exercice 18 :
Augmenter de 10% tous les prix des livres de lditeur Algodata Infosystems. Vrifier lopration
par une commande Select adquate avant et aprs laugmentation.
SELECT titre, prix
FROM titres t, diteurs e
WHERE t.id_diteur = e.id_diteur
AND nom_diteur = "Algodata Infosystems"
AND prix is not NULL
UPDATE titres
SET prix = 1.10 * prix
WHERE prix is not NULL
AND id_diteur = (SELECT id_diteur
FROM diteurs
WHERE nom_diteur = "Algodata Infosystems")
Exercice 19 : Dtruire les lignes cres dans la tables auteur, dans les exercices 16 et 17
DELETE auteurs
FROM auteurs
where nom_auteur ='Lcu'
Page 82/91
Module N 5 Manipulation de base de donne Filire : TSSSRI
PARTIE 7 EVALUATION
Epreuve pratique
Dure 4 heures
Barme : /40
La compagnie BALADI de transport envisage dintgrer dans son site web la gestion des
rservations et paiement en ligne des voyages planifis. A cet effet, le directeur de la
compagnie veut implanter au pralable la nouvelle gestion des rservations et paiement en
ligne sous Access et par la suite la migrer vers SQL Server
Le MLD relationnel de la base de donne se prsente ainsi :
Client (CINClient,NomClient, PrnomClient, TelClien)t
Billet (NumBillet, CINClient, CodeVoyage, DateBillet, NumPlace, Regl, EtatPlace)
Voyage (CodeVoyage,HeureDepartVoyage, HeureArrivVoyage , VilleArrivVoyage,
PrixVoyage)
Place (NumPlace)
Table Client
Nom de champ Signification Type Taille/Format
CINClient CIN de Client Texte 10
NomClient Nom de Client Texte 20
PrnomClient Prnom de Client Texte 15
TelClien Tlphone de Client Texte 12
Table Billet
Nom de champ Signification Type Taille/Format
NumBillet Numro de Billet Numrique Entier long
CINClient CIN Client Texte 10
CodeVoyage Code Voyage Numrique Entier
DateBillet Date de Billet Date et heure Abrg
NumPlace Numro de Place Numrique Octet
Rgl Regl Oui/Non
EtatPlace Etat de Place Texte 7
Module N 5 Manipulation de base de donne Filire : TSSSRI
Table Voyage
Nom de champ Signification Type Taille/Format
CodeVoyage Code de Voyage Numerique Entier
HeureDepartVoyage Heure de Dpart de Voyage Date et heure Heure Abrg
Ville_Dpart Ville de dpart de voyage texte 15
HeureArrivVoyage Heure dArriver de Voyage Date et heure Heure Abrg
VilleArrivVoyage Ville dArriver de Voyage Texte 15
PrixVoyage Prix de Voyage Monetaire Dh
Table Place
Nom de champ Signification Type Taille/Format
NumPlace Numro de la place Numrique octet
Travail demand
1. Pour chaque table ci-dessus, crer sa structure. Utiliser les mmes cls primaires
indiques dans le MLD ci-dessus et crer les relations entrer ces tables (4 Pts)
2. Saisie les enregistrements donns dans lannexe ci-dessus pour chaque table de la base
donne. (2 Pts)
3. Crer une requte qui affiche les informations sur un client en introduisant son CIN et
lentreprise sous R_CIN_client (3 Pts)
4. Crer une requte qui affiche les informations sur un voyage planifi en introduisant la
ville de dpart et la ville darriver puis lenregistrer sous R_Client_CIN (3 Pts)
5. Crer un formulaire base sur la requte R_Client_CIN et lenregistrer sous
F_Client_CIN (3 Pts)
6. Crer une requte qui affiche les informations sur le billet + voyage et lenregistrer
sous R_Rservation (3 Pts)
7. Crer un formulaire base sur la requte R_voyage et lenregistrer sous
F_Voyage (3 Pts)
8. Crer un formulaire base sur la table voyage (Ajouter/modifier/Supprimer) et
lenregistrer sous F_Voyage (3 Pts)
9. Crer un formulaire base sur la requte R_Rservation et lenregistrer sous
F_Rservation comme est montre dans la figure suivante :(10 Pts)
Page 84/91
Module N 5 Manipulation de base de donne Filire : TSSSRI
Rservation
N Billet Date
CIN
Code Voyage
Place Etat
Prix Pay
Billet
Le bouton affiche les information sur un voyage a choisir et remplir les champ de voyage
dans ce formulaire
Le bouton nouvelle rservation vide tous le champs
Le bouton billet imprime le billet de la place rserv
Le bouton menu retourne vers le formulaire ci-dessus
10. Crer ltat qui fait sortir des billes payes par un client donn dans une date de
voyage comme le montre la figure suivante et lenregistrer sous E_billets et le lier au
bouton Billet du formulaire du Rservation. (6 Pts)
Module N 5 Manipulation de base de donne Filire : TSSSRI
BALADY TRANSPORT
N : 0012500254 Date :01/01/06
Page 86/91
Module N 5 Manipulation de base de donne Filire : TSSSRI
Annexe
Formalisme MERISE
Concevoir une base de donnes relationnelle, c'est tablir pour le systme d'information tudi, les
relations entits et les relations associations en troisime forme normale.
1re tape :
Etablir les schmas externes, c'est--dire lister les donnes ncessaires chaque utilisateur de la
future base.
2me tape :
Etablir le dictionnaire de donnes en regroupant les schmas externes, en supprimant les
redondances et en ne conservant que les informations lmentaires (non dduites). Ceci revient
lister les attributs de la base.
Dictionnaire de donnes du systme d'informations relatif aux tests sur les matriels de production
:
code matriel, libell matriel
code marque, libell marque
code type de test, libell du test, date du test, rsultat du test
3me tape :
Etablir les contraintes d'intgrit fonctionnelle (ou dpendances fonctionnelles) entre attributs.
En dpendance
Attributs
Entit = Cl fonctionnelle avec
+ Attributs
dpendants Code matriel
Libell matriel... code matriel
Code marque
Libell marque. code marque
Code type de test
Libell du test.. code type de test
Associatio
n
Date du test.. code matriel + type de test
Rsultat du test.. code matriel + type de test
4me tape :
En dduire les relations "entits" et les relations "associations avec attributs" :
Les entits sont constitues dune cl primaire et dun ou plusieurs attributs qui ne dpendent
fonctionnellement que de cette cl
Les associations sont constitues dune liste dau moins deux cls reprsentant des entits, et
dattributs qui dpendent de ces cls
5me tape :
Etablir les relations "associations sans d'attributs" en considrant deux cas :
- Il existe un lien fonctionnel N : 1 entre les entits : la cl primaire de l'entit mre devient cl
trangre dans l'entit fille
Exemple: matriel-marque. Lentit "Matriel" dpend (est fille) de lentit "Marque" : la cl
trangre "code marque" dans "Matriel" pointe sur la cl primaire "code marque" dans "Marque" .
- Le lien entre les deux entits est de type N:M : il faut crer une nouvelle relation association
sans attributs, qui contient seulement les cls primaires des deux relations associes.
6me tape:
Reprsenter le schma de la base
7me tape:
S'assurer que les relations sont en troisime forme normale.
Prsentation
Module N 5 Manipulation de base de donne Filire : TSSSRI
Sans faire un expos sur la mthode Merise, cet Annexe chapitre voudrait prsenter succinctement
les diffrents modles des donnes (MCD Conceptuel, MLD Logique, MPD Physique), titre de
comparaison avec la mthode maison qui vient dtre expose.
Aprs avoir recueilli les donnes auprs des clients (tape 1), supprim les redondances (tapes 2),
class les donnes selon les dpendances fonctionnelles (tape 3), on construit le modle
conceptuel entits/associations (tape 4), o les associations sont des relations values,
comportant un ou plusieurs attributs :
Objet1 Objet2
R
Prop1.1 0,1 0,n Prop2.1
PropR .1
Prop1.2
Min, Max
cardinalit
A partir du modle conceptuel, on peut dduire le modle logique et physique par des oprations
systmatiques (tape 5 et 6) : lapplication complte de la mthode Merise garantit lobtention des
formes normales. Le passage du MCD au MLD, puis au MPD dpend de la cardinalit des
relations.
M.C.D
Objet1 Objet2
R
Prop1.1 0,1 0,n Prop2.1
PropR. 1
Prop1.2
Exemple :
Page 88/91
M.L.D
OBJET1 OBJET2
Prop1.1 Prop2.1
Prop1.2
PropR.1
Rgle : les proprits de lassociation glissent du ct 0-1, la flche pointe vers le ct 0,n
Livres Adh
Titre Nom
Auteur
Date
Dans la table Livres, on ajoute la date de lemprunt, et une flche vers ladhrent emprunteur
MPD
Objet1 (Prop1.1, Prop1.2, PropR.1, Prop2.1)
Objet2 (Prop2.1)
Rgle : une cl trangre Prop2.1 pointant sur objet2.Prop2.1 est ajoute objet1
Livres (Titre, Auteur, Date, Nom)
Adhrents (Nom)
Dans la relation Livres, on ajoute la cl trangre Nom , pointant sur Adherents.Nom
Du MCD au MPD pour une Relation 0-N : 0-N
M.C.D
Objet1 R Objet2
Prop1.1 PropR.1 Prop2.1
Prop1.2 0,n 0,n
Exemple :
OBJET2
OBJET1 R
Prop2.1
Prop1.1 PropR.1
Prop1.2
Rgle : lassociation devient une nouvelle table et les flches pointent vers les tables lies
crit Livres
Auteurs
Ident
Nom Date
Titre
Prnom
On cre une nouvelle table crit , avec la proprit Date , et des liens vers les cls des entits
Auteurs et Livres
Module N 5 Manipulation de base de donne Filire : TSSSRI
MPD
Objet1 (Prop1.1, Prop1.2)
R1 (Prop1.1, Prop2.1, PropR.1)
Objet2 (Prop2.1)
Rgle : la relation devient une table dont la cl est la concatnation des cls des deux objets lis.
Exemple :
Livres (Ident, Titre)
Ecrit (Nom, Ident, Date)
Auteurs (Nom, Prnom)
Exemple rcapitulatif
MCD
MLD
MPD
Client (NClient, NomClient, PrenomClient).
Commande (NCommande, DateCommande, MontantCommande, NClient).
SeComposeDe (NCommande, NArticle, Qte, TauxTva).
Article (NArticle, DesignationArticle, PUArticle).
Du MCD au MPD, dans une Relation ternaire
MCD
Profs
Matiere Enseigne Nom
Matiere 1,n 1,n Prenom
CoeffMatiere Age
Salaire
1,n
1,n
Cours
DateCours
HeureCours
1,n
Salle
NSalle
DesignationSalle
MLD
Page 90/91
Profs
Matiere Enseigne NomProf
Matiere PrenomProf
CoeffMatiere AgeProf
SalaireProf
Cours
DateCours
HeureCours
Salle
NSalle
DesignationSalle
MPD
Matiere (Matiere, CoeffMatiere).
Enseigne (NomProf, Matiere).
Profs (NomProf, PrenomProf, AgeProf, SalaireProf).
Cours (NomProf, Matiere, NSalle, DateCours, HeureCours).
Salles (NSalle, DesignationSalle)
Rgle : une relation ternaire devient une table dont la cl est la concatnation des cls des trois objets
lis.