Vous êtes sur la page 1sur 18

Cours d'introduction aux bases de données.

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.

Modèle utilisé: Entité / Association (ou Entité / Relation) , P. Chen, 1976.

Le modèle Entité / Association

Représentation explicite de 3 concepts principaux: celui d'entité, celui d'association, et celui


d'attribut.

1. Entité = classe générique d'individus ou d'objets ayant les mêmes caractéristiques.


Ex: les entités "clients", "produits" ou "fournisseurs", dans une base de données de
magasin.

2. Association = classe générique de liens reconnus ou possibles entre individus ou


objets.
Ex: l'association "achète" lie les clients et les produits d'un magasin.
3. Attribut = propriété distinctive d'une entité ou d'une association.
Ex: le nom d'un client est un attribut de l'entité "clients".

Il existe différents types d'associations:

 Association "1 - 1":


A une occurrence de l'entité E1 peut correspondre au plus une occurrence de l'entité
E2, et vice versa.
Ex: l'association "loue" liant deux entités "clients" et "voitures" d'une agence de
locations de voitures,
si un client ne peut louer qu'une voiture à la fois.

 Association "1 - n":


A une occurrence de l'entité E1 peuvent correspondre plusieurs occurrences de l'entité
E2,
mais à une occurrence de l'entité E2 peut correspondre au plus une occurrence de
l'entité E1.
Ex: l'association "possède" liant deux entités "clients" et "comptes" d'une banque.
 Association "n - n":
A une occurrence de l'entité E1 peuvent correspondre plusieurs occurrences de l'entité
E2, et vice versa.
Ex: l'association "achète" liant deux entités "clients" et "produits" d'un supermarché.

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.

Faites-le avant de regarder la réponse!

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.

Faites le MLD correspondant au MCD de l'exercice 1, avant de regarder la réponse!

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

Un complexe cinématographique a besoin d'une base de données pour gérer la distribution de


ses billets de cinéma.
Les gérants souhaitent ainsi facilement gérer le remplissage de leurs salles.
Et ils souhaitent ensuite pouvoir facilement obtenir des informations sur les films qui
marchent le mieux,
les acteurs attirant le plus de public, les heures d'affluence des clients, ou la recette d'une
séance précise...
Créer les MCD et MLD correspondant.

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.

Modification / saisie de données


Ajoutez le client suivant dans la base de données sport :
Nom : Avite / Prénom : Yves / Code Postal : 59250 / Ville : Halluin

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

Dans "bd1", supprimer de la table "Villes" la ligne concernant la ville de "Thoiry".


Observez les changements dans les 3 requêtes que vous venez de créer.
La première doit alors être vide. Mais les 2 autres doivent fournir les mêmes résultats.

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 )

Chansons ( référence , titre , refChanteur)

Chanteurs ( référence , nom )

Comporte ( refDvd , refChanson)


La Base de Données Sports
La Base de Données Sports enregistre les commandes de produits passées à un magasin de
sport par ses clients.

Télécharger cette base ICI, et l'ouvrir sous Access.


Pour visualiser sa structure, aller dans le menu "Outils", puis dans "Relations".
Voilà ce que vous devez visualiser:

Exemples
Un extrait de chacune des tables figurant dans cette base est donné ci-dessous :

categ

numcateg descriptif
1 Chaussons d'escalade

clients

numclient Nom Prénom Code_Postal


1 Alavie Irenée 59100

commande
numcommande Date refclient
1 22/01/97 1

marques

nummarque nom
1 Boreal

procom

refcommande refproduit quantité


1 15 1
1 24 1

produit

numproduit refcateg nom descriptif Prix refmarques


2 1 Ninja baby Pour les juniors sur murs 235,00 F 1
3 1 Monkey Pour les juniors sur tous les sites 254,00 F 2

Villes

CodePostal Ville
01710 Thoiry

Requêtes
Faire une requête sur une telle base signifie préciser :

 les tables ouvertes


 les champs sélectionnés
 les jointures
 les critères
 les tris
 les regroupements
 les champs calculés
 les paramètres

Exemple : afficher le client Paldir avec sa ville d'habitation.

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

Champ nom Ville


Table clients Villes
Tri
Afficher
Critères Paldir
Ou

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

Pour introduire l'utilisation des opérations, prenons l'exemple de l'affichage du nombre de


clients par ville :

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

Pour obtenir la ligne supplémentaire "Opération", aller dans le menu "Affichage" et


sélectionner "Opérations", ou cliquer sur le bouton .

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

Définir les requêtes suivantes :

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

requêtes avec saisie de critères :

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

requêtes avec champs calculés :

14) Afficher le prix du produit le plus cher

15) Afficher le maximum, le minimum et la moyenne des prix des produits

16) Afficher le nom, la quantité, le prix des produits et le montant par produit pour la
commande 1 effectuée par Alavie

requêtes avec regroupements :

17) Afficher le nombre de produits par marque

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"

tables ouvertes clients


liens
clients.Nom
champs vus
clients.Prénom
conditions clients.nom = Ta*
triés par
regroupés par

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 ?

tables ouvertes clients


commande
liens clients.numclient = commande.refclient
clients.Nom
champs vus
commande.Date
conditions clients.Nom = Ta*
triés par
regroupés par

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

14) Afficher le prix du produit le plus cher

tables ouvertes produit


liens
champs vus Max(produit.Prix)
conditions
triés par
regroupés par

15) Afficher le maximum, le minimum et la moyenne des prix des produits

tables ouvertes produit


liens
Max(produit.Prix)
champs vus Min(produit.Prix)
Moyenne(produit.Prix)
conditions
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

17) Afficher le nombre de produits par marque

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

Vous aimerez peut-être aussi