Sunteți pe pagina 1din 91

ROYAUME DU MAROC

OFPPT
















Module : 5
Manipulation d'une base de donnes


SECTEUR : TERTIAIRE ET NTIC

SPCIALIT : SYSTME ET RSEAUX INFORMATIQUES

NIVEAU : TECHNICIEN SPCIALIS







Office de la Formation Professionnelle et de la Promotion du Travail
DIRECTION RECHERCHE ET INGENIERIE DE FORMATION

RESUME THEORIQUE
&
GUIDE DE TRAVAUX PRATIQUES
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 2/91
REMERCIEMENT

La DRIF remercie les personnes qui ont contribu llaboration du
prsent document.

Pour la supervision :


- MME.BENNANI WAFAE DIRECTRICE CDC TERTIAIRE & TIC
- M. ESSABKI NOURDDINE CHEF DE DIVISION CCFF



Pour la conception :


- ELGHOLABZOURI MOUNIR Formateur l ISTA Hay Riad



Pour la validation :


- J ELLAL ABDELILAH Formateur animateur au CDC Tertiaire & TIC













Les utilisateurs de ce document sont invits
communiquer la DRIF toutes les remarques
et suggestions afin de les prendre en
considration pour lenrichissement et
lamlioration de ce programme.

Said Slaoui

TABLE DE MATIERE


TABLE DE MATIERE......................................................................................................................................1
PARTIE 1 OBJECTIFS..................................................................................................................................4
PARTIE 2 SGBD PRINCIPE ET FONCTIONNEMENT...................................................................7
I GENERALITES SUR LES BASES DE DONNEES .................................................................................................7
II OBJECTIFS DE L'APPROCHE SGBD..............................................................................................................8
III ARCHITECTURE FONCTIONNELLE D'UN SGBD : ANSI-SPARC.............................................................9
IV FONCTIONNEMENT D'UN SGBD................................................................................................................11
V PRINCIPAUX MODELES LOGIQUES ...............................................................................................................12
PARTIE 3 CONCEPTION ET DEMARCHE.........................................................................................16
I CONCEPTION DE BASES DE DONNEES..........................................................................................................16
II DEMARCHE DE CREATION DUNE BASE DE DONNEES ................................................................................17
III LES REDONDANCES....................................................................................................................................20
PARTIE 4 CREATION ET MANIPULATION DES BASES DE DONNEE AVEC MS
ACCESS..............................................................................................................................................................23
I CREATION DES TABLES .................................................................................................................................23
II SAISIE DE DONNEE ET CREATION DE FORMULAIRE ...................................................................................31
III MANIPULATION DES DONNEE ET CREATION DES REQUETE......................................................................40
IV LANGAGE SQL............................................................................................................................................46
V LES FORMULAIRES ET SOUS- FORMULAIRES..................................................................................56
VI LES ETATS ...............................................................................................................................................57
PARTIE 5 TRAVAUX D'APPLICATION.............................................................................................64
INTRODUCTION.................................................................................................................................................64
ATELIER N 1 CREATION DE TABLES ..........................................................................................................65
ATELIER N 2 REMPLISSAGE DES TABLES..................................................................................................66
ATELIER N 3 PROPRIETE DES TABLES.......................................................................................................67
ATELIER N 4 LES REQUETES .....................................................................................................................68
ATELIER N 5 LES FORMULAIRES ...............................................................................................................70
ATELIER N 6 LES FORMULAIRES (SUITE).................................................................................................71
ATELIER N 7 LES ETATS ............................................................................................................................72
ATELIER N 8 LES MACROS ........................................................................................................................73
ATELIER N 9 GESTION DES COMMANDES (ATELIER RECAPITULATIF)....................................................75
PARTIE 6 EXERCICES DAPPLICATIONS (LANGAGE SQL)...................................................78
PARTIE 7 EVALUATION............................................................................................................................83
ANNEXE.............................................................................................................................................................87


Module N 5 Manipulation de base de donne Filire : TSSSRI

PARTIE 1 Objectifs

OBJECTIFS OPERATIONNELS DE REMIER NVEAU DE
COMPORTEMENT


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

Travail effectu avec :
un micro-ordinateur ;
un logiciel de base de donnes ;
une imprimante.
Travail effectu partir des source de rfrence et tude de cas

CRI TERES GENERAUX DE PERFORMANCE

Respect des consignes et du temps allou.
Utilisation judicieuse des commandes.
Interprtation juste des messages apparaissant l'cran.
Sauvegarde et restauration appropries des donnes.
Utilisation optimale des fonctions d'aide des logiciels et autres sources de
rfrence.
Respect des rgles de la scurit.

OBJ ECTIFS
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

OBJECTIFS OPERATIONNELS DE SECOND NIVEAU


LE STAGIAIRE DOIT MAITRISER LES SAVOIRS, SAVOIRS-FAIRE, SAVOIR-PERCEVOIR OU
SAVOIR-ETRE J UGES PREALABLES AUX APPARENTISSAGES DIRECTEMENT REQUIS POUR
LATTEINTE DE LOBJ ECTIF DE PREMIER NIVEAU, TELS QUE :


Avant dapprendre analyser la demande pour manipuler une
Base de donnes. (A) :

1. Dcrire les consquences des systmes de gestion de base de donnes sur le
fonctionnement dune entreprise.
2. Dcrire les caractristiques des bases de donnes.
3. Distinguer les types de bases de donnes.
4. Enumrer les utilisations possibles dune base de donnes.
5. Expliquer au stagiaire le principe des bases de donnes relationnelles..
6. Dcrire au stagiaire les phases de cration dune base de donnes simple
7. Analyser la demande (2 tables avec une relation).


Avant dapprendre Traiter et manipuler les donnes (B) :

1. Enumrer les inconvnients dune mthode classique de recherche des donnes.
2. Montrer la souplesse dutilisation dun SGBDR pour la recherche des donnes.


Avant dapprendre adapter la structure de la base de donnes de nouveaux
besoins. (C):

Sensibiliser le stagiaire l'intrt de la scurit des donnes.

Avant dapprendre documenter la base de donnes (D):

Sensibiliser le stagiaire la terminologie correctement en anglais et en Franais




Module N 5 Manipulation de base de donne Filire : TSSSRI












PARTIE 1 SYSTEME DE GESTION DE BASE DE
DONNEE, PRINCIPE ET FONCTIONNEMENT

Module N 5 Manipulation de base de donne Filire : TSSSRI

PARTIE 2 SGBD PRINCIPE ET FONCTIONNEMENT
I Gnralits sur les bases de donnes

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.

Facteurs lis au dveloppement des SGBD :

augmentation des capacits mmoire, et diminution des temps d'accs
apparition sur le march dapplications fiables et diversifies, qui doivent partager leurs
donnes
dveloppement des systmes de gestion en temps rel : "Gestion transactionnelle"
approche globale "oriente donnes" des problmes de gestion : les donnes sont organises
de faon rationnelle plutt que dfinies au coup par coup selon les applications raliser.

Rappel sur les systmes de gestion de fichiers
Toute manipulation de fichier exige trois niveaux dintervention, et trois couches logicielles :
- Gestion du support physique : disques durs, disquette, streamers
Pilote dentres-sorties (Driver)
- Gestion des structures internes des fichiers, et des mthodes daccs : ouverture, fermeture,
lecture, criture
Systme de gestion de fichiers (SGF)
- Gestion des contenus : calculs, tests, affichages ...
Programmes applicatifs

Applications Systme d'exploitation Matriel
Programme
applicatif
SGF
Units
de
lecture
et/ou
criture
Ouvrir, fermer
lire, crire
Demande d'un
enregistrement physique
Code derreur ou
Donnes logiques
Code derreur ou
Enregistrement physique

Niveau Logique Niveau Physique

Systme de Gestion de Base de donnes : SGBD

Ensemble des programmes et des langages de commande qui permettent de :
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 8/91
- 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
Programme
applicatif
SGF
Units
De
Lecture/
Ecriture
Ouvrir, fermer,
lire, crire
Demande d'un
enreg. physique
Code rponse,
Donnes logiques
Enreg. physique
ou code erreur
SGBD
Gestion de la
Base


II Objectifs de l'approche SGBD

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.

I ntgration et corrlation

Dans les systmes classiques, chaque application gre ses donnes dans ses propres "fichiers",
do :

Un risque de redondance, et un danger d'incohrence des donnes
- La mme donne peut appartenir plusieurs applications, induisant une dperdition de
stockage.
- Toute modification de cette donne est enregistrer plusieurs fois : si cette mise jour
multiple n'est pas effectue correctement, les donnes deviennent incohrentes.
- Le cot de la mise jour augmente du fait de la multiplication des entres-sorties physiques.

Une difficult pour crer de nouveaux traitements
- Les nouvelles applications entranent des duplications supplmentaires de donnes.
- Leur intgration avec les applicatifs en exploitation entrane des modifications importantes.


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.

- 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

La scurit des donnes recouvre deux aspects :
- l'intgrit, ou protection contre l'accs invalide (erreurs ou pannes), et contre l'incohrence
des donnes vis--vis des contraintes de l'entreprise.
- la confidentialit, ou protection contre l'accs non autoris ou la modification illgale des
donnes.

Pour ne pas trop affecter les performances, la scurit doit galement tre prise en compte ds
la phase de conception.

III Architecture fonctionnelle d'un SGBD : ANSI-SPARC

Dans le cadre du groupe de normalisation nord amricain (ANSI), un groupe d'tudes a t
cr en 69, Standard Planning and Requirement Committee (SPARC) avec pour mission, une
standardisation des SGBD.
Les travaux ont abouti en 75 (ANSI 75) par la proposition d'une architecture multi-niveaux :
chaque niveau fonctionnel, sont associs un modle et un schma de donnes, un langage de
description de donnes (LDD) permettant de dcrire les donnes du schma, et un langage de
manipulation de donnes (LMD) permettant de les utiliser (accs pour consultation, mise
jour...).

Modle externe
Modle conceptuel
Modle interne
Schma
interne
Schma
conceptuel
Schma
Externe
Utilisateur 1
Schma
externe
Utilisateur 2
Schma
externe
Application 3
Programmeur
d'application
Analyste
Administrateur
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

Page 10/91
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".

Selon la notation CODASYL, trois types de liens peuvent tre envisags :

- les liens fonctionnels nots N : 1
On a un lien fonctionnel N:1 de A vers B si toute occurrence de A dtermine au plus une occurrence
de B, et si toute occurrence de B, correspond un nombre quelconque doccurrences de A.
Exemple : dans une compagnie arienne, connaissant le numro d'un vol, on en dduit d'une
manire unique la destination, mais plusieurs vols peuvent avoir la mme destination.

Numros Vols Destinations


- les liens hirarchiques nots 1 : N.
On a un lien hirarchique 1:N de A vers B si une occurrence de A peut dterminer un nombre
quelconque doccurrences de B et si, une occurrence de B, correspond au plus une occurrence de
A.
Exemple : la polygamie est un lien 1 : N de "homme" vers "femme".

- les liens maills nots N : M.
On a un lien maill de A vers B s'il n'existe aucune restriction sur le nombre d'occurrences de A et
B intervenant dans le lien.
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.
X
Y
Z
W

X
Y
Z

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

Niveau interne ou Physique

Il correspond la reprsentation en machine, aussi efficace que possible, du schma
conceptuel : le schma physique intgre les caractristiques techniques (choix du SGBD, du
matriel, du systme dexploitation).

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).
IV Fonctionnement d'un SGBD
Chronologie des oprations dans linterrogation dun SGDB

Un programme d'application A met une demande de lecture de donnes au SGBD sur une des
bases :

Le SGBD traite la demande en consultant le sous-schma externe relatif au programme
d'application A, obtenant ainsi la description des donnes.
Le SGBD consulte le schma conceptuel et dtermine le type logique de donnes extraire.
Le systme examine la description physique de la base en rapport avec la requte logique et
dtermine le (ou les) enregistrement(s) physique(s) lire.
Le systme lance une commande au systme d'exploitation pour rechercher physiquement
l'enregistrement dsir.
Le systme d'exploitation, par le biais de ses mthodes d'accs, accde l'enregistrement
physique.
Les donnes demandes sont transfres dans les buffers, ou mmoires tampons.
Le SGBD, partir d'une comparaison entre le schma logique global (conceptuel) et le sous-
schma externe de lapplication A, extrait des donnes stockes dans le buffer,
l'enregistrement logique rclam par le programme d'application. Il effectue galement les
transformations ventuelles de format.
Le SGBD transfre les donnes des buffers dans la zone de liaison du programme d'application
A.
Le SGBD fournit galement des informations "d'tat" au programme d'application, lui signalant
en particulier les erreurs ventuellement constates au cours du processus d'extraction.
Le programme d'application, qui dispose des donnes et d'informations de "service" en assure
la bonne exploitation !
Les ordres d'criture dans la base physique sont traits par un processus similaire, toute
modification ou adjonction tant en gnral prcde d'une opration de lecture.
A signaler que, dans la majorit des cas, le SGBD doit traiter simultanment plusieurs
demandes de donnes en provenance de plusieurs programmes d'application, utilisant
plusieurs schmas externes diffrents.

Les langages d'un SGBD

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

Langage de Description de Donnes : LDD

Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 12/91
Il permet de dcrire prcisment la structure de la base et le mode de stockage des donnes.
Alors que l'utilisation de fichiers permet seulement une description de donnes interne au
programme, dans une approche Base de Donnes, on effectue la description de toutes les
donnes une fois pour toutes : elle constitue l'ensemble des tables et dictionnaires de la
base, son schma (terminologie CODASYL).

En particulier, il prcise la structure logique des donnes (nom, type, contraintes
spcifiques...), la structure physique (mode d'implantation sur les supports, mode d'accs),
la dfinition des sous-schmas ou "vues".

Langage de Manipulation de Donnes : 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.

Classification des LMD

langages navigationnels (ex : SYMBAD)
dans les SGBD hirarchiques ou rseaux. Les requtes du langage dcrivent les chemins d'accs
aux diffrentes donnes, celles-ci tant gnralement chanes entre elles.
langages algbriques (ex : SQL voir en dtail chap. 4 part. 3)
Dans les SGBD relationnels. Ils utilisent, pour fournir des rsultats aux requtes, les oprateurs de
l'algbre relationnelle.
V Principaux modles logiques

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

Exemple : le Systme dinformation d'une compagnie arienne
Socit
Salaris Vols Matriel
Pilotes Htesses
Entretien
Administratif

L'anctre le plus rpandu est le SGBD IMS (Information Management System), dvelopp et
commercialis par IBM dans les annes 70

Caractristiques gnrales du modle :

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

Avantages et inconvnients du modle :
- aucune restriction dans la conception : un type de "record" peut la fois tre propritaire et
membre de plusieurs sets
- reprsentation naturelle des liens maills N:M
- pas d'anomalies pour les oprations de stockage
- commercialisation importante des systmes correspondants (DMS, IDMS, TOTAL, IDS II,
SOCRATE...),
MAIS
- pas d'indpendance par rapport aux stratgies d'accs
- procduralit importante des langages de manipulation ; l'utilisateur doit "naviguer" dans le
rseau logique constitu par les enregistrements et les chanes de pointeurs.

Exemple : schma reprsentant le sous-systme d'information
Produits / magasins de stockages / fournisseurs / domiciliations bancaires


Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 14/91
Produits Fournisseurs
Magasin de
stockage
Produit/Fournisseur
Domiciliation
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.

Exemple: reprsentation d'une table du personnel

Matricule Nom poste Salaire N dept
350 Durand Employ 8000 320
780 Dupond Cadre 15000 870
320 Veillon PDG 25000 400
490 Martin Cadre 15000 320

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.

Module N 5 Manipulation de base de donne Filire : TSSSRI

PARTIE 2 CONCEPTION ET DEMARCHE
Module N 5 Manipulation de base de donne Filire : TSSSRI

PARTIE 3 Conception et dmarche
I Conception de bases de donnes
Les formes normales
Les formes normales permettent de construire un schma conceptuel correct partir des relations
brutes issues des donnes recueillies auprs des clients.

1
re
forme normale
Une relation est dite en premire forme normale si chaque attribut possde une seule
valeur ( ce qui exclut les groupes) , et si elle admet une cl primaire.

Exemple:
L'exemple porte sur un ensemble de donnes concernant des tests de types diffrents, effectus
sur les lments matriel d'un systme de production :

R ( libell matriel, code marque, libell marque, type de test, date du test, rsultat du
test) n'est pas en 1
re
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 1
re
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 1
re
forme normale :
R- MATERI EL ( 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.

2
me
forme normale
Une relation est dite en deuxime forme normale si elle est en premire forme normale,
et si tout attribut n'appartenant pas la cl primaire ne dpend pas que d'une partie de
cette cl.

R- TEST( code matriel, code type, libell test, date du test, rsultat du test)
n'est pas en 2
me
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 :

R- TEST ( code matriel, code type, date du test, rsultat du test)
R- TYPETEST ( code type, libell test)

3
me
forme normale
Une relation est dite en troisime forme normale si elle est en deuxime forme normale,
et si toutes les dpendances fonctionnelles issues de la cl primaire sont directes


R-MATERIEL (code matriel, libell matriel, code marque, libell marque)

La dpendance entre "code matriel" et "libell marque" n'est pas directe, "libell marque" est en
dpendance fonctionnelle directe avec le "code marque".
La relation doit tre clate en deux, pour tre exprime en troisime forme normale :

R- MATERI EL ( code matriel, libell matriel, code marque)
R- MARQUE ( code marque, libell marque)
Le schma conceptuel final de la base de donnes est donc :

R- MATERI EL ( code matriel, libell matriel, code marque)
R- MARQUE ( code marque, libell marque)
R- TYPETEST ( code type, libell test)
R- TEST ( code matriel, code type, date du test, rsultat du test)
Commentaires:

Le schma conceptuel fait apparatre 3 relations entits : R-MATERIEL, R-MARQUE, R-
TYPETEST
et la relation association R-TEST qui ralise le lien Matriel <--> Type test de type N:M
Le lien fonctionnel Matriel <--> Marque de type N:1 est ralis par la prsence du "code
marque" dans la relation R-MATERIEL.

II Dmarche de cration dune base de donnes
Avant la cration de la base de donnes un travail danalyse pralable est indispensable. Il est
ncessaire danalyser le problme traiter en partant des rsultats obtenir (en sortie) avec leur
frquence.
Etudions par exemple la cration dune base de donnes de gestion dun Centre sportif.
LE PROBLEME A RESOUDRE
Le Centre sportif NATURE ET SANTE permet ses adhrents d'utiliser des quipements sportifs,
sur certains sites moyennant une cotisation dont le montant est fonction des quipements
ncessits par l'activit choisie et le lieu de pratique.
Les activits possibles et les cotisations annuelles sont les suivants :
BALNEO 2 035,00 F
GOLF 4 200,00 F
GYMNASTIQUE 1 815,00 F
MUSCULATION 2 420,00 F
SQUASH 1 320,00 F
TENNIS 3 500,00 F
Le montant du droit dentre par lieu de pratique est le suivant :
Decazeville 150,00 F
Millau 190,00 F
Rodez 300,00 F
Saint Affrique 90,00 F
Villefranche 160,00 F

Les cotisations sont payes pour l'anne au dbut du mois de janvier.
Les adhrents peuvent choisir plusieurs activits et utiliser les quipements correspondant aux
activits choisies, quand bon leur semble, aux heures d'ouverture de chaque lieu. Chaque adhrent
ne sinscrit que dans un seul lieu de pratique.
Le responsable du Centre souhaite grer sur Base de donnes les cotisations d'environ 500
adhrents. De plus, il voudrait grer les renseignements concernant les adhrents, les activits, les
lieux, les tarifs, et pouvoir diter les tats correspondants.
TYPE TEST
MATERIEL MARQUE
1 N
1 1
TEST
N N
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 18/91
LES RESULTATS A OBTENI R
Recenser tous les rsultats que votre application doit pouvoir vous fournir. Il sagit gnralement
dtats produire. Ces tats doivent contenir des donnes. Une maquette papier des tats peut
tre ralise afin de ne rien oublier.
Si nous reprenons notre exemple, les rsultats obtenir sont :
la liste des adhrents avec leur code, nom, prnom, date de naissance, adresse, code
postal, ville et numro de tlphone
la liste des quipements mis leur disposition avec le code, le nom et le tarif dutilisation
la liste des adhrents et des quipements quils utilisent, ainsi que le montant pay.

LE DI CTI ONNAI RE DES DONNEES
Il faut alors crer le dictionnaire des donnes cest--dire recenser tous les renseignements grer
sans distinguer ce quoi ils se rapportent.
Nous aurons donc :
Nom adhrent
Prnom adhrent
Date de naissance
Adresse
Code postal
Ville
Numro de tlphone
Nom activit
Tarif activit
Lieu de pratique
Droit dentre
LA DEFI NI TI ON DES ENTI TES
Lentit peut tre un individu (client, adhrent), un bien (article, dpt, magasin, quipement),
un concept (description dune commande, inscription).
Nous voyons apparatre ici trois entits : les adhrents les activits et les lieux de pratique.
Il sagit maintenant de dfinir quelle entit se rapportent les donnes recenses plus haut, cest-
-dire de quel objet ou entit elles deviennent lattribut (ou la caractristique).
Nous pouvons dfinir le schma qui suit :

A chaque entit correspondra une table dans la base de donnes.
LE MODELE ENTI TE ASSOCI ATI ON
Lassociation est un lien entre 2 (ou plusieurs) entits.
Entre lentit ADHERENT et lentit ACTIVITE, lassociation correspond la notion de PRATIQUE
de lactivit, et est matrialise par le verbe Pratiquer.
Entre lentit ADHERENT et lentit LIEU, lassociation correspond la notion dutilisation et est
matrialise par le verbe Utiliser
De plus nous allons rajouter un identifiant unique dans chaque table sous forme de Numro ou
de Code.
Le modle Entit Association prend lallure suivante :
ADHERENT
Nom adhrent
Prnom adhrent
Date de naissance
Adresse
Code postal
Ville
Numro de tlphone
ACTIVITE
Nom activit
Tarif activit
LIEU
Nom du lieu
Droit dentre


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 GESTI ON
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 RELATI ONNEL
Nous devons maintenant crer le modle relationnel.
Les activits
Un adhrent peut pratiquer plusieurs ACTI VI TES
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 PRATI QUE.
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 LI EU 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 LI EU et le champ
Code_ lieu de la table ADHERENT.
Le modle relationnel sera donc le suivant
ADHERENT
Num_adh
Nom_adh
Prn_adh
Dat_Nais_adh
Ad_adh
CP_adh
Vil_adh
Num_tl_adh
PRATIQUE
ACTIVITE
Code_activ
Activ
Tarif
UTILISE
LIEU
Code_lieu
Lieu
Entre
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 20/91

III Les redondances
Exemple
Il est ncessaire dviter les redondances dans le modle relationnel. Prenons par exemple la table
suivante qui concerne les propritaires de vhicules :
nom date tl n immat marque type cv coul
Durand 10/2/88 23.32.32.23 3344RF45 Renault R25 9 bleu
Dupont 8/10/88 62.62.52.55 7787FG56 Peugeot 405GR 7 vert
Pagnol 7/7/89 76.45.34.34 554FG22 Volvo 245 8 blanc
Pagnol 21/4/90 76.45.34.34 667TG22 Peugeot 305 6 gris
Duval 15/8/90 78.25.68.52 129DR75 Renault R25 9 blanc
Elle pose dans son utilisation un certain nombre de problmes, lis la redondance des donnes.
Donnes redondantes
La table fait apparatre une personne et ses coordonnes autant de fois quelle possde un
vhicule.
Pagnol 7/7/89 76.45.34.34 554FG22 Volvo 245 8 blanc
Pagnol 21/4/90 76.45.34.34 667TG22 Peugeot 305 6 gris
Si Mr Pagnol change de N de tlphone, il faut sassurer que la mise jour seffectue bien sur les
deux enregistrements le concernant.
Une autre redondance est lie la correspondance Marque, Type, CV
Durand 10/2/88 23.32.32.23 3344RF45 Renault R25 9 bleu
Duval 15/8/90 78.25.68.52 129DR75 Renault R25 9 blanc
Pour chaque propritaire ayant une R25, il faudra saisir la marque et la puissance.
De plus, un mme vhicule peut passer entre les mains de plusieurs propritaires. Il faudra alors
saisir toutes ces caractristiques lorsquil changera de mains.
Solution
Les champs que nous trouvons dans cette table sont les attributs dentits diffrentes. Nous allons
rattacher ses attributs aux entits quils caractrisent
Nom et Numro de tlphone caractrisent lentit PROPRIETAIRE
Numro dimmatriculation, Marque, Type et Couleur caractrisent lentit VEHICULE
Marque et Puissance caractrisent lentit TYPE.
Lentit PROPRIETAIRE et lentit VEHICULE sont lies par la notion de Possession. La relation
est matrialise par le verbe Possder : En effet, un propritaire possde un ou plusieurs
vhicules. Mais, un mme vhicule pourra avoir t possd par plusieurs propritaires successifs.
Nous avons donc entre ces deux entits une relation de plusieurs plusieurs.
Lattribut Date dachat ne caractrise pas lune des entits mises en vidences ci-dessus. Par
contre elle caractrise le moment ou le propritaire va possder le vhicule.
Lentit VEHICULE et lentit TYPE seront lies par la notion dappartenance. La relation est
matrialise par le verbe Appartenir. En effet un vhicule appartient un TYPE et un seul.



Le modle relationnel aura cette allure :

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.


PROPRIETAIRE
Numro
VEHICULES
Num immat
NomType
Couleur
Possde
TYPE
NomType
Marque
Puissance
Appartien
Module N 5 Manipulation de base de donne Filire : TSSSRI

















PARTIE 3 CREATION ET MANIPULATION DES
BASES DE DONNEE AVEC MS ACCESS


PARTIE 4 CREATION ET MANIPULATION DES BASES DE DONNEE
AVEC MS ACCESS
I Cration des tables

La table est Le principal organe de stockage de donnes d'ACCESS.
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.)
Exemple de fichier clients ( exemple de gestion dun club de loisir)





Cration de la table ADHRENTS
Double cliquez la premire option

Vous obtenez le panneau de cration de structure de table

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

Champs (colonnes)
Enregistrements
(lignes)
Chaque ligne contiendra les coordonnes dun client
(On saisira ces donnes plus tard)
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 24/91
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
Habituez-vous passer du mode cration au 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.
Cliquez sur l'icne
Dfinir les caractristiques des champs
Vous allez maintenant dfinir le type de vos diffrents champs.


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

Passez en mode Feuille de donnes pour voir, puis repassez en cration.
Vous allez maintenant ajouter d'autres champs la table ADHRENTS.
Sur la ligne aprs Ville, ajoutez Numtel. Vous allez le laisser en texte (nous avons vu qu'un
champ texte peut contenir des chiffres), mais pour que la saisie soit plus aise par la suite,
vous allez dfinir un masque de saisie.
Cela veut dire que la zone remplir pour le numro de tlphone se prsentera ainsi : __ __
__ __ __ et que vous n'aurez pas saisir les espaces. Il faut savoir que tout champ contenant un
masque de saisie, mme s'il doit recevoir des chiffres, doit tre obligatoirement un champ Texte.
Le curseur tant sur la ligne de Numtel, cliquez dans Masque de saisie puis sur les pointills
qui vont lancer l'assistant. Laissez-vous guider par les crans ; vous obtenez en fin de compte les
signes suivants sur la ligne Masque de saisie : 00\ 00\ 00\ 00\ 00;;_ (remarque : en tapant ces
signes la main, on obtiendrait le mme rsultat).
Ajoutez la table ADHRENTS les champs suivants:
DateAd, champ de type Date/heure pour saisir la date d'adhsion du membre
Individuel, champ de type Oui/Non pour savoir s'il appartient ou non un comit
d'entreprise
Passez en Feuille de donnes pour voir (acceptez l'enregistrement de la table).
Dans ce mode, cliquez dans le champ Numtel pour voir si le masque est actif. Repassez en
mode Cration.
Il manque un champ Civilit ; vous allez insrer une nouvelle ligne.
Slectionnez la ligne NomAd et appuyez sur la touche Inser du clavier. Une nouvelle ligne
est cre. Saisissez Civilit comme nom de champ.
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 26/91
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.

Sur la ligne en-dessous, choisissez Liste de valeurs
Sur la ligne en-dessous, saisissez : Monsieur;Madame;Mademoiselle (n'oubliez pas les
points virgules et ne faites pas d'espace)
Passez en mode visualisation, placez-vous dans la case sous Civilit : vous obtenez


Rcapitulons : vous avez cr la trame capable daccueillir les
donnes des adhrents.
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.
Indique que ce sera une liste
droulante
Indique que les valeurs vont
tre saisies au clavier sur la
ligne en dessous

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.
Refermez la table ADHRENTS en enregistrant les modifications.
Cration des tables pour la location des bateaux
Dans la plaquette dAURAY PLAISANCE, la page Tourisme fluvial dcrit la flotte.
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 :

TYPES DE BATEAUX BATEAU
CodeTypeBateau

Catgorie
NbPersonnesMax
NbPersonnesMin
TarifHteSaison
TarifBsSaison
Champs cl

Autres champs
CodeBateau

CodeTypeBateau
NomBateau

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 BATEAUX comme ci-contre en posant la cl sur ce champ. Refermez et
enregistrez la table sous le nom BATEAUX.
Nom des tables
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 28/91
On pourrait aller chercher le CodeTypeBateau dans la table TYPE DE BATEAUX.
Cration de la table CROISIRES
Vous savez maintenant crer une table.

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 :
un adhrent rserve une croisire,
un adhrent loue un bateau.
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).
Cration de la table LOCATIONS

Crez la table LOCATIONS comme ci-contre
Placez la cl sur le champ CodeLoc
Pour DateDbut et DateFin, choisissez un format date,abrg (en vous plaant sur la ligne
concerne, cliquer dans Format, onglet Gnral).
Refermez la table LOCATIONS.
Cration de la table RSERVATIONS


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

Page 30/91

Remarquez que dans chaque table, le champ cl se prsente en caractres gras.
Il reste tracer les relations.

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


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.
Enregistrez les modifications apportes la fentre des relations.
Lessentiel de la base est constitu, la saisie des donnes va pouvoir se faire.
II Saisie de donne et cration de formulaire
Saisie de donnes en mode table
Rappel : d'aprs le modle que vous avez dtermin, la saisie des donnes ne peut pas se faire
dans n'importe quel ordre ; la table des rservations devra tre saisie en dernier, puisque les
chiffres 1 sont tous du ct des autres tables (voir fentre des relations).
Prenez avec vous la page 8 (fichier adhrents).
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, 1
re
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

Page 32/91
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

Repassez en mode Feuille de donnes
Continuez votre saisie jusqu'au dernier adhrent.
Cochez le champ Individuel lorsque l'adhrent n'appartient pas un comit d'entreprise
Rsultat obtenir ci-dessous (en raison de la dimension de notre page, le dernier champ
Individuel napparat pas sur limage)

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.
Ce n'est pas trs convivial !!
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).

En fait les donnes sont toujours contenues dans la table ; si vous les saisissez depuis le
formulaire, elles vont dans le mme "rservoir".
Rservoir de donnes d'une table
Formulaire
Saisie en
mode table Donnes Donnes


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.

Saisissez les donnes du premier type de bateau en lui attribuant le code 1.
Le systme a prvu (en fonction des liaisons que vous avez dclares) un sous-formulaire
pour enregistrer les diffrents bateaux. Saisissez les donnes de chaque bateau comme ci-contre.
Pour passez au deuxime enregistrement, cliquez tout en bas de la fentre sur la flche de
dfilement. Pour le moment, cela indique que vous en tes la saisie de l'enregistrement 1 sur un
total de 1.
Saisissez les donnes du second type de bateau avec les trois bateaux concerns (attention
dans le sous formulaire, les noms des bateaux seront numrots 4, 5), puis les donnes du
troisime type de bateau avec ses deux bateaux ( numroter 6 et 7).

Remarque : Il est possible de demander Access de numroter lui-mme les
enregistrements avec un compteur automatique. Toutefois en situation
d'apprentissage nous avons remarqu que cela pose beaucoup de problmes car si
l'apprenant se trompe et dtruit un enregistrement, ce numro n'est plus rutilisable.
On risque de se retrouver en dphasage avec le support de cours. Mais dans la
ralit, on utiliserait le compteur automatique. Il suffit de demander dans la structure
de table un type de donnes NumAuto au lieu de Numrique.
Fermez et enregistrez le formulaire sous le nom TYPES DE BATEAUX.

Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 34/91
Cration du formulaire CROISIRES
De la mme manire que prcdemment, crez partir de la table CROISIRES un
formulaire instantan et saisissez les donnes des croisires.
Pour les descriptifs, utilisez une forme abrge (exemple : sortie 2 h passage cluse)
Quand il n'y a qu'un tarif, mettez le mme pour adultes et enfants.
Pour la Formule Moussaillons, mettez 0 dans tarif adulte.
Refermez le formulaire en acceptant le nom CROISIRES propos par le systme.

Vous allez vrifier que les donnes saisies dans le formulaire sont bien prsentes dans les tables.
Dans la fentre Base de donnes, cliquez l'lment Tables et double-cliquez CROISIRES ;
constatez que les donnes sont l. Refermez la table. Faites de mme pour la table TYPES DE
BATEAUX, puis pour la table BATEAUX.

Cration du formulaire LOCATIONS
Crez un formulaire instantan partir de la table LOCATIONS. Ne saisissez rien pour le
moment.

Gestion des vnements courants
Ajouter des enregistrements dans une table
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 :
LUCAS Elizabeth (Madame)
3 place de la Poste
56740 LOCMARIAQUER
02 97 54 87 21
Ne le 03/05/58
Individuel
BERLAND Jean-Luc
71 bd de la Rpublique
35000 RENNES
02 99 41 52 63
N le 25/6/59
Individuel

Modifier des donnes
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).
Trier, filtrer, rechercher dans une table selon des critres
Tri
Ouvrez la table ADHRENTS. Vous voulez obtenir un tri alphabtique par noms dadhrents.


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 Suivant : le nom de GUEGUEN apparat en surbrillance dans la liste.
Filtre
Vous voulez ressortir uniquement les adhrents qui habitent RENNES.
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 1
er
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

Page 36/91

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.
Cliquez sur la zone de texte CodeAd : lensemble du contrle est slectionn.
Dplacez-le vers la droite ; vous pouvez constater que lensemble du contrle se dplace.
Maintenant vous allez dplacer uniquement ltiquette. Pour cela, cliquez prcisment sur le
petit carr noir en haut gauche de ltiquette. Le curseur prend la forme dune main doigt lev.
Rapprochez ltiquette de la zone de texte. Observez bien de quelle manire apparaissent les
marques de slection dans les diffrents cas.


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.

Passez en mode Feuille de donnes
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 38/91


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.


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.
En mode Affichage vous obtenez:

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

Page 40/91

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
III Manipulation des donne et cration des requte
En matire de bases de donnes, la requte est quelque chose dimportant car cela sert
beaucoup de choses.
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.


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.
Requtes, Cration dune requte en mode Cration
Ajoutez la table ADHRENTS. Fermez.
Ajoutez les champs CodePostal, NomAd, Prnom, Adresse, Ville (dans cet ordre-l)
Dans la ligne Tri des champs CodePostal et NomAd, choisissez tri Croissant. Un premier tri va
seffectuer sur le code postal, premier champ rencontr par le systme puis un deuxime tri
sur le champ Nom.
Excutez la requte puis refermez-la en lui donnant le nom Liste des clients par localits.

Requte regroupement de tables
Cette requte a pour but de crer un formulaire regroupant les donnes de plusieurs tables.
Crez une nouvelle requte en mode Cration.
Ajoutez les tables RSERVATIONS, CROISIRES et ADHRENTS. Fermez.
Ajoutez tous les champs de RSERVATIONS et CROISIRES et le champ VILLE de la table
ADHERENTS
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 42/91
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.

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]
Excutez la requte pour voir si le calcul se fait bien.
Il reste insrer le champ calcul dans votre formulaire.
Fermez la requte en lenregistrant. Ouvrez le formulaire RSERVATIONS en mode Cration.
Cliquez licne Liste des champs. Celle-ci a lavantage de se tenir toujours jour des
modifications que lon pourrait apporter au support de notre formulaire.

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.


Monsieur MALECK Guy
rserve une croisire DETENTE
pour le 23/06 pour 40 adultes et 11 enfants
entre 3 et 12 ans
Madame LUCAS
rserve une croisire EVASION
pour le 7 juillet pour 52 personnes (35 adultes
et 17 enfants)

Proprits des champs

Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 44/91
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.
En mode Cration, cliquez licne Proprits de la barre doutils.
Cette fentre vous montre toutes les proprits de tous les lments de votre cran. Ici vous
tes dans le formulaire Rservations. Cliquez sur le champ CodeResa et dans la fentre des
proprits, prenez longlet Autres. Regardez la ligne Index Tabulation : il y 0, ce qui veut dire que
cest la premire zone remplir.

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 10
e
.
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
Loue un CAT CAMP pour 3 semaines pour
4 personnes compter du 10 aot

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.

Requte Mise j our
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

Page 46/91
Vous voudriez que la liste soit trie par ordre alphabtique des clients. Que pouvez-vous modifier
dans la requte pour lobtenir ?
Fermez et enregistrez la requte sous le nom CROISIRES PAR CLIENT.


IV Langage SQL
I NTRODUCTI ON
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.

SELECTI ON DES DONNEES

Le langage de manipulation de donnes
Le SQL est la fois un langage de manipulation de donnes et un langage de dfinition de
donnes. Toutefois, la dfinition de donnes est l'oeuvre de l'administrateur de la base de donnes,
c'est pourquoi la plupart des personnes qui utilisent le langage SQL ne se servent que du langage
de manipulation de donnes, permettant de slectionner les donnes qui les intressent.
La principale commande du langage de manipulation de donnes est la commande SELECT.
Syntaxe de la commande SELECT
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:

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 proj ection
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
Renault
Renault
Peugeot
Peugeot
Ford
18
Kango
kango
106
309
Escort
RL
RL
RL
KID
Chorus
Match
469sj45
4568hd16
6576VE38
7845ZS83
5647ABY82
8562EV23

La slection de toutes les colonnes de la table se fait par l'instruction:
SELECT * FROM VOITURE
Rsultat Marque Modle srie Numro
Renault
Renault
Renault
Peugeot
Peugeot
Ford
18
Kango
kango
106
309
Escort

RL
RL
RL
KID
Chorus
Match
469sj45
4568hd16
6576VE38
7845ZS83
5647ABY82
8562EV23
La slection des colonnes Modle et Srie de la table se fait par l'instruction:
SELECT Modle, Srie FROM VOITURE
Rsultat Modle srie
18
Kango
kango
106
309
Escort
RL
RL
RL
KID
Chorus
Match

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
kango
106
RL
RL
KID
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 48/91
309
Escort
Chorus
Match

LEXPRESSI ON DES RESTRI CTI ONS
Une restriction consiste slectionner les lignes satisfaisant une condition logique effectue sur
leurs attributs.
En SQL, les restrictions s'expriment l'aide de la clause WHERE suivie d'une condition logique
exprime l'aide d'oprateurs logiques
AND
OR
NOT
De comparateurs de chane:
IN
BETWEEN
LIKE
Doprateurs arithmtiques:
+, -, *, /, %, &, |, ^, ~
Et de comparateurs arithmtiques:
=, !=, >, <, >=, <=, <>, !>, !<
Restrictions simples
Soit la table suivante, prsentant des voitures d'occasion:

TABLE OCCAZ
Marque Modle srie Numro Compteur
Renault
Renault
Renault
Peugeot
Peugeot
Ford
18
Kango
kango
106
309
Escort

RL
RL
RL
KID
Chorus
Match
469sj45
4568hd16
6576VE38
7845ZS83
5647ABY82
8562EV23
123450
56000
12000
75600
189500


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
Renault
Peugeot
Kango
kango
106
RL
RL
KID
4568hd16
6576VE38
7845ZS83
56000
12000
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
Renault
Peugeot
56000
12000
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:

SELECT * FROM OCCAZ
WHERE (Compteur <= 100000) AND (Compteur >= 30000)
Rsultat Marque Modle srie Numro Compteur


Renault
Peugeot
Kango
106
RL
KID
4568hd16
7845ZS83
56000
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
Renault
Renault
Peugeot
Peugeot
18
Kango
kango
106
309
RL
RL
RL
KID
Chorus
469sj45
4568hd16
6576VE38
7845ZS83
5647ABY82
123450
56000
12000
75600
189500

Restriction sur un ensemble
Les prdicats BETWEEN et IN permettent de vrifier respectivement qu'une valeur se trouve dans
un intervalle ou qu'une valeur appartient une liste de valeurs:
La slection de toutes les voitures d'occasion ayant un kilomtrage infrieur ou gal 100 000 Km,
mais suprieur ou gal 30000Km, (effectue plus haut avec des comparateurs arithmtiques)
peut se faire par l'instruction:
SELECT * FROM OCCAZ
WHERE Compteur BETWEEN 100000 AND 30000
Rsultat Marque Modle srie Numro Compteur


Renault
Peugeot
Kango
106
RL
KID
4568hd16
7845ZS83
56000
75600

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
Peugeot
Ford
106
309
Escort
KID
Chorus
Match
7845ZS83
5647ABY82
8562EV23
75600
189500

Restriction sur les valeurs manquantes
Lorsqu'un champ n'est pas renseign, le SGBD lui attribue une valeur spciale que l'on note NULL.
La recherche de cette valeur ne peut pas se faire l'aide des oprateurs standard, il faut utiliser les
prdicats IS NULL ou bien IS NOT NULL.
La slection de toutes les voitures d'occasion dont le kilomtrage n'est pas renseign se fait par
l'instruction:
SELECT * FROM OCCAZ
WHERE Compteur IS NULL
Rsultat Marque Modle srie Numro Compteur
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 50/91
Ford Escort Match 8562EV23

TRI DES RESULTATS
Il est possible en SQL d'organiser les tuples fournis en rsultat grce la clause ORDER BY. La
clause ORDER BY est suivie des mots cls ASC ou DESC, qui prcisent respectivement si le tri se
fait de manire croissante (par dfaut) ou dcroissante. Le classement se fait sur des nombres ou
des chanes de caractres.
Prenons l'exemple de la table voiture:
La slection de toutes les colonnes de la table tries par ordre croissant de l'attribut Marque se fait
par l'instruction:
SELECT * FROM VOITURE
ORDER BY Marque ASC
Rsultat Marque Modle srie Numro Compteur
Ford
Peugeot
Peugeot
Renault
Renault
Renault

Escort
106
309
18
Kango
kango

Match
KID
Chorus
RL
RL
RL

8562EV23
7845ZS83
5647ABY82
469sj45
4568hd16
6576VE38


75600
189500
123450
56000
12000


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
Peugeot
Peugeot
Renault
Renault
Renault

Escort
106
309
18
Kango
kango

Match
KID
Chorus
RL
RL
RL

8562EV23
7845ZS83
5647ABY82
469sj45
4568hd16
6576VE38


75600
189500
123450
56000
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
Peugeot
Ford
kango
309
Escort
RL
Chorus
Match
4568hd16
5647ABY82
8562EV23
70350
63816.6
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.

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
Ford
309
Escort
Chorus
Match
5647ABY82
8562EV23
70350
63816.6
LES J OI NTURES
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
Renault
Renault
Peugeot
Peugeot
Ford
18
Kango
kango
106
309
Escort

RL
RL
RL
KID
Chorus
Match
469sj45
4568hd16
6576VE38
7845ZS83
5647ABY82
8562EV23
123450
56000
12000
75600
189500


TABLE SOCIETE
NOM PAYS
Renault
Peugeot
Ford
France
France
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
Renault
Renault
Peugeot
Peugeot
Ford
18
Kango
kango
106
309
Escort
France
France
France
France
France
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

Page 52/91
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
Renault
Peugeot
Kango
Kango
106
RL
RL
KID
4568hd16
6576VE38
7845ZS83
56000
12000
75600

OPERATI ONS ENSEMBLI STES
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 UNI ON
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 I NTERSECT
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)


MODI FI CATI ON 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!

CREATI ON DES TABLES
Le SQL, comportant un langage de dfinition de donnes (LDD), permet de crer des tables. Pour
cela, il utilise le couple de mots cls CREATE TABLE.
La cration de tables
Le cration de tables se fait l'aide du couple de mots-cls CREATE TABLE. La syntaxe de
dfinition simplifie d'une table est la suivante:
CREATE TABLE Nom_de_la_table (Nom_de_colonne1 Type_de_donne,
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 54/91
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:

Type de donne Syntaxe Description
Type alphanumrique CHAR(n) Chane de caractres de longueur fixe n (n<16383)
Type alphanumrique VARCHAR(n)
Chane de caractres de n caractres maximum
(n<16383)
Type numrique NUMBER(n,[d])
Nombre de n chiffres [optionnellement d aprs la
virgule]
Type numrique SMALLINT Entier sign de 16 bits (-32768 32757)
Type numrique INTEGER Entier sign de 32 bits (-2E31 2E31-1)
Type numrique FLOAT Nombre virgule flottante
Type horaire DATE Date sous la forme 16/07/99
Type horaire TIME Heure sous la forme 12:54:24.85
Type horaire TIMESTAMP Date et Heure

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 CONTRAI NTES DI NTEGRI TE
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)

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

Page 56/91

V LES FORMULAIRES et sous- FORMULAIRES
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.

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 :


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.
Table
ADHERENT
Table
LIEU
REQUETE
R_entre par adhrent
Table ADHERENT
Tous les champs
Tri par Numro
Table LIEU
Lieu
Table
PRATIQUE
Table
ACTIVITE
REQUETE
R_activits par adhrent
Table PRATIQUE
Activ
Num_adh
Table ACTIVITES
Activit
Formulaire principal
Sous formulaire
avec calcul du total
Calculs
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 58/91

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.


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.

tat de regroupement et de synthse
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.
Madame MARIN Monsieur LE GUEN Monsieur MALECK
AU FIL DE L'EAU AU FIL DE L'EAU DETENTE
24 adultes et 7 enfants
24 juillet
15 adultes et 18 enfants
26 juillet
27 adultes 0 enfants
2 aot

Madame MARIN Monsieur GUEGUEN Mademoiselle DURUEL
EVASION EAU FRAICHE EAU FRAICHE
34 adultes
5 aot
15 adultes 12 enfants
7 aot
20 adultes 13 enfants
10 aot

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

Page 60/91

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.

ETAT BASE SUR UNE TABLE
Nous voulons diter la liste des adhrents avec un regroupement par lieu.
Il suffit dutiliser lassistant tat, en slectionnant la table ADHERENT. Nous obtiendrons ltat
suivant :


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.

Aprs mise en forme, il se prsentera ainsi :

ETAT BASE SUR UNE REQUETE PARAMETREE
De la mme faon il est possible de crer un tat des cotisations dun seul adhrent.
Nous crons une requte avec les renseignements suivants :
Table ADHERENT : Nom, prnom, adresse, code postal, ville et entre
Table LIEU : Lieu
Table ACTIVITE : Activit et tarif
Dans la colonne Num_adh de la requte, il suffit dajouter le paramtre suivant sur la ligne
critre :
[Saisir le numro de ladhrent].
De cette faon, lorsquil est fait appel cette requte, un message demande lutilisateur de saisir
le numro de ladhrent. Les donnes sont alors filtres sur ce numro.
Nous crons ensuite un tat des cotisations pour un adhrent. Avec tous les renseignements ci-
dessus. Nous rajoutons le calcul du montant d par ladhrent.
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 62/91

Ltat peut se prsenter ainsi aprs mise en forme :

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 :
Module N 5 Manipulation de base de donne Filire : TSSSRI



















PARTIE 4 TRAVAUX D'APPLICATION
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 64/91
PARTIE 5 Travaux d'application
















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
Module N 5 Manipulation de base de donne Filire : TSSSRI

ATELIER N 1 Cration de tables

Objectifs : Crer une base de donne sous MS Access
Crer des table sous MS Access
Dfinir des Cls

Travail effectu
avec:
Un micro-ordinateur par 2 stagiaires
Un logiciel de base de donnes MS ACCESS
Une imprimante


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 1
re
colonne, vous prciserez les noms des champs,
Sur la 2
me
colonne, vous prciserez les types des champs,
Sur la 3
me
colonne, vous donnez les descriptions des champs.
La liste des champs de la table mdicaments est la suivante :

Nom du champ Type de donnes
Rfrence mdicament Numrique
Libelle mdicament Texte
Date de premption Date
Prix unitaire Numrique
Quantit en Stock Numrique
Quantit min Numrique

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 :

Nom du champ Type de donnes
Numro Catgorie Numrique
Libelle Catgorie Texte

6) Crer la table pharmacie
La liste des champs de la table Pharmacie est la suivante :

Nom du champ Type de donnes
Numro pharmacie Numrique
Nom pharmacie Texte
Adresse Texte
Tel Texte


6) Fermez la base de donnes Fournisseur de pharmacies avec Fichier / Fermer.


Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 66/91

ATELIER N 2 Remplissage des tables



Objectifs : Remplir et saisir les donne table sous MS Access
Mettre en forme des tables et Champs
Grer les tables sous MS Access

Travail effectu
avec:
Un micro-ordinateur par 2 stagiaires
Un logiciel de base de donnes MS ACCESS
Une imprimante

1) Entrez les donnes des mdicaments dans la table mdicaments , en cliquant sur le bouton
table puis ouvrir.
Informations saisir dans la table mdicaments :

Rfrence
Mdicament
Libelle
Mdicament
Date
Premption
Prix
unitaire
Quantit en
Stock
Quantit en
Seuil
0001 Doliprane 01/01/2004 12 100 20
0002 Aspgic 12/03/2004 50 200 50
. .
. .

2) Triez les enregistrements
3) Recherchez lenregistrement n 0007
4) Supprimer lenregistrement n 0007
5) Modifier la largeur des colonnes
6) Modifier la hauteur des lignes
7) Masquer la colonne Quantit min
8) Rafficher la colonne Quantit min .
9) Figez la colonne Libelle mdicament
10) Changer la couleur de larrire plan de la table
11) Faites une copie de la table (Donnes et structure)
12) Renommez la table Mdicament
13) Supprimez la table que vous venez de renommer.
14) Entrez les donnes des Catgories dans la table catgorie

Numro catgorie Libell catgorie
01 Antibiotique
02 Antiinflamatoire
03 Antalgique
. .

15) Entrez les donnes des pharmacies dans la table pharmacie

Numro pharmacie Nom pharmacie Adresse Tel
001 Pharma-Maroc 36 Av Toubkal Fs 56-89-75-55
002 MdiAgdal 25 Av mohamed V
Casablanca
75-48-89-36
.




ATELIER N 3 Proprit des tables


Objectifs : Dfinir et configurer les proprits des tables
Dfinir et configurer les proprits des champs

Travail effectu
avec:
Un micro-ordinateur par 2 stagiaires
Un logiciel de base de donnes MS ACCESS
Une imprimante

A) Copier la table mdicament sous un autre nom mdicament1 (la structure seulement).
B) Ouvrez la table mdicament1 et dfinissez les proprits des champs.





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.
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
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 68/91
ATELIER N 4 Les Requtes


Objectifs : Crer des requtes a laide dinterface graphique de MS Access
Crer des requtes a laide du code SQL


Travail effectu
avec:
Un micro-ordinateur par 2 stagiaires
Un logiciel de base de donnes MS ACCESS
Une imprimante

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 :

Appuyez sur le bouton Requtes puis Nouveau
Mode cration puis Ok
Slectionnez la table mdicaments et appuyer sur Ajouter, puis Fermer
Glissez les champs que vous voulez afficher dans la requte
Placez le critre <=31/12/2003 dans le champ date de premption.

2. Enregistrez la requte sous le nom liste 2003 avec Fichier / Enregistrer.
3. Ajoutez le champ code catgorie dans la table mdicament (en utilisant la
commande Insrer Liste de choix) afin de pouvoir crer une requte qui regroupe les deux
tables mdicament et catgorie .
4. Modifier la requte liste des mdicaments par catgorie , en affichant que les
mdicaments ayant la catgorie Antibiotique .
5. Modifier la requte liste des mdicaments par catgorie , en affichant que les
mdicaments ayant la catgorie Antibiotique et la date de premption suprieure
2003.
6. Crer une nouvelle table Achat , pour chaque Achat on veut savoir le Nom pharmacie,
le mdicament, la quantit achet, la date dachat.
7. Crer la requte qui affiche la liste des achats effectus.
8. Modifier la requte en affichant que les achats effectus par une pharmacie spcifie
comme paramtre.
9. Faites une copie de la requte.
10. Supprimez la requte.
11. Modifiez la requte Liste des mdicaments par catgorie par liste des mdicament
par catgorie et par date en paramtrant la catgorie et la date.
12. Crer une requte sous le nom Liste des mdicaments commenant par C permettant
dafficher lensemble des mdicaments dont le nom commence par la lettre C.
13. Modifier la requte prcdente de telle manire pouvoir afficher toutes les mdicaments
dont le nom commence avec le caractre spcifi en tant que paramtres.
14. Crer une nouvelle requte nomme liste des mdicaments achets pendant une
priode permettant dafficher la liste des mdicaments achets pendant une date dbut
et une date fin.
15. Crer une requte de la table mdicament qui permet de calculer automatiquement le
nombre dannes restant de chaque mdicament pour tre prim.

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.

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.

24. Requte Cration de table
Requte cration de table pour copier tous les mdicaments dont la quantit est
infrieure 30, dans une table Rupture.
Requte cration de table pour copier juste les codes et les dsignations des
mdicaments dans une table mdicament.
Requte cration de table pour copier la table pharmacie dans une nouvelle table
pharmacie sauve.

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.

27. Requte mise jour
Requte mise jour permettant deffectuer une rduction de 10% sur les prix unitaire
de tous les mdicaments.
Requte mise jour permettant daugmenter la quantit disponible de 20% pour tous
les mdicaments.
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 70/91

ATELIER N 5 Les Formulaires


Objectifs : Crer des Formulaires de saisie en mode cration
Mettre en forme les formulaires


Travail effectu
avec:
Un micro-ordinateur par 2 stagiaires
Un logiciel de base de donnes MS ACCESS
Une imprimante

1. Crez un nouveau formulaire de la table mdicament en mode cration .

Appuyez sur le bouton Formulaire, puis Nouveau.
Choisissez la table mdicament.
Mode cration.
Changez la couleur darrire plan.
Insrez le titre gestion du personnel

Modifier le format du titre 3D enfonc .

Insrez les champs de la table mdicament.

Insrez un champ affichant la date du jour.
Modifiez le format des champs (taille, police, couleur, style).

Insrez une image.

Basculez en mode formulaire pour visualiser les modifications.

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 :

Anne Antibiotique Antinflamatoire
2000 1012 1520
2001 1520 2006
2002 1789 2500

7. Crez un formulaire de type graphique reprsentant les donnes de la requte Liste
des mdicaments par catgorie .
8. Le formulaire suivant sera de type sous-formulaire. Etant entendu que dans une
catgorie donn, il y a plusieurs mdicament, il est trs utile pour vous dobtenir dans un
tableau tout les mdicaments dune catgorie.
9. Jusqu prsent, vous avez enregistr dans les tables des donnes rdiges par crit. Le
champ de type objet OLE permet denregistrer dans la table des images ou des photos.
Voil pas pas la mthode pour linsertion dun champ de type OLE dans une table.
Ouvrez la table pharmacie .
Ajoutez un champ de type OLE, nomm logo .
Basculez en mode feuille de donnes.
Positionnez le curseur sur le champ logo du 1
er
enregistrement.
Choisissez le menu Insertion / Objet.
Cherchez le nom du fichier insrer partir du bouton Parcourir.
Spcifier le chemin de recherche et appuyer sur Ouvrir.
Crer un nouveau formulaire de la table Pharmacie en insrant le nouveau champ
logo .

ATELIER N 6 Les Formulaires (suite)


Objectifs : Crer des Formulaires de saisie en mode Assistant
Crer et manipuler les contrles


Travail effectu avec: Un micro-ordinateur par 2 stagiaires
Un logiciel de base de donnes MS ACCESS
Une imprimante


1. Crez un nouveau formulaire de la table mdicament en mode assistant pour
ajouter de nouveau enregistrements sans modifier les anciens.
2. Crez un autre formulaire de la table mdicament permettant de modifier les donnes des
champs part celui du code mdicament.
3. Copier le formulaire et modifiez dans les proprits de telle faon pouvoir consulter les
enregistrements sans mise jour.
4. Crez un formulaire principal reliant lensemble des formulaires prcdents. (Utilisation des
boutons).
5. Ajoutez dans les formulaires (ajout modification et consultation) un bouton de fermeture ;
pour pouvoir revenir au formulaire principal.
6. Crer un formulaire Cration et mise jour de la table Pharmacie en utilisant des
boutons de commandes.
Bouton Cration
Bouton Modification
Bouton Suppression
Bouton Consultation
Boutons de dplacements
Bouton Quitter qui revient au menu principal
7. Crer un formulaire qui permet laffichage des informations de la table Achat en accordant
une remise de prix pour chaque pharmacie de 0,75.

Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 72/91
ATELIER N 7 Les Etats



Objectifs : Crer et imprimer les tats basant sur des tables et des requtes
Crer des de regroupement
Mettre en forme les tats


Travail effectu
avec:
Un micro-ordinateur par 2 stagiaires
Un logiciel de base de donnes MS ACCESS
Une imprimante

1. Crez un Etat reprsentant la liste des mdicaments
Appuyez sur Etat puis Nouveau
Slectionnez la table et le type d'tat que vous souhaitez crer, cliquez sur OK.
Slectionnez les champs insrer dans l'tat (de la mme faon que l'insertion des
champs dans un formulaire).
Cliquez sur Suivant.
Indiquez comment doit s'effectuer le regroupement des enregistrements et Cliquez sur
Suivant.
Slectionnez le ou les champs en fonction desquels les enregistrements doivent tre
tris lors de l'impression de l'tat et cliquez sur suivant.
Choisissez la prsentation souhaite et cliquez sur suivant.
Tapez le titre de l'tat.
Activez l'option Placer tous les champs sur une seule page pour que chaque
enregistrement soit imprim sur une seule ligne.
Cliquez sur le bouton Aperu pour visualiser le rsultat.
Basculez en mode cration afin de modifier la prsentation de votre Etat.
2. Crez un nouvel Etat permettant le regroupement des mdicaments par catgorie.
3. Crez un Etat style tabulaire permettant dditer la liste des pharmacies.
4. Crez un Etat bas sur la table pharmacie pour laquelle il faut gnrer des tiquettes en
vue d'un publipostage.
Cliquez sur Etat puis sur le bouton Nouveau ;
Cliquez sur Assistant Etiquette ;
Choisissez la table pharmacie ;
Choisissez la mise en forme de vos tiquettes et le format de vos tiquettes ;
Placez les champs
Cliquez sur le bouton Terminer pour visualiser le rsultat.
5. On vous propose la ralisation d'un tat o les mdicaments seront regroups par ordre
alphabtique.
Crez un tat l'Assistant Etat en vous basant sur la table mdicaments ;
Placez les champs ncessaires pour obtenir un tat;
Choisissez le champ Nom mdicament comme champ de regroupement ;
Choisissez un type de prsentation, puis un style et cliquez sur le bouton Terminer.
6. Crer un tat de la table mdicament bas sur une mise en forme conditionnelle
permettant de slectionner les prix de mdicament >50 Dh.
7. Crer un tat bas sur une mise en forme conditionnelle permettant de slectionner les
mdicaments dont la quantit stock < la quantit minimal.
8. Crer ltat qui permet dafficher la somme des achats de chaque pharmacie par page.
9. Crer ltat qui permet de regrouper les mdicaments par ordre alphabtique (Utiliser
loption trier et regrouper) et changer la proprit de la zone (Gauche$([libelle
mdicament] ; 1]

10. Crer ltat qui affiche partir dune requte crois dynamique le nombre de mdicaments
par catgorie et par date de premption.

ATELIER N 8 Les Macros



Objectifs : Consulter des donnes dpendants dans deux formulaires, en Utilisant
les macros
Grer et naviguer entre les diffrents objets de MS Access en utilisant
les macros

Travail effectu
avec:
Un micro-ordinateur par 2 stagiaires
Un logiciel de base de donnes MS ACCESS
Une imprimante

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 ?

Exemple
3. Crer la macro qui permet dextraire des enregistrements de la table mdicaments
condition davoir la possibilit de limiter des enregistrements dont le nom de mdicament
commence par une lettre.
Exemple

1. Crer la macro qui permet dagrandir un formulaire.
2. Crer le formulaire qui permet de consulter selon des critres
Page 1
Page 2
En cliquant sur ce bouton on passe la
page 2
En cliquant sur ce bouton on revient
la page 1
Ces deux pages constituent un seul
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 74/91
La liste des achats de toutes les pharmacies
OU
La liste des achats dune pharmacie choisie dans la liste de choix (avec un contrle
si la liste est vide lancez un message)

3. Crer la macro qui permet de crer une barre de menu

Module N 5 Manipulation de base de donne Filire : TSSSRI

ATELIER N 9 Gestion des commandes (Atelier Rcapitulatif)

Objectifs : Crer une application de base de donne sous Access
Crer un formulaires menu

Travail effectu avec: Un micro-ordinateur par 2 stagiaires
Un logiciel de base de donnes MS ACCESS
Une imprimante


1. Crez une nouvelle base de donnes gestion des commandes .
2. Crez les tables (Client, Commandes, Lignes-commande et article) pour le stockage des
informations de la base de donnes.



3. Dfinissez la cl primaire de chaque table.
4. Entrez les donnes dans les tables pour pouvoir effectuer des tests dextractions au niveau
des requtes.

Tables Clients

Code
client
Socit Contact Fonction Adresse Ville Pays Tel Fax
1 SOMACA ALAMI
Samir
Reprsenta
nt
45 Av des
fars
Casablan
ca
Maroc 77-77-
89
77-78-79
2 EXOTIC
LIQUIDE
Charlote
cooper
Assistant
Export
66
Belveder
Paris France 77-89-
45-88
56-89-
78-45
3 SPECIALIT
E
BISCUITS
Tijani
Mohamed
Chef de
produit
Av
Mohamed
V
Rabat Maroc 56-89-
45
56-56-89
4 COSUMAR Salmi
brahim
Directeur
de
marketing
56 IN
SABAA
Casablan
ca
Maroc 75-58-
89
45-55-55
5 Blondel
pre et fils
Frdrique
Citeaux
Directeur
marketing
24, place
klber
London Royau
me-Uni
12-56-
89-56
44-44-
77-44

Tables Commandes

Code commande Code client Date commande Date livraisonn
B01 1 05/01/1998 05/02/1998
B02 1 10/12/1997 11/12/1997
B03 2 25/04/1998 25/05/1998
B04 1 23/05/1997 12/06/1997

CdArticle
Libell article (texte)
Prix unitaire
(montaire
Article
CdArticle
CdCommand
e
Qt command
Ligne de
commande
CdClient
Socit (texte)
Contact (texte)
Fonction (texte)
Adresse (texte)
Ville (texte)
Client
CdCommand
e
CdClient
(num)
Date de
d
Commande
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 76/91
Tables Lignes commandes


Code ligne Code commande Code article Qt commande
1 B01 0001 12
2 B01 0002 13
3 B01 0003 20
1 B02 0001 40
1 B03 0003 16
1 B04 0001 20
2 B04 0004 10
3 B04 0002 5
4 B04 0005 12


Table Article

Code article Libelle article Prix unitaire
0001 Chaise 200
0002 Table 1000
0003 Bureau 2000
0004 Tableau blanc 1500
0005 Photocopieur 10000

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.




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



19. Crer le formulaire suivant qui permet la gestion des commandes.

Module N 5 Manipulation de base de donne Filire : TSSSRI

PARTIE 6 EXERCICES DAPPLICATIONS (LANGAGE SQL)

Exercice 1 :
Select nom_diteur, ville, rgion
from diteurs

nom_diteur ville rgion
---------------------------------------- -------------------- ------
New Moon Books Boston MA
Binnet & Hardley Washington DC
Algodata Infosystems Bruxelles (null)
Five Lakes Publishing Chicago IL
Ramona, diteur Lausanne (null)
GGG&G Munich (null)
Scootney Books New york NY
Editions Lucerne Paris (null)
(8 ligne(s) affecte(s))

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)

nom_employ pn_employ date_embauche position_employ
------------------------------------- --------------------------- ----------------
Lincoln Elizabeth 7/dc./1990 0:00 35
(1 ligne(s) affecte(s))


Exercice 3 :

SELECT nom_employ, id_diteur
FROM employ
ORDER BY id_diteur, nom_employ

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')

nom_auteur pays adresse
---------------------------------------- ---- ----------------------------------------
Lorense BE 14, impasse Lacarte
Schildwachter BE 11, rue Buffon
Bec BE 4, chemin de la Tour de Campel

Posey CH 57, avenue des tapis
Sorense CH 55, rue Pierre-Louis Coll
Chevalier CH 48, rue de Valmy
Chevalier CH 48, rue de Valmy
etc (20 ligne(s) affecte(s))

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

Page 80/91
droits id_titre minimum maximum
----------- -------- ----------- -----------
10 BU1032 0 5000
10 PC1035 0 2000
10 BU2075 0 1000
10 PS2091 0 1000
.etc
count
========
16

droits id_titre minimum maximum
----------- -------- ----------- -----------
12 BU1032 5001 50000
12 PC1035 2001 3000
12 BU2075 1001 3000
12 PS2091 1001 5000
..etc
count
========
16
..etc (94 ligne(s) affecte(s))


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)

nom_auteur titre prix
---------------------------------------- ---------------------------------------
Mathieu Guide des bases de donnes du gestionnaire press 140,00
Mathieu Le stress en informatique n'est pas une fatalit ! 24,00
Merrell Toute la vrit sur les ordinateurs 136,00
Jalabert Phobie et passion informatique : ventail de comportements 147,00
(4 ligne(s) affecte(s))

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

SELECT nom_auteur, SUM(qt)
FROM auteurs a,titreauteur ta, titres t, ventes v
WHERE (a.id_auteur = ta.id_auteur) AND (ta.id_titre = t.id_titre) AND (t.id_titre = v.id_titre)
GROUP BY nom_auteur
HAVING SUM(qt) > 20

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


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

Page 82/91
La colre : notre ennemie ? Librairie spcialise


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

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


Exercice 19 : Dtruire les lignes cres dans la tables auteur, dans les exercices 16 et 17

DELETE auteurs
FROM auteurs
where nom_auteur ='Lcu'



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)

Structure de la base de donne

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

Page 84/91
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)
Module N 5 Manipulation de base de donne Filire : TSSSRI



Rservation
N Billet Date
CIN
Code Voyage
Heure Dpart Heure Arriv
Ville Dpart Ville Arriv
Place Etat
Prix Pay

Billet



Nouvelle rservation

Menu





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

Page 86/91


BALADY TRANSPORT
N : 0012500254

Date :01/01/06
Heure
Dpart
Ville
Dpart
Heure
Arriv
Ville Arriv Place Prix
4 :00 Casa 10 :00 Agadi 3 350.00
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.

Attributs
En dpendance
fonctionnelle avec
Code matriel
Libell matriel... code matriel
Code marque
Libell marque. code marque
Code type de test
Libell du test.. code type de test
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

Entits : Matriel, Marque, Type de test
Association avec attributs : Test

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.

Les phases de la conception avec un symbolisme de type merise

Prsentation

Associatio
n
Entit = Cl
+ Attributs
dpendants
Module N 5 Manipulation de base de donne Filire : TSSSRI

Page 88/91
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 :



0,1 0,n
Objet1
Prop1.1
Prop1.2
Objet2
Prop2.1
R
PropR .1



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.

Du MCD au MPD, pour un lien fonctionnel (N :1) ou hirarchique (1 :N)

M.C.D
0,1 0,n
Objet1
Prop1.1
Prop1.2
Objet2
Prop2.1
R
PropR. 1

Exemple :
0,1 0,n
Livres
Titre
Auteur
Adh.
Nom
Emprunt
Date

- Lassociation est emprunt le contient la proprit Date
- Cardinalit : Un livre peut tre emprunt 0 ou une fois (min = 0, max = 1 dans la notation Merise). Un
adhrent peut emprunter de 0 N livres (min= 0, max= N)
lien fonctionnel N : 1 dans la notation ANSI-SPARC
La relation inverse emprunte le est une relation hirarchique 1 :N
0,n 0,1
Adh
Nom
Livre
Titre
Emprunte
Date
Auteur

Min, Max
cardinalit
Association R avec la
proprit PropR.1
Entit

M.L.D
OBJ ET1
Prop1.1
Prop1.2
PropR.1
OBJ ET2
Prop2.1

Rgle: les proprits de lassociation glissent du ct 0-1, la flche pointe vers le ct 0,n
Livres
Titre
Auteur
Date
Adh
Nom

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
0,n 0,n
Objet1
Prop1.1
Prop1.2
Objet2
Prop2.1
R
PropR.1

Exemple :
1,n
1,m
Auteurs
Nom
Prnom
Livres
Ident
Titre.
crit
Date

- Lassociation "crit"contient la proprit "Date" (de parution)
- Cardinalit de la relation : Un auteur peut crire de 1 n livres. Un livre peut avoir de 1 m auteurs => lien
maill N : M dans la notation ANSI-SPARC
M.L.D
OBJ ET1
Prop1.1
Prop1.2
OBJ ET2
Prop2.1
R
PropR.1

Rgle: lassociation devient une nouvelle table et les flches pointent vers les tables lies
Auteurs
Nom
Prnom
Livres
Ident
Titre
crit
Date

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

Page 90/91
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
0,n 1,1
1,n 0,n
Client
NClient
NomClient
PrenomClient
Commande
NCommande
DateCommande
MontantCommande
Article
NArticle
DesignationArticle
PUArticle
Passe SeComposeDe
Qte
TauxTva

MLD
Client
NClient
NomClient
PrenomClient
Commande
NCommande
DateCommande
MontantCommande
Article
NArticle
DesignationArticle
PUArticle
SeComposeDe
Qte
TauxTva

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
1,n 1,n
1,n
1,n
1,n
Matiere
Matiere
CoeffMatiere
Profs
Nom
Prenom
Age
Salaire
Salle
NSalle
DesignationSalle
Enseigne
Cours
DateCours
HeureCours

MLD


Matiere
Matiere
CoeffMatiere
Profs
NomProf
PrenomProf
AgeProf
SalaireProf
Salle
NSalle
DesignationSalle
Enseigne
Cours
DateCours
HeureCours

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.

S-ar putea să vă placă și