Académique Documents
Professionnel Documents
Culture Documents
UNIVERSITE DE JENDOUBA
FACULTE DES SCIENCES JURIDIQUES, ECONOMIQUES ET DE GESTION DE JENDOUBA
Support de cours
Base de Données Access
Adressé aux étudiants de :
- 2ème année Licence Appliquée en Economie de Gestion Quantitative
- 2ème année Licence Appliquée en Analyse de Projet et Consultation
Economique
- 2ème année Licence Appliquée en Technique de Commerce International
Equipe pédagogique :
Chargé du cours :
Riadh BOUSLIMI - Technologue en Informatique
2/69
5. L’Intersection ........................................................................................................................................ 16
6. La Différence ........................................................................................................................................ 16
7. Le Produit cartésien............................................................................................................................... 17
8. La Jointure, theta-jointure, equi-jointure, jointure naturelle ................................................................. 18
8.1. La Jointure ............................................................................................................................................. 18
8.2. La Theta-jointure ................................................................................................................................... 18
8.3. L’Equi-jointure ...................................................................................................................................... 18
8.4. Jointure naturelle ................................................................................................................................... 19
9. La Division ............................................................................................................................................ 19
TP n°1 ..................................................................................................................................................................... 21
Correction du TP n°1 ............................................................................................................................................ 22
TP n°2 ..................................................................................................................................................................... 25
Correction du TP2 ................................................................................................................................................. 29
TP n°3 ..................................................................................................................................................................... 33
TP n°4 ..................................................................................................................................................................... 35
Correction du TP n°4 ............................................................................................................................................ 37
TP n°5 ..................................................................................................................................................................... 40
TP n°6 ..................................................................................................................................................................... 44
TP n°7 ..................................................................................................................................................................... 53
Examen Base de données Access .......................................................................................................................... 61
3/69
Chapitre 1 : Introduction aux bases de données
Activité1
Un médecin désire informatiser la gestion de ses consultations. Suite à une interview avec lui, on dégage
les opérations suivantes :
− La création d'une nouvelle fiche "patient".
− L'édition d'une ordonnance.
− La prise des rendez-vous.
On lui demande la description de la fiche patient il nous communique les données suivantes :
Fiche Client
• Nom:
• Prénom :
• Adresse :
• Téléphone :
• N° CIN:
Activité2
Identifier quelques informations utilisées dans les domaines suivants :
♦ Une administration d'une faculté
♦ Une banque
♦ Un magasin
2. La persistance
Contraintes :
1. Nécessiter d'écrire des programmes
2. Manque de sécurité.
3. La redondance et de MAJ
4. Accès exclusif (un utilisateur à la fois)
1. Définition
Une base de données est une collection de données structurées relatives à un ou plusieurs domaines du
monde réel.
Exemple : BD d'une bibliothèque.
5/69
2. Avantages d'une base de données
a) Centralisation :
Les données peuvent êtres utilisées par plusieurs programmes et plusieurs utilisateurs.
b) Indépendance entre données et programmes :
Dans une BD les données sont décrites indépendamment des programmes. Ce qui n'est pas le cas avec
les fichiers.
c) Intégration des liaisons entre les données :
Pas besoin d'un programme pour retrouver les liens entre les données.
d) Intégrité des données
Ce sont des règles de sécurité assurant la cohérence des données :
• Unicité des enregistrements.
• Interdiction de la suppression des données utilisées par d'autres données.
e) Concurrence d'accès
Plusieurs utilisateurs peuvent accéder simultanément à la BD.
Un Système de Gestion de Base de Données(SGBD) est un logiciel qui permet de : décrire, modifier,
interroger et administrer les données d'une base de données.
6/69
3. Les fonctions d'un SGBD
• ORACLE
• MICROSOFT SQL SERVER
• MySQL
• Microsoft Access
7/69
Chapitre 2 : Structure d'une base de données
I. Notion de table
1. Définition
Une table est un ensemble de données relatives à une même entité, structurée sous forme d'un tableau
(liste). Une table peut être appelée aussi "Relation".
Exemple : Cas d'un cabinet médical.
PATIENTS
CIN Nom Prénom Téléphone Date_n
ORDONNANCES
Numéro_ord Date CNAM CIN
2. Remarques :
• Les données d'une table peuvent être stockées sur un ou plusieurs fichiers.
• Une table peut être considérée comme un ensemble mathématique. Ainsi, on pourra faire l'union
ou l'intersection de deux tables.
1. Définition
Une colonne (champ) représente une propriété élémentaire de l'entité décrite par cette table.
♦ Nom
♦ Type de données (Chaine, Numérique, Date)
♦ Taille éventuelle
♦ Obligatoire (oui/non)
♦ Valeur par défaut
♦ Valide si : on peut créer une règle indiquant les valeurs utilisées.
8/69
Exemple : cas de la table Patients
1. Définition
Une ligne (enregistrement) représente une occurrence du sujet représenté par la table.
Exemple : cas de la table Ordonnances
ORDONNANCES
1. Définition
La clé primaire d'une table est un champ ou un ensemble de champs permettant d'identifier de manière
unique chaque enregistrement de la table.
2. Caractéristiques
Dans un contexte relationnel, les entités d'un système d'information admettent des relations entre elles. On
peut formuler ces relations comme suit :
9/69
Cas des tables patients et ordonnances :
• Un patient peut avoir un ou plusieurs ordonnances.
• Une ordonnance est délivrée à un et un seul patient.
Dans ce cas on parle de lien de type un à plusieurs (1,n) et il y'aura naissance d'une clé étrangère qui assurera
la relation entre les deux tables
Définition
Un lien entre deux tables A et B se traduit par l'ajout dans la table B d'un nouveau champ correspondant à la
clé primaire de la table A. Ce champ est appelé clé étrangère.
Dans ce cas A est une table mère, B est une table fille.
10/69
VI. Notion de contrainte d'intégrité
Définition
Une contrainte d'intégrité est une règle appliquée à un champ ou à une table et qui doit être toujours vérifiée.
Ce sont des contraintes appliquées à des colonnes. Elles permettent de fixer le caractère obligatoire ou pas
d'une colonne et les règles de validité des valeurs qui peuvent être prises par cette colonne.
Exemple : La note doit être comprise entre 0 et 20.
• Champ clé étrangère ne peut contenir qu'une valeur déjà existante dans la clé primaire
correspondante.
• La suppression d'un enregistrement d'un table mère A utilisé par une table fille B est interdit.
Le schéma base de données est une représentation des différentes structures de la base. Cette représentation
peut être faite selon deux formalismes :
1. La représentation textuelle :
La représentation textuelle consiste a affecter les colonnes au différentes tables et rajouter le symbole dièse
(#) dans la table fille s’il y’en a une liaison entre deux tables.
Patients (CIN, Prénom, Nom, Téléphone, Date_n)
Ordonnances (Numéro_ord, Date, CNAM, CIN#)
11/69
Chapitre 3 : Démarche de la création d'une base de données
Exercice
Une agence "LV" de location de voitures gère manuellement son parc, composé d'une centaine de véhicules à partir d'un
paquet de fiches cartonnées.
Ci-après, un exemple de fiche de voiture :
1) Souligner à partir de l’énoncé les noms des colonnes et compléter le tableau ci-dessous.
12/69
(2) La valeur de kilométrage de retour reste avec le kilométrage de départ jusqu'à la date de retour.
(3) La date de retour d'une voiture doit être supérieur ou égale à la date de location.
Voiture(IMMAT,MARQUE,TYPE,COULEUR,PUISS,KILOM,AGE,PRIX_PAR_JOUR,TYPE_CARBURANT)
Locataire(LOC,LOCNOM,ADR)
Location(IMMAT,LOC,DL,KILD,KILR,DR)
Voiture(IMMAT,MARQUE,TYPE,COULEUR,PUISS,KILOM,AGE,PRIX_PAR_JOUR,TYPE_CARBURANT)
Locataire(LOC,LOCNOM,ADR)
Location(IMMAT,LOC,DL,KILD,KILR,DR)
5) Identifier les liens entre les tables en utilisant le tableau ci-dessous, déduire la description textuelle :
13/69
Chapitre 4 : Algèbre relationnelle
1. Introduction
L’algèbre relationnelle est un support mathématique cohérent sur lequel repose le modèle relationnel. L’objet
de ce chapitre est d’aborder l’algèbre relationnelle dans le but de décrire les opérations qu’il est possible
d’appliquer sur des relations pour produire de nouvelles relations. L’approche suivie est donc plus
opérationnelle que mathématique.
Les opérateurs unaires (Sélection, Projection) : ce sont les opérateurs les plus simples, ils
permettent de produire une nouvelle table à partir d’une autre table.
Les opérateurs ensemblistes (Union, Intersection Différence) : ces opérateurs permettent de
produire une nouvelle relation à partir de deux relations de même degré et de même domaine.
Les opérateurs binaires ou n-aires (Produit cartésien, Jointure, Division) : ils permettent de
produire une nouvelle table à partir de deux ou plusieurs autres tables.
2. La Sélection
Définition -sélection- La sélection (parfois appelée restriction) génère une relation regroupant
exclusivement toutes les occurrences de la relation R qui satisfont l’expression logique E, on la note σ(E)R.
En d’autres termes, la sélection permet de choisir (i.e. sélectionner) des lignes dans le tableau. Le résultat de
la sélection est donc une nouvelle relation qui a les mêmes attributs que R. Si R est vide (i.e. ne contient
aucune occurrence), la relation qui résulte de la sélection est vide.
14/69
3 . La P r o j e c t i o n
Définition -projection- La projection consiste à supprimer les attributs autres que A1, … An d’une relation et
à éliminer les n-uplets en double apparaissant dans la nouvelle relation ; on la note Π(A1, … An)R.
En d’autres termes, la projection permet de choisir des colonnes dans le tableau. Si R est vide, la relation qui
résulte de la projection est vide, mais pas forcément équivalente (elle contient généralement moins
d’attributs).
Nom
Zaghdoudi
Abidi
Bouslimi
Tableau 3: Exemple de projection sur la relation Personne du tableau 1 : Π(Nom)Personne
4. Union
Définition -union- L’union est une opération portant sur deux relations R1 et R2 ayant le même schéma et
construisant une troisième relation constituée des n-uplets appartenant à chacune des deux
relations R1 et R2sans doublon, on la note R1 ∪ R2.
Il s’agit une opération binaire ensembliste commutative essentielle dont la signature est :
Comme nous l’avons déjà dit, R1 et R2 doivent avoir les mêmes attributs et si une même occurrence existe
dans R1 et R2, elle n’apparaît qu’une seule fois dans le résultat de l’union. Le résultat de l’union est une
nouvelle relation qui a les mêmes attributs que R1 et R2. Si R1 et R2 sont vides, la relation qui résulte de
l’union est vide. Si R1 (respectivement R2) est vide, la relation qui résulte de l’union est identique
à R2 (respectivement R1).
Le tableau 4 montre un exemple d’union.
Relation R1 Relation R2 Relation R
Nom Prénom Nom Prénom Nom Prénom
Zaghdoudi Walid Bouslimi Nadia Zaghdoudi Walid
Abidi Abdelbasset Nasri Karima Abidi Abdelbasset
Bouslimi Nadia Djebali Nadia Bouslimi Nadia
Abidi Nour El Houda Abidi Nour El Houda
Nasri Karima
Djebali Nadia
Tableau 4: Exemple d’union : R = R1 ∪ R2
15/69
5. L’Intersection
Définition -intersection- L’intersection est une opération portant sur deux relations R1 et R2 ayant le même
schéma et construisant une troisième relation dont les n-uplets sont constitués de ceux appartenant aux deux
relations, on la note R1 ∩ R2.
Comme nous l’avons déjà dit, R1 et R2 doivent avoir les mêmes attributs. Le résultat de l’intersection est une
nouvelle relation qui a les mêmes attributs que R1 et R2. Si R1 ou R2 ou les deux sont vides, la relation qui
résulte de l’intersection est vide.
Nasri Karima
6. La Différence
Définition -différence- La différence est une opération portant sur deux relations R1 et R2 ayant le même
schéma et construisant une troisième relation dont les n-uplets sont constitués de ceux ne se trouvant que
dans la relation R1 ; on la note R1 − R2.
Il s’agit une opération binaire ensembliste non commutative essentielle dont la signature est :
Comme nous l’avons déjà dit, R1 et R2 doivent avoir les mêmes attributs. Le résultat de la différence est une
nouvelle relation qui a les mêmes attributs que R1 et R2. Si R1 est vide, la relation qui résulte de la différence
est vide. Si R2 est vide, la relation qui résulte de la différence est identique à R1.
16/69
Le tableau 6 montre un exemple de différence.
Nasri Karima
7. Le Produit cartésien
Définition 31 -produit cartésien- Le produit cartésien est une opération portant sur deux
relations R1 et R2 et qui construit une troisième relation regroupant exclusivement toutes les possibilités de
combinaison des occurrences des relations R1 et R2, on la note R1 × R2.
Le résultat du produit cartésien est une nouvelle relation qui a tous les attributs de R1 et tous ceux de R2.
Si R1 ou R2 ou les deux sont vides, la relation qui résulte du produit cartésien est vide. Le nombre
d’occurrences de la relation qui résulte du produit cartésien est le nombre d’occurrences de R1 multiplié par le
nombre d’occurrences de R2.
17/69
8. La Jointure, theta-jointure, equi-jointure, jointure naturelle
8.1. La Jointure
Définition 32 -jointure- La jointure est une opération portant sur deux relations R1 et R2 qui construit une
troisième relation regroupant exclusivement toutes les possibilités de combinaison des occurrences des
relationsR1 et R2 qui satisfont l’expression logique E. La jointure est notée R1 ▷◁E R2.
Nom Prénom Age AgeC Article Prix Nom Prénom Age AgeC Article Prix
Tableau 8: Exemple de jointure : R = Famille ▷◁((Age ≤ AgeC) ∧ (Prix < 50)) Cadeau
8.2. La Theta-jointure
Définition 33 -theta-jointure- Une theta-jointure est une jointure dans laquelle l’expression logique E est
une simple comparaison entre un attribut A1 de la relation R1 et un attribut A2 de la relation R2. La theta-
jointure est notée R1 ▷◁E R2.
8.3. L’Equi-jointure
Définition 34 -equi-jointure- Une equi-jointure est une theta-jointure dans laquelle l’expression
logique E est un test d’égalité entre un attribut A1 de la relation R1 et un attribut A2 de la relation R2. L’equi-
jointure est notée R1 ▷◁A1,A2 R2.
Remarque : Il vaut mieux écrire R1 ▷◁A1=A2 R2 que R1 ▷◁A1,A2 R2 car cette dernière notation peut prêter à
confusion avec une jointure naturelle explicite.
18/69
8.4. Jointure naturelle
Définition 35 -jointure naturelle- Une jointure naturelle est une jointure dans laquelle l’expression
logique E est un test d’égalité entre les attributs qui portent le même nom dans les relations R1 et R2. Dans
la relation construite, ces attributs ne sont pas dupliqués mais fusionnés en une seul colonne par couple
d’attributs. La jointure naturelle est notée R1 ▷◁ R2. On peut préciser explicitement les attributs communs
à R1 et R2 sur lesquels porte la jointure : R1 ▷◁A1, …, An R2.
Généralement, R1 et R2 n’ont qu’un attribut en commun. Dans ce cas, une jointure naturelle est équivalente à
une equi-jointure dans laquelle l’attribut de R1 et celui de R2 sont justement les deux attributs qui portent le
même nom.
Lorsque l’on désire effectuer une jointure naturelle entre R1 et R2 sur un attribut A1 commun à R1 et R2, il
vaut mieux écrire R1 ▷◁A1 R2 que R1 ▷◁ R2. En effet, si R1 et R2 possèdent deux attributs portant un nom
commun, A1 et A2, R1 ▷◁A1 R2 est bien une jointure naturelle sur l’attribut A1, mais R1 ▷◁ R2 est une jointure
naturelle sur le couple d’attributs A1, A2, ce qui produit un résultat très différent !
Nom Prénom Age Age Article Prix Nom Prénom Age Article Prix
Définition -division- La division est une opération portant sur deux relations R1 et R2, telles que le schéma
de R2 est strictement inclus dans celui de R1, qui génère une troisième relation regroupant toutes les parties
d’occurrences de la relation R1 qui sont associées à toutes les occurrences de la relation R2 ; on la
note R1 ÷ R2.
Autrement dit, la division de R1 par R2 (R1 ÷ R2) génère une relation qui regroupe tous les n-uplets qui,
concaténés à chacun des n-uplets de R2, donne toujours un n-uplet de R1.
La relation R2 ne peut pas être vide. Tous les attributs de R2 doivent être présents dans R1 et R1 doit posséder
au moins un attribut de plus que R2 (inclusion stricte). Le résultat de la division est une nouvelle relation qui a
tous les attributs de R1 sans aucun de ceux de R2. Si R1 est vide, la relation qui résulte de la division est vide.
19/69
Le tableau 10 montre un exemple de division.
Skander Zied
Abidi Yamine
Chrif Zied
Abidi Zaghdoudi
Skander Zaghdoudi
Tableau 10: Exemple de division : R = Enseignement ÷ Etudiant. La relation R contient donc tous
les enseignants de la relation Enseignement qui enseignent à tous les étudiants de la
relation Etudiant.
20/69
UNIVERSITE DE JENDOUBA Equipe pédagogique :
Chargé de cours : Riadh BOUSLIMI
Chargées des TPs : Faten ABBASSI
Afef HEDHLI
Module : Base de données (Access)
Classe : 2ème Licence appliquée
Faculté des Sciences Juridiques, Economiques Année Universitaire : 2010/2011
et de Gestion de Jendouba Semestre 2
TP n°1
Objectifs de la séance
Au terme de la séance, l’étudiant sera capable :
- de savoir les limites du système de fichiers ;
- de définir une base de données ;
- de connaitre les avantages d'une base de données ;
- de définir un Système de Gestion de Base de données ;
- de connaitre quelques SGBD actuels ainsi leurs fonctions.
Questions de cours
21/69
Correction du TP n°1
1) Qu'est ce qu'une donnée ?
Réponse :
Une donnée est description élémentaire d'une information.
11) Qu'est ce qu'une information ?
Réponse :
(a) Plusieurs données regroupées et se rapportant à un même contexte donnent naissance à
l'information.
(b) L'information est tout renseignement, écrit, sonore, visuel ou audiovisuel, codé susceptible
d'être stocké ou transmis, en vue de déclencher ou de modifier le comportement d'un processus.
2) Qu'est ce qu'un fichier ?
Réponse :
Un fichier est une suite d’informations codé sous forme binaire.
Réponse :
Les inconvénients du système de fichiers sont :
− Nécessiter d'écrire des programmes
− Manque de sécurité.
− La redondance et de MAJ
− Accès exclusif (un utilisateur à la fois)
4) Qu'est ce qu'une base de données ?
Réponse :
Une base de données est une collection de données structurées relatives à un ou plusieurs domaines du
monde réel.
Exemple : BD d'une bibliothèque.
5) Quelles sont les avantages de la base de données ?
Réponse :
Les avantages de la base de données sont :
- Centralisation : Les données peuvent êtres utilisées par plusieurs programmes et plusieurs
utilisateurs.
- Indépendance entre données et programmes : Dans une BD les données sont décrites
indépendamment des programmes. Ce qui n'est pas le cas avec les fichiers.
22/69
- Intégration des liaisons entre les données : Pas besoin d'un programme pour retrouver les
liens entre les données.
- Intégrité des données : Ce sont des règles de sécurité assurant la cohérence des données :
1. Unicité des enregistrements.
2. Interdiction de la suppression des données utilisées par d'autres données.
- Concurrence d'accès : Plusieurs utilisateurs peuvent accéder simultanément à la BD.
6) Qu'est ce qu'un SGBD ?
Réponse :
Un Système de Gestion de Base de Données(SGBD) est un logiciel qui permet de : décrire, modifier,
interroger et administrer les données d'une base de données.
7) Quel est le rôle d'un SGBD ?
Réponse :
Il joue le rôle d’interface entre d’interface entre l’utilisateur et la base de données
8) Citez quelques SGBD que vous connaissez ?
Réponse :
• ORACLE
• MICROSOFT SQL SERVER
• MySQL
• Microsoft Access
9) Quelles sont les fonctions d'un SGBD ?
Réponse :
- La définition des données
Le SGBD nous permet de créer et de décrire les objets de la base de données (table, liens,
utilisateur…), grâce au Langage de Description de Données (LDD).
- La confidentialité
Tous les utilisateurs d'une base de données ne sont pas supposés pouvoir consulter toutes les
informations. Des sous schémas de la base permettent de résoudre ce problème en plus des mots de
passes et droits d'accès.
- La sécurité de fonctionnement
Faire une copie de sauvegarde de la base.
Remise en marche de la base en cas de panne.
24/69
UNIVERSITE DE JENDOUBA Equipe pédagogique :
Chargé de cours : Riadh BOUSLIMI
Chargées des TPs : Faten ABBASSI
Afef HEDHLI
Module : Base de données (Access)
Classe : 2ème Licence appliquée
Faculté des Sciences Juridiques, Economiques Année Universitaire : 2010/2011
et de Gestion de Jendouba Semestre 2
TP n°2
Objectifs de la séance
Au terme de la séance, l’étudiant sera capable :
- de déduire la structure d’une B.D. à partir d’un énoncé décrivant un domaine donné.
- de détecter les anomalies dans la structure des tables.
Exercice n°1
Soit à représenter l’activité d’une bibliothèque disposant d’un ensemble de livres qu’elle met à la disposition de
ses abonnés. Chaque livre de la bibliothèque est décrit à l’aide d’un code unique, un titre, un auteur, un éditeur et
une date de parution. L’enregistrement d’un nouvel abonné consiste à renseigner son numéro qui servira comme
identifiant, son nom et prénom, son adresse et son numéro de téléphone.
Chaque abonné peut emprunter plusieurs livres. A chaque emprunt on enregistre le code du livre, le numéro de
l’abonné et la date d’emprunt. Au retour du livre on enregistre la date de retour.
Questions :
1. Souligner à partir de l’énoncé les noms des colonnes et compléter le tableau ci-dessous.
Nom colonne Type de Taille Obligatoire Valeur par Valeurs autorisées Sujet
données défaut
(1)___________________________________________________________________________________
___________________________________________________________________________________
(2)___________________________________________________________________________________
___________________________________________________________________________________
(3)___________________________________________________________________________________
(4)___________________________________________________________________________________
25/69
2. Etablir la liste des tables
…………………(……………….,…...……….,……………….,………..……….,………………)
…………………(……………….,……….………..,…..…….……….,………...……….,….……)
…………………(……………………….,………………….,………………….,………..……….)
…………………(……………….,…...……….,……………….,………..……….,………………)
…………………(……………….,……….………..,…..…….……….,………...……….,….……)
…………………(……………………….,………………….,………………….,………..……….)
5. Identifier les liens entre les tables en utilisant le tableau ci-dessous, déduire la description textuelle :
…………………(……………….,…...……….,……………….,………..……….,………………)
…………………(……………….,……….………..,…..…….……….,………...……….,….……)
…………………(……………………….,………………….,………………….,………..……….)
26/69
Exercice n°2
Pour décrire les employés d’une entreprise et leur répartition entre les différents services la table suivante a été
créée.
Date
N° Nom Prénom Date N° Nom Service
création
emp naissance Service Service
1 TOUNSI Safa 01/10/1980 20 Financier 01/01/1970
2 KEFI Ali 12/09/1981 10 Administratif 01/01/1975
3 BEJI Mohamed 14/04/1977 20 Financier 01/01/1970
4 TOUATI Lamia 21/06/1980 20 Financier 01/01/1970
5 SOUSSI Leila 28/11/1982 10 Administrative 01/01/1975
6 SFAXI Nouri 20/08/1990 30 Juridique 01/04/1980
7 GABSI Mouna 04/04/1987 10 Administratif 01/01/1957
8 JERBI Lotfi 09/06/1988 30 Juridique 01/04/1980
9 EZZAR Samia 12/12/1982 20 Financier 01/01/1970
Questions :
1. Identifier les anomalies de cette structure.
• ………………..............................
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
…………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
…………………………………………………………………………………
• ………………..............................
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
…………………………………………………………………………………
27/69
2. Donner la nouvelle structure.
………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………...….
…..………………..
……………………………
28/69
Correction du TP2
Exercice n°1
Soit à représenter l’activité d’une bibliothèque disposant d’un ensemble de livres qu’elle met à la disposition
de ses abonnés.
Chaque livre de la bibliothèque est décrit à l’aide d’un code unique, un titre, un auteur, un éditeur et une date
de parution.
L’enregistrement d’un nouvel abonné consiste à renseigner son numéro qui servira comme identifiant, son
nom et prénom, son adresse et son numéro de téléphone.
Chaque abonné peut emprunter plusieurs livres. A chaque emprunt on enregistre le code du livre, le numéro
de l’abonné et la date d’emprunt. Au retour du livre on enregistre la date de retour.
Questions :
1. Souligner à partir de l’énoncé les noms des colonnes et compléter le tableau ci-dessous.
(1) Les valeurs de la colonnes Code_livre_emp doivent exister dans la colonne Code_livre : un livre emprunté doit exister dans la
bibliothèque.
(2) Les valeurs de la colonnes Num_ab_emp doivent exister dans la colonne Num_abonne: une personne ne peut emprunter un
livre que lorsqu'il est déjà existant.
(3) La valeur par défaut de la date d'emprunt est la date système
(4) La date de retour du livre doit être supérieur à la date d'emprunt
29/69
2. Etablir la liste des tables
Livre(Code_livre,Titre,Auteur,Editeur,Date_parution)
Abonne(Num_abonne,Nom_abonne,Prenom_abonne,Adresse,Tel)
Emprunt(Code_liv_emp,Num_ab_emp,Date_emprunt,Date_retour)
Livre(Code_livre,Titre,Auteur,Editeur,Date_parution)
Abonne(Num_abonne,Nom_abonne,Prenom_abonne,Adresse,Tel)
Emprunt(Code_liv_emp,Num_ab_emp,Date_emprunt,Date_retour)
5. Identifier les liens entre les tables en utilisant le tableau ci-dessous, déduire la description textuelle :
Livre(Code_livre,Titre,Auteur,Editeur,Date_parution)
Abonne(Num_abonne,Nom_abonne,Prenom_abonne,Adresse,Tel)
Emprunt(Code_liv_emp#,Num_ab_emp#,Date_emprunt,Date_retour)
30/69
Exercice n°2
Pour décrire les employés d’une entreprise et leur répartition entre les différents services la table suivante a été
créée.
Questions :
3. Identifier les anomalies de cette structure.
• Incohérence de données :
On remarque que le service N°10, le nom du service n'est pas le même pour les
employés N°2,5 et 7 (Administratif, Administrative).
Pour ce même service, la date de création diffère entre les employés N°2,5 et 7
(01/01/1975).
• Redondance de données
On remarque que lorsqu'il y a plusieurs employés appartenant au même service, les
informations relatives) ce dernier sont dupliquées ce qui a entraîner les incohérences
précédentes.
Service(Num_serv,Nom_serv,Date_creat_serv)
Employe (Num_emp,Nom_emp,Prenom_emp,Date_naiss_emp,Num_serv#)
31/69
Service
N° Service Nom service Date création Service
10 Administratif 01/01/1975
20 Financier 01/01/1970
30 Juridique 01/04/1980
Employe
N°emp Nom Prénom Date naissance N° Service
1 TOUNSI Safa 01/10/1980 20
2 KEFI Ali 12/09/1981 10
3 BEJI Mohamed 15/04/1977 20
4 TOUATI Lamia 21/06/1980 20
5 SOUSSI Leila 28/11/1982 10
6 SFAXI Nouri 20/08/1990 30
7 GABSI Mouna 04/04/1987 10
8 JERBI Lotfi 09/06/1988 30
9 EZZAR Samia 12/12/1982 20
32/69
UNIVERSITE DE JENDOUBA Equipe pédagogique :
Chargé de cours : Riadh BOUSLIMI
Chargées des TPs : Faten ABBASSI
Afef HEDHLI
Module : Base de données (Access)
Classe : 2ème Licence appliquée
Faculté des Sciences Juridiques, Economiques Année Universitaire : 2010/2011
et de Gestion de Jendouba Semestre 2
TP n°3
(Les tables)
Objectifs de la séance
Au terme de la séance, l’étudiant sera capable :
- de créer des tables, les relations entre ces tables et de saisir des enregistrements via le logiciel Access
- de vérifier que le SGBD Access assure une cohérence des données par la contrainte d’intégrité
référentielle
Travail à réaliser :
1) Lancer le logiciel Access et créer une nouvelle base de données.
2) Nommer cette base "biblio01" et l'enregistrer.
3) Créer les tables :
− Classes comprenant les champs :
CODCLA de type NuméroAuto (à mettre en clé primaire)
LIBELCLA de type Texte
− Elèves comprenant les champs :
CODELE de type NuméroAuto (à mettre en clé primaire)
CODCLA de type Numérique
TITELE de type Texte
NOMELE de type Texte
PRENOMELE de type Texte
− Emprunts comprenant les champs :
CODLIV de type Numérique (à mettre en clé primaire)
CODELE de type Numérique (à mettre en clé primaire)
DATEMPRUNT de type Date/Heure
DATRETOUR de type Date/Heure
− Livres comprenant les champs :
CODLIV de type NuméroAuto (à mettre en clé primaire)
TITLIV de type Texte
AUTLIV de type Texte
ANPARUTIONLIV de type Texte
ETATLIV de type Texte
4) Mettre les champs :
− TITELE en zone de liste comprenant les valeurs : "M", "Mlle" et "Mme" avec comme valeur par
défaut "M" et valide uniquement pour les valeurs "M", "Mlle" et "Mme".
− ETATLIV en zone de liste modifiable comprenant les valeurs : "Neuf" ; "Bon" ; "Moyen" ;
"Mauvais"
− DATEMPRUNT et DATRETOUR avec un masque de saisie de type __/__/____
− ANPARUTIONLIV avec une taille de 4 caractères, une condition de validité (compris entre 2000
et 2011) et le message d'erreur : "Année non valide !" en cas de non-conformité.
33/69
5) Créer les liens entre les tables (ne pas oublier d'appliquer les intégrités référentielles si nécessaire).
6) Saisir les enregistrements suivant dans les tables correspondantes :
Classes :
CODCLA LIBELCLA
1 2LAEGQ
2 2APTCI
3 2LFECO
4 2LFCOP
Elèves :
CODELE CODCLA TITELE NOMELE PREELE
1 1 M Zayeti Salah
2 4 Mlle Abidi Maha
3 4 M Hosni Walid
4 2 Mme Bouraoui Besma
Livres :
CODLIV TITLIV AUTLIV ANPARUTIONLIV ETATLIV
1 Ouioui à la montagne Rousseau 1960 Moyen
2 Nonnon fait du ski De la fontaine 1968 Bon
3 Toto Tartampion 1975 Mauvais
4 Les pingoins Cousteau 1950 Bon
Emprunts :
CODLIV CODELE DATEEMPRUNT DATERETOUR
1 1 16/09/2009 15/12/2009
4 1 23/12/2009 11/01/2010
1 2 01/01/2005 01/02/2005
2 3 10/02/2006 15/02/2006
7) Supprimer l'emprunt concernant M Hosni dans la table Emprunts et remplacer l'année de parution du livre
du livre Toto par l'année 1986.
8) Effectuer la mise en forme suivante sur la feuille de données de la table Emprunts :
− Appliquer la police Comic sans MS de taille 11.
− Mettre une couleur de texte rouge
− Appliquer une apparence de cellules 3D relâché
− Ajuster les colonnes au texte et masquer la colonne "code du livre" (CODLIV)
− Renommer la colonne "code élève" (CODELE) en "Numéro de l'élève"
9) Ouvrir la table Elève en mode feuille de données et appliquer un filtre permettant d'obtenir tous les élèves
appartenant au code classe "4". Appliquer un nouveau filtre permettant d'afficher toutes les demoiselles
appartenants à la classe "4".
34/69
UNIVERSITE DE JENDOUBA Equipe pédagogique :
Chargé de cours : Riadh BOUSLIMI
Chargées des TPs : Faten ABBASSI
Afef HEDHLI
Module : Base de données (Access)
Classe : 2ème Licence appliquée
Faculté des Sciences Juridiques, Economiques Année Universitaire : 2010/2011
et de Gestion de Jendouba Semestre 2
TP n°4
Objectifs de la séance
Au terme de la séance, l’étudiant sera capable d'interroger une base de données en utilisant l'algèbre relationnelle.
Exercice
On donne le schéma relationnel suivant :
PILOTE (NUMPIL, NOMPIL, ADR, SAL)
AVION (NUMAV, NOMAV, CAPACITE, LOC)
VOL (NUMVOL#, NUMPIL#, NUMAV, VILLE_DEP, VILLE_ARR, H_DEP, H_ARR)
NUMPIL: clé de PILOTE, nombre entier LOC: ville de l'aéroport d'attache de l'avion, chaîne de caractères
NOMPIL: nom du pilote, chaîne de caractères NUMVOL: clé de VOL, nombre entier
ADR: ville de la résidence du pilote, chaîne de caractères VILLE_DEP: ville de départ du vol, chaîne de caractères
SAL: salaire du pilote, nombre entier VILLE_ARR: ville d'arrivée du vol, chaîne de caractères
NUMAV: clé de AVION, nombre entier H_DEP: heure de départ du vol, nombre entier entre 0 et 23
CAPACITE: nombre de places d'un avion, nombre entier H_ARR: heure d'arrivée du vol, nombre entier entre 0 et 23
Extension des tables
PILOTE AVION
NUMPIL NOMPIL ADR SAL NUMAV NOMAV CAPACITE LOC
1 ZIGHED Tunis 21000 1 A300 300 Monastir
2 BOUSSAID Djerba 21000 2 A310 300 Monastir
3 BOUSLIMI Monastir 18000 3 B707 250 Tunis
4 JBELI Tunis 17000 4 A300 280 Sousse
5 ZAGHDOUDI Djerba 19000 5 Concorde 160 Monastir
6 NASRAOUI Tunis 18000 6 B747 460 Tunis
7 GARBAA Monastir 17000 7 B707 250 Tunis
8 CHALGHOUM Sousse 15000 8 A310 300 Djerba
9 ARBI Monastir 18000 9 Mercure 180 Sousse
10 HOSNI Tunis 20000 10 Concorde 160 Tunis
VOL
NUMVOL NUMPIL NUMAV VILLE_DEP VILLE_ARR H_DEP H_ARR
1 1 1 Monastir Djerba 11:00 12:00
2 1 8 Tunis Djerba 17:00 19:00
3 2 1 Djerba Sousse 14:00 15:30
4 5 3 Djerba Sousse 18:00 19:30
5 9 1 Tunis Monastir 06:00 08:00
6 10 2 Sousse Monastir 11:00 11:30
7 1 4 Tunis Djerba 08:00 09:00
8 8 4 Monastir Tunis 07:00 08:00
9 1 8 Tozeur Djerba 09:00 10:00
10 8 2 Monastir Tunis 12:00 14:00
11 9 2 Tunis Tabarka 15:00 16:00
12 1 2 Monastir Tozeur 16:00 17:00
13 4 5 Monastir Tabarka 11:00 13:00
14 3 5 Tabarka Tunis 15:00 16:00
15 8 9 Tunis Djerba 17:00 19:00
16 7 5 Tunis Djerba 18:00 20:00
35/69
Exprimer en algèbre relationnelle les requêtes suivantes :
(a) Donnez la liste des avions dont la capacité est supérieure à 350 passagers.
(b) Quels sont les numéros et noms des avions localisés à Monastir ?
(c) Quels sont les numéros des pilotes en service et les villes de départ de leurs vols ?
(e) Quel est le nom des pilotes domiciliés à Tunis dont le salaire est supérieur à 15000 dt ?
(a) Quels sont les avions (numéro et nom) localisés à Monastir ou dont la capacité est inférieure à 350
passagers ?
(b) Liste des vols au départ de Monastir allant à Tunis après 18 heures ?
(c) Quels sont les numéros des pilotes qui ne sont pas en service ?
(d) Quels sont les vols (numéro, ville de départ) effectués par les pilotes de numéro 100 et 204 ?
(a) Donnez le numéro des vols effectués au départ de Monastir par des pilotes de Monastir?
(b) Quels sont les vols effectués par un avion qui n’est pas localisé à Monastir ?
(c) Quels sont les pilotes (numéro et nom) assurant au moins un vol au départ de Monastir avec un avion de
capacité supérieure à 300 places ?
(d) Quels sont les noms des pilotes domiciliés à Tunis assurant un vol au départ de Monastir avec un Airbus ?
(e) Quels sont les numéros des vols effectués par un pilote de Monastir au départ ou à l’arrivée de Monastir
avec un avion localisé à Tunis ?
(f) Quels sont les pilotes (numéro et nom) habitant dans la même ville que le pilote ZAGHDOUDI ?
(g) Quels sont les numéros des pilotes en service différents de celui de BOUSLIMI ?
(h) Quelles sont les villes desservies (VILLE_ARR) à partir de la ville d’arrivée d’un vol au départ de Tunis ?
(i) Quels sont les appareils (leur numéro) localisés dans la même ville que l’avion numéro 100 ?
(j) Quels sont les pilotes (leur nom) de Tunis qui ont volé avec tous les avions ?
36/69
Correction du TP n°4
1. Expression des projections et sélections
(a) Donnez la liste des avions dont la capacité est supérieure à 350 passagers.
σ CAPACITE>350 (AVION)
(b) Quels sont les numéros et noms des avions localisés à Monastir ?
(a) Quels sont les avions (numéro et nom) localisés à Monastir ou dont la capacité est inférieure à 350
passagers ?
Solution possible avec une projection et sélection
37/69
(c) Quels sont les numéros des pilotes qui ne sont pas en service ?
R1 ∏
= NUMPIL (PILOTE) // Les numéros de tous les pilotes
R2 = ∏ NUMPIL (VOL) // Les numéros des pilotes qui sont affectés à des voles
R = R1 − R2
(d) Quels sont les vols (numéro, ville de départ) effectués par les pilotes de numéro 100 et 204 ?
Solution possible avec une projection et sélection
(a) Donnez le numéro des vols effectués au départ de Monastir par des pilotes De Monastir ?
R1 = σVILLE_DEP='Monastir' (VOL)
R2 = σADR='Monastir' (PILOTE)
R = ∏ NUMVOL(R1 R2)
R1.NUMPIL = R2.NUMPIL
(b) Quels sont les vols effectués par un avion qui n’est pas localisé à Monastir ?
R = σLOC≠'Monastir' (AVION VOL)
AVION.NUMAV = VOL.NUMAV
(c) Quels sont les pilotes (numéro et nom) assurant au moins un vol au départ de Monastir avec un avion
de capacité supérieure à 300 places ?
R1 = σVILLE_DEP='Monastir' (VOL)
R2 = σCAPACITE>300 (AVION)
R = ∏ PILOTE.NUMPIL,NOMPIL(PILOTE R1 R2 )
PILOTE.NUMPIL = R1.NUMPIL R1.NUMAV = R2.NUMAV
(d) Quels sont les noms des pilotes domiciliés à Tunis assurant un vol au départ de Monastir avec un
Airbus ?
R1 = σADR='Tunis' (PILOTE)
R2 = σVILLE_DEP='Monastir' (VOL)
R3 = σNOMAV='Airbus' (AVION)
R = ∏ NOMPIL(R1 R2 R3 )
R1.NUMPIL = R2.NUMPIL R2.NUMAV = R3.NUMAV
38/69
(e) Quels sont les numéros des vols effectués par un pilote de Monastir, au départ ou à l’arrivée de
Monastir avec un avion localisé à Tunis ?
R1 = σADR='Monastir' (PILOTE)
R2 = σVILLE_DEP='Monastir' ∨ VILLE_ARR='Monastir' (VOL)
R3 = σLOC='Tunis' (AVION)
R = ∏ NUMVOL(R1 R2 R3 )
R1.NUMPIL = R2.NUMPIL R2.NUMAV = R3.NUMAV
(f) Quels sont les pilotes (numéro et nom) habitant dans la même ville que le pilote ZAGHDOUDI ?
R1 = PILOTE
R2 = σNOMPIL='ZAGHDOUDI' (PILOTE)
R = ∏ R1.NUMPIL,R1.NOMPIL(R1 R2)
R1.ADR = R2.ADR
(g) Quels sont les numéros des pilotes en service différents de celui de BOUSLIMI ?
R1 = σNOMPIL≠'BOUSLIMI' (PILOTE)
R2 = VOL
R = ∏ R1.NUMPIL (R1 R2)
R1.NUMPIL = R2.NUMPIL
(h) Quels sont les numéros des pilotes en service différents de celui de BOUSLIMI ?
R1 = σNOMPIL≠'BOUSLIMI' (PILOTE)
R2 = VOL
R = ∏ R1.NUMPIL (R1 R2)
R1.NUMPIL = R2.NUMPIL
(i) Quelles sont les villes desservies (VILLE_ARR) à partir de la ville d’arrivée d’un vol au départ de Tunis ?
R1 = σVILLE_DEP='TUNIS' (VOL)
R2 = VOL
R = ∏ R1.VILLE_ARR (R1 R2)
R1.VILLE_DEP = R2.VILLE_ARR
(j) Quels sont les appareils (leur numéro) localisés dans la même ville que l’avion numéro 100 ?
R1 = σNUMAV=100 (AVION)
R2 = AVION
R3 = ∏ R1.NUMAV (R1 R2)
R1.LOC = R2.LOC
R = σNUMAV≠100 (R3)
(k) Quels sont les pilotes (leur nom) de Tunis qui ont volé avec tous les avions ?
R1 = σADR='TUNIS' (PILOTE)
R2 = R1 VOL)
R1.NUMPIL = VOL.NUMPIL
R = ∏NOMPIL,NUMAV(R2) ÷ ∏ NUMAV(AVION)
39/69
UNIVERSITE DE JENDOUBA Equipe pédagogique :
Chargé de cours : Riadh BOUSLIMI
Chargées des TPs : Faten ABBASSI
Afef HEDHLI
Module : Base de données (Access)
Faculté des Sciences Juridiques, Economiques Classe : 2ème année Licence appliquée
et de Gestion de Jendouba Année Universitaire : 2010/2011
Semestre 2
TP n°5
(Les requêtes)
Correspondance entre le vocabulaire employé en cours et le vocabulaire d’Access
Cours Access
Relation, Table
Attribut Champ
N-uplet Enregistrement
Création et manipulation de la base de données
Soit le schéma relationnel suivant :
JOUEUR (NoJoueur, NomJ, Sexe, NoEq#)
EQUIPE (NoEq)
TOURNOI (NoTour, NomT, Date, Coef, NoPays#)
PAYS (NoPays, NomP)
JOUE_J (NoJoueur#, NoTour#, Score_J)
JOUE_E (NoEq#, NoTour#, Score_E)
1. Créer une nouvelle base de données. Lancer Access. Sélectionner l’option « Nouvelle base de données », puis donner
un nom à la base de données pour l’enregistrer.
La base de données est maintenant créée. Il s’agit d’un fichier portant l’extension .mdb et contenant sept
types d’objets : tables, requêtes, formulaires, états, pages (web), macros et modules. Ces différents
objets sont accessibles en cliquant sur les onglets appropriés de la fenêtre de gestion de la base (voir ci-
dessous).
40/69
2. Définir la structure des tables. Cliquer sur l’onglet « Tables », puis sur « Créer une table en mode
Création » (ou utiliser le bouton et sélectionner le mode création). Le mode création est utilisé pour
paramétrer la structure d’une table : nom de chaque champ et type, principalement. Renseigner les colonnes «
Nom du champ » et « Type de donnée », ainsi que la propriété « Taille du champ » (fenêtre du bas). Définir la clé
primaire de la table en sélectionnant la ligne du champ adéquat, puis en cliquant sur l’icône dans la barre
d’outils. Fermer la table en cliquant sur le bouton de fermeture ou par le menu Fichier/Fermer. Si la sauvegarde
n’a pas été effectuée auparavant, le système vous préviendra.
3. Renseigner chaque table avec quelques enregistrements. Dans l’onglet « Tables » de la fenêtre de
gestion de la base, sélectionner une table et cliquer sur le bouton « Ouvrir » ( ). En mode «Feuille
de données», il est possible de saisir, modifier ou supprimer les données. Expérimenter la modification et la
suppression d’enregistrements.
4. Définir les relations entre les tables (Menu Outils / Relations ou icône ). Cet outil Access définit
implicitement les contraintes de clés étrangères et permet de faciliter les opérations de jointure. Pour cela,
ajouter successivement toutes les tables, puis fermer la boite de dialogue. Pour définir une relation, par
exemple celle qui est associée à la clé étrangère NumCli de la table Commande de l’exemple ci-dessous,
cliquer sur le champ NumCli dans la table Commande et le glisser sur le champ auquel il fait référence :
NumCli dans la table Client (ou vice-versa). Cocher la case « Appliquer l’intégrité référentielle ».
Interrogation de la base
Formuler les requêtes suivantes avec le formalisme graphique d’Access (QBE, Query By Example). Cliquer sur
l’onglet « Requêtes » de la fenêtre de gestion de la base, puis sélectionner le mode création.
41/69
Choisir la ou les tables ou requêtes sources de la requête.
Utiliser la grille de création pour spécifier la requête en faisant glisser les champs à projeter dans la grille de
création, en indiquant les critères de tri ou de restriction, etc.
1. Liste de tous les tournois avec toutes leurs caractéristiques (pseudo-champ *).
2. Noms des tournois classés par importance (i.e., par coefficient d’importance décroissant).
3. Nom des joueuses.
4. Caractéristique d’un joueur dont le numéro est saisi au clavier (=[Message] en critère).
5. Liste des tournois en précisant Nom du tournois / Nom du pays.
6. Maximum des coefficients de tournois (fonction d’agrégat Max() accessible par le bouton Σ ).
7. Nombre total de tournois (fonction d’agrégat Compte()).
8. Nombre de tournois, par pays (fonction d’agrégat Compte() + regroupement).
9. Pour chaque équipe, nom des joueurs de cette équipe. Veiller à ne pas inclure dans la liste les joueurs de simple
uniquement.
10. Nom du joueur qui fait équipe avec un joueur dont le nom est saisi au clavier.
11. Pour chaque tournoi, scores obtenus par un joueur dont le nom est saisi au clavier.
12. Copier/coller la requête 13. Ajouter à cette requête un champ calculé Score_Pondéré tel que
Score_Pondéré = Score_Joueur x Coef.
42/69
13. À partir de la requête 14, calculer le score total (fonction d’agrégat Somme() sur les scores pondérés) d’un joueur
dont le nom est saisi au clavier.
14. Pour chaque joueur de sexe masculin, son score total. Trier les scores totaux par ordre décroissant.
15. À partir des requêtes 15 et 16, afficher les noms des joueurs dont le score total est supérieur au score d’un joueur
dont le nom est saisi au clavier.
16. Par numéro de tournoi, le plus haut score obtenu pour ce tournoi.
17. À partir de la requête 18, afficher, pour chaque tournoi, la gagnante (la joueuse dont le score est égal au plus haut
score obtenu pour ce tournoi).
Annexe 1 : Principaux types de données sous Access
Texte Texte ou combinaison de texte et de chiffres, ou chiffres ne servant pas à faire des calculs (numéros de
téléphone, codes postaux…) ; taille maximum : 255 caractères.
Mémo Textes longs (résumés, appréciations…) ; taille maximum : 32 000 caractères.
Numérique Plusieurs types de nombres :
− octet : valeur entière comprise entre 0 et 255
− entier : valeur entière comprise entre –32 768 et 32 768
− entier long : valeur entière comprise entre –2 147 483 648 et 2 147 483 647
− réel simple: valeur décimale comprise entre –3,40282E38 et 3,402823E38 avec une
précision de six chiffres
valeur décimale comprise entre –1,79769313486232E308 et 1,79769313486232E308 avec une précision
− réel double : de six chiffres.
Date/Heure Dates et/ou heures.
Monétaire Nombres en style monétaire (ex. 1 000 000,00 €).
NuméroAuto (Numérotation Automatique)
Oui/Non Booléen (seulement deux valeurs possibles).
Annexe 2 : Principales propriétés des champs sous Access
Taille du champ Pour un champ de type texte, il s’agit du nombre maximal de caractères autorisé dans le champ
(valeur par défaut : 50 ; limites : de 1 à 255). Pour un champ de type numérique, il faut choisir
parmi octet, entier, etc.
Format Pour les nombres, choix d’un format monétaire ou pourcentage, par exemple ; pour les dates et
heures, choix de l’affichage entre 01/01/2011, 01/01/11, 01-jan-11, etc.
Décimales Pour un nombre, saisir les nombre de décimales désiré.
Masque de saisie Guide et assiste l’opérateur dans la saisie des données ; par exemple, un masque de saisie
sur un code postal contraint l’opérateur à saisir 5 caractères de type numérique.
Légende Spécifie le libellé à afficher dans l’en-tête de colonne de la feuille de données ou dans l’étiquette
de contrôle du formulaire de saisie.
Valeur par défaut C’est une constante, une expression ou une fonction qui est automatiquement validée si aucune
autre n’est entrée.
Valide si C’est une constante, une expression ou une fonction qui définit les conditions de validation d’un
champ (contrainte de domaine).
Message si erreur Dans le cas d’une utilisation de la propriété Valide si, définit le message à envoyer en cas de non-
respect des conditions de validité.
Null interdit Spécifie si la saisie de donnée dans ce champ est obligatoire ou non (pas de saisie = valeur Null)
Chaîne vide autorisée Indique si une chaîne de caractères ne contenant aucun caractère est valide ou non.
Indexé Champ indexé (avec ou sans doublons) ou non
43/69
UNIVERSITE DE JENDOUBA Equipe pédagogique :
Chargé de cours : Riadh BOUSLIMI
Chargées des TPs : Faten ABBASSI
Afef HEDHLI
Module : Base de données (Access)
Faculté des Sciences Juridiques, Economiques Classe : 2ème année Licence appliquée
et de Gestion de Jendouba Année Universitaire : 2010/2011
Semestre 2
TP n°6
(Les requêtes)
La requête est un objet employé fréquemment pour le calcul. En effet, afin de minimiser la taille des bases
de données, il est recommandé de ne pas stocker dans des champs d’une table les valeurs issues d’un calcul. Pour
visualiser ces dernières, on préfère exécuter une requête : ainsi c’est mémorisée que la formule du calcul mais
non son résultat.
44/69
2.1. Calcul à partir de deux champs de la table
Nous allons créer une première requête permettant de calculer le montant hors taxe de chaque ligne
de commandes.
2.1.1. Création d’une requête de calcul
a) Cliquez sur le bouton Requêtes de la fenêtre de Base de données puis double cliquez sur la proposition
« Créer une requête en mode création ». Ajoutez la table Ligne de commandes.
b) Créez la structure de la requête en suivant les étapes ci-dessous :
– Inscrire dans la première ligne de la grille de création les sept champs de la table, un par colonne.
– Entrer comme titre du huitième champ l’expression suivante :
« Montant : PrixUnitaire*NombreArticle ».
– « Montant » est l’identificateur du champ calculé ;
– «:» est l’opérateur d’affectation ;
– « PrixUnitaire*NombreArticle » est la formule de calcul.
c) Cliquez sur le bouton pour exécuter la requête et vérifier son bon fonctionnement.
Attention ! Si le calcul n’est pas effectué et si la requête agit comme une requête paramétrée, cela
signifie que vous avez mal orthographié le nom d’un champ dans la formule du calcul.
d) Enregistrez cette requête sous le nom CalculHT.
Attention ! Pour modifier une propriété d’une requête, vous devez avoir enregistré cette requête.
Toute modification d’une requête qui n’a pas été enregistrée au préalable n’est pas prise en compte par
Access.
L’objectif est de changer une propriété du champ calculé de manière à faire apparaître comme titre du champ
calculé « Montant hors taxe », titre plus explicite que « Montant » pour l’utilisateur.
En mode de création, sélectionnez dans la grille de création la colonne contenant le champ calculé, activez le
bouton de propriété de la barre d’outils et dans la fenêtre de propriétés du champ écrire comme légende :
« Montant hors taxe ».
45/69
2.2. Calcul à partir de champs calculés
L’objectif est de créer une requête permettant de calculer et d’afficher le montant de la TVA et le montant TTC
de chaque commande à partir du montant hors taxes que vous venez de calculer.
a) Créez une nouvelle requête à partir non pas de la table Ligne de commandes, mais de la requête
CalculHT.
b) Placez les huit noms de champs de la requête CalculHT en première ligne de la grille de création de la
nouvelle requête.
c) Placez le pointeur dans la première colonne vide (la neuvième). Ecrivez l’expression du champ calculé :
« TVA :Montant*0,196 ».
Le champ TVA est calculé à partir du champ calculé Montant de la requête CalculHT.
d) Dans la dixième colonne, écrire la formule suivante :
MontantTTC : Montant+TVA
e) Exécutez la requête. Vous devez obtenir le résultat suivant :
Si aucun calcul n’est effectué, vérifiez l’orthographe des champs employés dans les calculs.
Si l’unité monétaire est erronée, enregistrez la requête sous le nom CalculTTC, puis modifiez le format
des deux nouveaux champs calcul´es pour que les valeurs soient exprimées en euros.
f) Enregistrez la requête sous le nom CalculTTC.
3. Les fonctions d’agrégats : les fonctions somme, moyenne, min et max appliquées à l’ensemble des
données
Une fonction d’agrégation permet d’obtenir une valeur issue d’un calcul sur l’ensemble de valeurs d’un
même champ pour une table déterminée. Par exemple : recherche du maximum, somme des valeurs,
dénombrement des valeurs, etc. La liste des opérations disponibles est reproduite dans le document en
annexe.
L’exercice consiste à créer une requête permettant d’afficher sur une seule ligne le total des montants TTC,
les montants TTC maximum, minimum et moyen, le nombre de commandes passées jusqu’à ce jour.
46/69
a) Créez une nouvelle requête à partir de la requête CalculTTC.
b) Dans la première ligne de la grille de création, sélectionnez, dans les 5 premières colonnes, le nom du
champ MontantTTC.
c) Cliquez sur le bouton Opérations de la barre d’outils. Apparait comme troisième ligne de la grille de
création une nouvelle ligne intitulée Opérations.
d) Sélectionnez dans la première colonne l’opération de sommation (somme), dans la deuxième
l’opération du maximum (max), dans la troisième l’opération du minimum (min), dans la quatrième
l’opération de moyenne (moyenne) et dans la cinquième l’opération de dénombrement (compte).
47/69
4. Les fonctions de regroupement
Les fonctions de calcul peuvent porter sur des sous-ensembles d’enregistrements groupés selon un critère
au lieu de porter, comme dans le paragraphe précédent, sur tous les enregistrements d’une table. Le logiciel
recherche dans un champ que choisit l’utilisateur toutes les valeurs qui sont différentes les unes des autres ;
pour chacune de ces valeurs, l’application crée un sous-ensemble des enregistrements possédant cette valeur
unique ; il existe donc autant de sous-ensembles que de valeurs uniques ; sur chacune de ces sous-ensembles,
Access exécute enfin un calcul à un champ choisi par l’utilisateur.
Les opérations disponibles sont décrites dans le document en annexe.
4.1. Le regroupement selon les valeurs uniques d’un seul champ
Vous devez créer une requête qui permet d’afficher le total des montants TTC dû par chaque client.
a) Créez une nouvelle requête basée sur la requête CalculTTC.
b) Insérez les champs CodeClient et MontantTTC en première ligne de la grille de création.
c) Cliquez sur le bouton Opérations de la barre d’outils pour faire apparaître la ligne des
opérations.
d) Dans la ligne Opération, sélectionner l’opération Regroupement pour le champ CodeClient. Pour le
champ calculé MontantTTC, sélectionner la fonction Somme.
Le logiciel recherchera les valeurs uniques du champ CodeClient, regroupera les enregistrements ayant la
même valeur dans le champ CodeClient, puis fera pour chaque groupe la somme des valeurs du champ
calculé MontantTTC.
e) Testez la requête. L’enregistrer sous le nom Total des montants par client.
f) Modifiez la propriété du deuxième champ de la requête pour faire afficher la légende suivante : « Total
des commandes par client ».
48/69
4.2. Le regroupement selon les valeurs uniques de plusieurs champs
Il est possible d’obtenir le même résultat en regroupant les factures selon le nom puis pour chaque valeur
identique du nom selon le prénom du client. Le résultat est plus facile à lire.
a) Créez une nouvelle requête basée sur la requête CalculTTC.
b) Insérez les champs NomClient, PrenomClient et MontantTTC en première ligne de la grille de création.
c) Dans la ligne Opération, sélectionner l’opération de Regroupement pour les deux premiers champs
et la fonction Somme pour le dernier.
d) Demandez le tri par ordre alphabétique des noms, puis des prénoms.
e) Testez la requête. L’enregistrer sous le nom Total des montants par client 2.
Attention : La multiplicité des critères de regroupement peut entraîner des résultats contraires `a ceux esp´er´es.
En effet, le regroupement des informations se fait d’abord à partir du premier champ auquel est appliquée
l’opération de regroupement. Puis, chaque groupe est scindé selon le critère du deuxième champ et ainsi de suite.
La multiplicité des sous-groupes peut aboutir `a l’absence, de fait, de regroupements.
a) Créez une nouvelle requête basée sur la requête CalculTTC.
b) Insérez les champs DateVente, NomClient, PrenomClient et MontantTTC.
c) Sélectionnez l’opération de Regroupement pour les trois premiers champs et la fonction Somme pour le
dernier.
d) Nommez la requête Trop c’est trop et testez-la. Vous constatez que le logiciel édite les mêmes valeurs
que celles de la requête CalculTTC. En effet, du fait du nombre trop important de critères retenus, il n’y a
aucun enregistrement qui ne puisse être sommé à un autre.
4.4.1. Regroupement selon les valeurs uniques d’un champ et selon un critère pour ne retenir que
certaines de ces valeurs
La requête suivante a pour objet d’éditer le montant quotidien des commandes effectuées depuis 4 jours.
a) Créez une requête à partir de la requête CalculTTC.
b) La requête est fondée sur le champ DateVente auquel on applique l’opération de Regroupement et le
champ MontantTTC auquel on applique la fonction Somme.
c) Sur le champ DateVente, insérez le critère >=Date()-3.
49/69
d) Enregistrez la requête et la nommer Chiffre d’affaires quotidien sur 3 jours. Vous devez obtenir un
résultat conforme à ce qui suit, aux dates de vente près :
4.4.2. Regroupement selon les valeurs uniques d’un champ et selon un critère pour ne retenir
qu’une de ces valeurs
La requête suivante emploie d’une part le calcul par regroupement pour obtenir la somme des ventes
réalisées chaque jour et d’autre part la recherche sur critère pour ne faire apparaître que la somme des
commandes passées un jour déterminé.
a) Créez une requête à partir de la requête CalculTTC
b) La requête est fondée sur le champ DateVente auquel on applique le critère de Regroupement et le champ
MontantTTC auquel on applique la fonction Somme.
c) Insérez le critère paramétré «[Entrer une date : ] » sur le champ DateVente de manière à ce que
ne soit affiché que le résultat du jour choisi par l’utilisateur.
4.4.3. Combinaison d’un regroupement selon les valeurs uniques d’un champ et d’un critère
portant sur le résultat du calcul
La requête suivante a pour objet d’éditer les chiffres d’affaires quotidiens supérieurs à 4000 euros.
a) Créez une requête à partir de la requête CalculTTC.
b) La requête est fondée sur le champ DateVente auquel on applique le critère de Regroupement et le champ
MontantTTC auquel on applique la fonction Somme.
c) Dans le champ MontantTTC, insérez le critère de sélection.
50/69
d) Enregistrez la requête et nommez-la Chiffres d’affaires supérieurs à 4000.
4.4.4. Combinaison d’un regroupement selon les valeurs uniques d’un champ et d’un critère
portant sur un champ autre que celui du résultat et du regroupement
La requête a pour objet d’éditer le chiffre d’affaires journalier effectué avec les personnes qui portent le nom de
Bouslimi. Le critère de sélection ne porte pas sur un des champs nécessaires au calcul.
a) Créez une requête à partir de la requête CalculTTC.
b) La requête est fondée sur le champ DateVente auquel on applique le critère de Regroupement, le champ
NomClient auquel on applique l’opération Où et le champ MontantTTC auquel on applique la fonction
Somme.
c) Dans le champ NomClient, insérez le critère de sélection.
d) Enregistrez la requête et la nommer Bouslimi. Vous devez obtenir un résultat conforme à ce qui suit, aux
dates de vente près :
51/69
5. Exercices complémentaires
5.3. Statistiques sur les commandes faites par chaque personne dont le code commence par R
Editez le chiffre d’affaire total, le chiffre d’affaire moyen, le nombre d’articles total et le nombre de
commande de chacune des personnes dont le code client commence par R. Nommez cette requête Statistiques
Code R.
5.4. Statistiques sur l’ensemble des personnes dont le code commence par R
Editez le chiffre d’affaire total, le chiffre d’affaire moyen, le nombre d’articles total et le nombre de
commande de l’ensemble des personnes dont le code client commence par R. Nommez cette requête Statistiques
R.
5.5. Ristourne
L’entreprise décide d’offrir un chèque d’un montant de 10% du chiffre d’affaire fait avec chaque client qui a
achet´e pour plus de 1000 dinars. Construisez la requête qui édite le nom, le prénom, le montant total du
chiffre d’affaire et le montant de la ristourne pour les seuls clients qui bénéficient de la ristourne.
Nommez cette requête Ristourne.
52/69
UNIVERSITE DE JENDOUBA Equipe pédagogique :
Chargé de cours : Riadh BOUSLIMI
Chargées des TPs : Faten ABBASSI
Afef HEDHLI
Module : Base de données (Access)
Faculté des Sciences Juridiques, Economiques Classe : 2ème année Licence appliquée
et de Gestion de Jendouba Année Universitaire : 2010/2011
Semestre 2
TP n°7
(Formulaire et État)
L’objectif de cette séance est de montrer l’utilisation des formulaires sous Access.
1. Base de données
Nous utilisons dans cette séance la base de données Salarie. La base salarie.mdb se trouve dans le bureau
de windows.
Lancez ACCESS et ouvrez la base de données salarie.mdb.
2. Les formulaires
Un formulaire est une grille de présentation, de saisie et de modification des données d’une base sans avoir
à manipuler les tables directement. Un formulaire est obtenu à partir d’une table ou d’une requête. Sous Access,
il existe deux façons pour créer un formulaire : (1) à l’aide de l’assistant ou (2) manuellement.
53/69
5. Cliquez sur le bouton suivant, choisissez le format d’affichage de votre formulaire à colonne
simple ;
6. Cliquez sur le bouton suivant et choisissez le style d’affichage de votre formulaire, sélectionnez
l’option Expédition ;
7. Cliquez sur suivant et nommez le formulaire F liste personnel, appuyez sur le bouton Terminer. Le
résultat de cette manipulation est un formulaire d’affichage qui contient tous les champs de la table
sélectionnée.
54/69
Remarquez que Access a ajouté des boutons de navigation en bas du formulaire servant à la
navigation dans la base de données. Cette barre est illustrée dans la figure ci-dessous.
Attention : Le formulaire obtenu permet l’insertion de nouveaux enregistrements dans la table Personnel.
Pour cela, cliquez sur le bouton Ajouter un enregistrement et remplissez les champs du formulaire. La
saisie directe d’un enregistrement sans l’utilisation du bouton Ajouter un enregistrement provoque la
modification du contenu des champs de l’enregistrement en cours.
2.2. Création d’un formulaire pour le résultat d’une requête
1. Créez une nouvelle requête qui permet d’afficher la liste des employés qui résident dans une rue. Pour
cela, insérez l’expression *rue* dans le critère du champ adresse ; nommez la requête Rue.
3. Vérifiez 3801 09-déc-83 Jendoubi Amel 98 rue des roses Jendouba 8100 20-mars-65 les
données de la
requête Rue et de la table Personnel. Remarques !
55/69
Commencez par sélectionner l’option Créer un formulaire en mode création afin d’avoir la possibilité de le
créer manuellement. La boîte `a outils s’affiche automatiquement ; si ce n’est pas le cas, cliquez sur le bouton .
La première opération à faire dans ce cas est d’associer au formulaire une source de données.
1. Sélectionnez le formulaire (la zone grisée et non pas celle avec des rectangles !) et allez dans le menu
Affichage/Propriétés ou cliquez sur le bouton dans la barre d’outils.
2. Sélectionnez l’onglet Toutes pour voir toutes les propriétés du formulaire.
56/69
Maintenant que vous vous êtes familiarisé avec les composants, reproduisez avec des boutons la
barre de déplacement qu’offre Access à la création d’un formulaire. Utilisez pour cela le
composant “Boutons de commande” de la boîte à outils.
5. Verrouillez le champ N˚ employé afin qu’il ne puise pas être modifié par le formulaire. Pour cela,
sélectionnez le champ, allez dans propriétés (cliquez sur le bouton ou Affichage >
propriétés) puis l’onglet Données. Mettez la valeur du champ Verrouillé à Oui.
6. Ajoutez au formulaire, `a l’aide des boutons de la boîte à outils, un bouton qui permet de fermer le
formulaire.
Remarques : On peut aussi créer un formulaire instantané à partir d’une table ou d’une requête.
Pour cela, sélectionnez la table ou la requête et cliquez sur le bouton nouvel objet : formulaire automatique.
3. Les états
Les formulaires permettent d’afficher les données à l’écran, de naviguer dans une base de données et de
modifier ou d’ajouter des données dans des tables. Une autre fonction importante est l’´edition des états. Un état
permet de mettre en forme le contenu d’une base de données pour des fins d’impression.
Nous allons illustrer l’utilisation des états dans ce qui suit.
1. Créez un Etat à l’aide de l’assistant, reprendre les informations de la table Personnel.
2. Dans la fenêtre Etats, choisissez Créer un état à l’aide de l’assistant, glissez l’ensemble des
champs de la table Personnel dans la fenêtre “Champs sélectionnés” (bouton ).
57/69
3. Choisissez ensuite la disposition des données et le mode de présentation.
58/69
Vous obtenez alors un état contenant toutes les informations du personnel et prêt à l’impression.
La présentation de l’état peut être modifiée en passant en mode création (position des contrôles,
étiquettes, formules, etc.).
59/69
4. Exercices complémentaires
1. Créez un formulaire qui retourne les informations d’une personne saisie au clavier.
2. Créez une requête permettant de calculer le salaire de chaque membre du personnel.
Sachant que le salaire de base de chaque employé est de 1000 euros, ce salaire est augmenté par le produit
du nombre d’année d’expérience et de 10% du salaire de base. Nommez la requête P_Salaire.
Fonctions utiles : Pour calculer l’arrondi d’un réel, Access dispose de la fonction ENT(réel).
Remarque : Access exprime la différence entre deux dates par le nombre de jours.
3. A partir de la requête P_Salaire, créez un état éditant les fiches de paye des employés.
60/69
Ministère de l’enseignement supérieur et de la recherche scientifique en Tunisie
Faculté des Sciences Juridiques, Economique et de Gestion de Jendouba
Module : Base de données Access Durée : 2heures
Session : Mai 2011 Documents non autorisés
Enseignant : Riadh BOUSLIMI Nombre de Pages : 8
Code secret
Numéro de carte d’identité nationale :
de l’administration :
Nom et prénom : _____________________________________Goupe : ________________ N° ordre : __________________
--------------------------------
Exercice n°1(10pts)
Après l'analyse du système d'information de gestion de voyage, on dégage les règles de gestions suivantes :
Un vol comprend un ou plusieurs voyageurs ;
Un voyageur peut faire un ou plusieurs vols ;
Un avion est affecté à un ou plusieurs vols ;
Un pilote est affecté à un ou plusieurs vols ;
61/69
Ne rien écrire ici
Compléter la description graphique de la base de données ci-dessous en rajoutant les clés primaires et les liens
entre les tables:
Avion Pilote
Avnum Plnum
Vol
Avnom Plnom
capacite Plprenom
Pladresse
Datedebut
datefin
Heuredebut
heurefin
Voyageur
Voynum
Voynom
Voyprenom
voyadresse
Exercice n°2(45pts)
La faculté des Sciences Juridiques, Économiques et de Gestion de Jendouba souhaite implémenter une
base de données de sa gestion de la scolarité. Les membres du service introduisent chaque année les données
concernant les étudiants. Un étudiant est caractérisé par une carte d’identité nationale unique (numérique de huit
chiffres), nom, prénom, date de naissance, adresse et sexe (les valeurs autorisées sont « F » ou « H » et par
défaut c’est « H »).
Un étudiant est affecté à une et une seule spécialité et chaque spécialité comporte un ou plusieurs étudiants.
Une spécialité est caractérisée par un code unique (caractères de taille 8) et un libellé.
Chaque étudiant effectue une et une seule inscription pour chaque année et chaque inscription est identifiée par
un numéro d’inscription unique. Dans une année on a un ou plusieurs étudiants qui sont inscrit.
À la fin de chaque semestre, les membres de la scolarité feront la saisie des notes des étudiants.
62/69
Ne rien écrire ici
Chaque étudiant aura dans chaque module une note de contrôle contenu et une note d’examen, dont chacune des
deux notes doit être comprises entre 0 et 20. Un module est caractérisé par un code (caractère de taille 3), nom
abrévié, nom complet et coefficient.
63/69
Ne rien écrire ici
3) Donner une description textuelle de la base de données en spécifiant les clés primaires et les clés
étrangères.
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
64/69
Ne rien écrire ici
Exercice n°3(30pts)
On donne le schéma de la base de données d’une gestion d’emploi du temps :
Enseignant(codeEns,nom,prénom,ville,téléphone)
Module(codeMod,libelle,coef,domaine)
Classe(codeCl,effectifs)
Cours(codeEns#,codeMod#,codeCl#,jour,heuredébut,heurefin,typecours)
Remarques :
− pour la colonne « type cours » les valeurs possibles sont : « cours », « Travaux dirigés » et « Travaux
pratiques ».
− pour la colonne « domaine » les valeurs possibles sont « Informatique », « Economie », « Gestion » et
« Droit »
__________________________________________________________________________________________
__________________________________________________________________________________________
_________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
________________________________________________________________________________________
65/69
Ne rien écrire ici
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
Q3) codecl, effectifs des classes qui ne suivent pas des cours du module « Base de Données Access ».
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
Q4) codecl des classes qui suivent des « cours » de « Base de Données Access » avec l’enseignant
« BOUSLIMI Riadh ».
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
66/69
Ne rien écrire ici
Q5) nom et ville des enseignants qui enseignent des « Travaux pratiques » du module « Base de
Données Access ».
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
Q6) nom des enseignants qui habitent « Jendouba » ou « Beja » ou « Kef » qui enseignent que les
modules « Informatique » et qui rentrent avant « 15:00 ».
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
Q7) nom, prénom, libelle, jour, heuredébut et heurefin des cours enseignés par les enseignants qui
habitent à « Tunis » et qui enseignent que le « lundi », le « mardi » et le « mercredi ».
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
67/69
Ne rien écrire ici
Q8) nom, codecl dont les enseignants enseignent le « lundi » les classes dont leurs effectifs est
supérieurs à 100 et dont leurs villes est « Jendouba ».
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
Q9) Nom et prénom des enseignants qui habitent à « Jendouba » qui enseignent toutes les classes.
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
__________________________________________________________________________________________
Bonne chance
68/69
Bibliographie
G. Gardarin, Bases de données, Eyrolles, 2002
J.-M. Hasenfratz, ACCESS 2002 : Gérer ses bases de données, PUG, 2002
R. Alaguillaume, Access 2003 : notions de base, Dunod, 2004
J. Moréjon, Principes et conception d'une base de données relationnelle , les Éd. d'Organisation , 1992
P. Vincent, Votre première base de données avec Access 2002 , Osman Eyrolles multimédia , 2002
69/69