Académique Documents
Professionnel Documents
Culture Documents
Plan
Introduction sur le modèle entité/association
Du MCD au MLD
Création de requêtes
Modification / saisie de données
Projet : conception de la Base de Données de l'université
Introduction
Utilisation des Bases de Données: stockage de l'information, et organisation des données pour
un accès plus facile à l'information.
Donc première phase de toute conception d'une base de données = créer un modèle de la base.
Exercice 1
Pour organiser un karaoké, une association veut créer une base de données qui lui permettra
d'enregistrer le contenu de tous les DVD dont elle dispose.
Les organisateurs veulent ensuite pouvoir éditer la liste de tous les chanteurs, de tous les titres
et le sommaire de chaque DVD.
Dessinez le modèle de données correspondant.
Du MCD au MLD
Ce que nous venons de construire est le "MCD": Modèle Conceptuel des Données.
L'étape suivante pour la conception de votre base est la construction du "MLD": Modèle
Logique des Données.
Celui-ci sera directement utilisable pour créer les tables qui constitueront la structure de votre
Base de Données Relationnelle.
Il s'agit pour cela de "mettre à plat" votre MCD, en le transformant en une liste de tables, et de
leurs attributs associés:
nomTable ( attribut1 , attribut2 , ... )
Les tables sont les entités de votre MCD, ainsi que les associations "n - n".
Les attributs de vos tables et de vos associations leur restent associées.
Pour toute association "1 - n" entre les entités E1 et E2, ajouter un attribut à la table de
E1, qui fait référence à l'identifiant de la table de E2.
Et pour toute association "n - n" entre les entités E1 et E2, ajouter deux attributs à la
table de l'association, faisant référence aux identifiants des tables des entités E1 et E2.
Exercice 2
Un magasin de sport a besoin de stocker ses informations principales dans une base de
données.
Il s'agit de stocker toutes les informations relatives à ses produits, ses clients et ses
fournisseurs.
Il souhaite que l'organisation soit facilitée par le regroupement des produits en différentes
catégories.
Et il souhaite à partir de là pouvoir facilement consulter ses stocks, la liste de ses meilleurs
clients,
le top 10 de ses produits vendus, ou la facture d'un client donné...
Créez les MCD et MLD correspondant.
Exercice 3
Exercice 4
Une agence immobilière a besoin d'une base de données pour gérer ses locations.
Il faut entre autres qu'elle soit capable de cibler les logements pouvant convenir à un client
donné.
Elle souhaite également pouvoir facilement dresser la facture d'un client donné,
savoir ce qu'elle doit verser à un propriétaire donné, ou calculer les primes de ses agents.
Créer les MCD et MLD correspondant.
Création de requêtes
Présentation sur la Base de Données Sports
Exercices
Donner les spécifications nécessaires pour effectuer les requêtes présentées dans les exercices
3 et 4.
Intégrité référentielle
Créez la requête suivante : afficher toutes les commandes effectuées par des clients habitant la
ville de "Thoiry".
Vous devez trouver que seuls 2 clients sont concernés. Notez leurs numéros clients.
Puis créez 2 requêtes, pour chacun des 2 numéros clients concernés, listant l'ensemble des
commandes qu'ils ont effectuées.
Sauvegardez votre base, et faites en 2 copies : "bd1" et "bd2".
Maintenant faites de même dans "bd2", mais après avoir effectué la modification suivante:
dans "Outils" - "Relations", cliquez sur le lien entre les tables "clients" et "commande", puis
"appliquer l'intégrité référentielle".
Observez alors les différences de changements dans les requêtes, par rapport aux changements
dans "bd1".
Cette fois, les 3 doivent être vides!
Les enregistrements ont été effacés en cascade pour assurer l'intégrité référentielle de la base.
Ainsi, il est assuré que toute référence concerne une entité existante du système.
Voir aussi...
Accueil pour les cours
Cours Internet
Exercice 1 :
MLD correspondant à l'exercice 1
DVD ( référence , titre )
Exemples
Un extrait de chacune des tables figurant dans cette base est donné ci-dessous :
categ
numcateg descriptif
1 Chaussons d'escalade
clients
commande
numcommande Date refclient
1 22/01/97 1
marques
nummarque nom
1 Boreal
procom
produit
Villes
CodePostal Ville
01710 Thoiry
Requêtes
Faire une requête sur une telle base signifie préciser :
clients
tables ouvertes
Villes
liens clients.Code_Postal = Villes.CodePostal
clients.Nom
champs vus
Villes.Ville
conditions clients.nom = Paldir
triés par
regroupés par
Ce qui donne en Access (sans oublier l'intégration des tables utiles clients et Villes) :
Si le nom recherché devait commencer par "Pal", la condition serait: "clients.nom = Pal*".
L'étoile "*" signifie "un certain nombre de caractères quelconques".
Si le nom recherché devait commencer par "Pal" et contenir 5 lettres, la condition serait:
"clients.nom = Pal??".
Le point d'interrogation "?" signifie "un caractère quelconque".
Et si le nom recherché devait être saisi par l'utilisateur, la condition serait: "clients.nom =
[ Quel nom ? ]".
L'utilisation des crochets "[ ]" permet de spécifier que l'entrée est fournie par l'utilisateur.
La phrase contenue entre les crochets est celle qui est présentée à l'utilisateur lorsque la saisie
lui est demandée.
Opérations
clients
tables ouvertes
Villes
liens clients.Code_Postal = Villes.CodePostal
Villes.Ville
champs vus
Compte(clients.nom)
conditions
triés par
regroupés par Villes.Ville
Ce qui donne en Access (sans oublier l'intégration des tables utiles clients et Villes) :
Champ Ville nom
Table Villes clients
Tri
Opération Regroupement Compte
Afficher
Critères
Ou
Par contre, si l'on souhaite ne considérer que les clients dont le nom contient un "a",
c'est-à-dire si l'on souhaite ajouter la condition "clients.nom = *a*",
il ne suffit pas d'ajouter le critère "*a*" au niveau du nom des clients,
car dans ce cas, Access interprèterait "Compte ( clients.nom ) = *a*",
au lieu d'interpréter "Compte ( clients.nom tels que clients.nom = *a* )"!!!
Pour contourner le problème, il faut d'abord créer une requête "ClientsA" sélectionnant les
clients dont le nom contient un "a".
Puis utiliser le résultat de cette requête comme la table client à intégrer dans la requête de
comptage du nombre de client par ville!
Exercices
requêtes simples :
2) Afficher les noms et prénoms des clients dont le nom commence par "Ta"
3) Rechercher les clients dont le nom commence par "Ta" et qui habitent le nord
4) Rechercher les clients dont le nom commence par "Ta" et qui habitent le nord ou le pas de
calais
5) Rechercher les clients dont le nom commence par "Ta" et qui n'habitent ni le nord ni le pas
de calais
6) Afficher le nom, la ville de résidence et le code postal des clients dont le nom commence
par "Ta",
triés en fonction des noms (croissant) puis du code postal (croissant)
7) Afficher le nom, la ville de résidence et le code postal des clients dont le nom commence
par Ta*,
triés en fonction du code postal (croissant) puis des noms dans l'ordre décroisssant.
Vérifier avec le code postal 9223
8) Afficher les noms des clients dont le nom commence par "Ta" qui ont effectué une
commande ainsi que la date de commande.
Combien trouvez vous de commandes ?
9) Afficher les noms des clients qui ont effectué une commande en janvier 97
10) Afficher le nom du client qui a effectué la commande 1 ainsi que les produits commandés
11) Afficher les numéros de commande et les produits commandés par ce client
12) Afficher les numéros de commande et les produits commandés par un client dont le code
sera saisi au clavier
13) Afficher les produits commandés par un client dont le code et le code du numéro de
commande seront saisis au clavier
16) Afficher le nom, la quantité, le prix des produits et le montant par produit pour la
commande 1 effectuée par Alavie
18) Afficher le nombre de produits différents commandés par le client Alavie par commande
19) Afficher le nombre d'articles commandés par le client Alavie par commande
20) Afficher le montant et la date des commandes effectuées par le client Alavie
21) Afficher le montant et la date des commandes effectuées par un client dont le code sera
saisi au clavier
22) Afficher le montant de la dernière commande effectuée par un client dont le code sera
saisi au clavier
23) Afficher le nom et prénom des clients dont le total des commandes est de plus de 5000F
(ou plutôt 5000 €... mais en fait les prix sont en Francs car la création de la base est antérieure
au passage à l'euro!)
24) Afficher le nom et prénom des clients qui ont effectué une commande de plus de 5000F
25) Afficher le nom et prénom des clients qui ont effectué une commande dont le montant est
supérieur à une somme saisie au clavier
Correction
2) Afficher les noms et prénoms des clients dont le nom commence par "Ta"
3) Rechercher les clients dont le nom commence par "Ta" et qui habitent le nord
clients
tables ouvertes
Villes
liens clients.Code_Postal = Villes.CodePostal
champs vus clients.Nom
clients.Nom = Ta*
conditions
Villes.CodePostal = 59*
triés par
regroupés par
4) Rechercher les clients dont le nom commence par "Ta" et qui habitent le nord ou le pas de
calais
clients
tables ouvertes
Villes
liens clients.Code_Postal = Villes.CodePostal
champs vus clients.Nom
clients.Nom = Ta*
conditions
Villes.CodePostal = 59* ou 62*
triés par
regroupés par
5) Rechercher les clients dont le nom commence par "Ta" et qui n'habitent ni le nord ni le pas
de calais
clients
tables ouvertes
Villes
liens clients.Code_Postal = Villes.CodePostal
champs vus clients.Nom
clients.Nom = Ta*
conditions
Villes.CodePostal = pas 59* et pas 62*
triés par
regroupés par
6) Afficher le nom, la ville de résidence et le code postal des clients dont le nom commence
par "Ta",
triés en fonction des noms (croissant) puis du code postal (croissant)
clients
tables ouvertes
Villes
liens clients.Code_Postal = Villes.CodePostal
clients.Nom
champs vus Villes.Ville
Villes.CodePostal
conditions clients.Nom = Ta*
clients.Nom croissant
triés par
Villes.CodePostal croissant
regroupés par
7) Afficher le nom, la ville de résidence et le code postal des clients dont le nom commence
par "Ta",
triés en fonction du code postal (croissant) puis des noms dans l'ordre décroisssant.
Vérifier avec le code postal 92230
clients
tables ouvertes
Villes
liens clients.Code_Postal = Villes.CodePostal
clients.Nom
champs vus Villes.CodePostal
Villes.Ville
conditions clients.Nom = Ta*
clients.Nom décroissant
triés par
Villes.CodePostal croissant
regroupés par
8) Afficher les noms des clients dont le nom commence par "Ta" qui ont effectué une
commande ainsi que la date de commande.
Combien trouver vous de commandes ?
9) Afficher les noms des clients qui ont effectué une commande en janvier 97
clients
tables ouvertes
commande
liens clients.numclient = commande.refclient
champs vus clients.Nom
conditions commande.Date = ??/01/97
triés par
regroupés par
10) Afficher le nom du client qui a effectué la commande 1 ainsi que les produits commandés
clients
commande
tables ouvertes
procom
produit
clients.numclient = commande.refclient
liens commande.numcommande = procom.refcommande
procom.refproduit = produit.numproduit
clients.Nom
champs vus
produit.nom
conditions commande.numcommande = 1
triés par
regroupés par
11) Afficher les numéros de commande et les produits commandés par ce client
clients
commande
tables ouvertes
procom
produit
clients.numclient = commande.refclient
liens commande.numcommande = procom.refcommande
procom.refproduit = produit.numproduit
commande.numcommande
champs vus
produit.nom
conditions clients.Nom = Alavie
triés par
regroupés par
12) Afficher les numéros de commande et les produits commandés par un client dont le code
sera saisi au clavier
clients
commande
tables ouvertes
procom
produit
clients.numclient = commande.refclient
liens commande.numcommande = procom.refcommande
procom.refproduit = produit.numproduit
commande.numcommande
champs vus
produit.nom
conditions Nom = [Quel nom?]
triés par
regroupés par
13) Afficher les produits commandés par un client dont le code et le code du numéro de
commande seront saisis au clavier
commande
tables ouvertes procom
produit
commande.numcommande = procom.refcommande
liens
procom.refproduit = produit.numproduit
champs vus produit.nom
commande.refclient = [Quel code client?]
conditions
procom.refcommande = [Quel code commande?]
triés par
regroupés par
16) Afficher le nom, la quantité, le prix des produits et le montant par produit pour la
commande 1 effectuée par Alavie
commande
tables ouvertes procom
produit
commande.numcommande = procom.refcommande
liens
procom.refproduit = produit.numproduit
produit.nom
procom.quantité
champs vus
produit.Prix
procom.quantité * produit.Prix
conditions procom.refcommande = 1
triés par
regroupés par
marques
tables ouvertes
produit
liens marques.nummarque = produit.refmarques
marques.nom
champs vus
Compte(produit.numproduit)
conditions
triés par
regroupés par marques.nom
18) Afficher le nombre de produits différents commandés par le client Alavie par commande
clients
commande
tables ouvertes
procom
produit
clients.numclient = commande.refclient
liens commande.numcommande = procom.refcommande
procom.refproduit = produit.numproduit
champs vus Compte(produit.numproduit)
conditions clients.Nom = Alavie
triés par
regroupés par commande.numcommande
19) Afficher le nombre d'articles commandés par le client Alavie par commande
clients
commande
tables ouvertes
procom
produit
clients.numclient = commande.refclient
liens commande.numcommande = procom.refcommande
procom.refproduit = produit.numproduit
commande.numcommande
champs vus
Somme(procom.quantité)
conditions clients.Nom = Alavie
triés par
regroupés par commande.numcommande
20) Afficher le montant et la date des commandes effectuées par le client Alavie
clients
commande
tables ouvertes
procom
produit
clients.numclient = commande.refclient
liens commande.numcommande = procom.refcommande
procom.refproduit = produit.numproduit
commande.Date
champs vus
Somme(procom.quantité * produit.Prix)
conditions clients.Nom = Alavie
triés par
regroupés par commande.numcommande
21) Afficher le montant et la date des commandes effectuées par un client dont le code sera
saisi au clavier
commande
tables ouvertes procom
produit
commande.numcommande = procom.refcommande
liens
procom.refproduit = produit.numproduit
commande.Date
champs vus
Somme(procom.quantité * produit.Prix)
conditions commande.refclient = [Quel code client?]
triés par
regroupés par commande.numcommande
22) Afficher le montant de la dernière commande effectuée par un client dont le code sera
saisi au clavier
commande
tables ouvertes procom
produit
commande.numcommande = procom.refcommande
liens
procom.refproduit = produit.numproduit
Max(commande.Date)
champs vus
Somme(procom.quantité * produit.Prix)
conditions commande.refclient = [Quel code client?]
triés par
regroupés par commande.numcommande
23) Afficher le nom et prénom des clients dont le total des commandes est de plus de 5000F
clients
commande
tables ouvertes
procom
produit
clients.numclient = commande.refclient
liens commande.numcommande = procom.refcommande
procom.refproduit = produit.numproduit
clients.Nom
champs vus clients.Prénom
Somme(procom.quantité * produit.Prix)
conditions Somme(procom.quantité * produit.Prix) > 5000
triés par
regroupés par clients.numclient
24) Afficher le nom et prénom des clients qui ont effectué une commande de plus de 5000F
clients
commande
tables ouvertes
procom
produit
clients.numclient = commande.refclient
liens commande.numcommande = procom.refcommande
procom.refproduit = produit.numproduit
clients.Nom
champs vus clients.Prénom
Somme(procom.quantité * produit.Prix)
conditions Somme(procom.quantité * produit.Prix) > 5000
triés par
clients.numclient
regroupés par
commande.numcommande
25) Afficher le nom et prénom des clients qui ont effectué une commande dont le montant est
supérieur à une somme saisie au clavier
clients
commande
tables ouvertes
procom
produit
clients.numclient = commande.refclient
liens commande.numcommande = procom.refcommande
procom.refproduit = produit.numproduit
clients.Nom
champs vus clients.Prénom
Somme(procom.quantité * produit.Prix)
conditions Somme(procom.quantité * produit.Prix) > [Quel montant?]
triés par
clients.numclient
regroupés par
commande.numcommande