Département Informatique et Statistique, Faculté de SEG, Université Lumière Lyon 2
M2 Informatique spécialité IDS – Année 2009-2010
Bases de données et programmation – Exercices UML et relationnel (1)
J. Darmont (http://eric.univ-lyon2.fr/~jdarmont/), 13/10/09
trajet. Cette dernière dépend des conditions atmosphériques, donc de la DATE.
Un certain nombre de PERSONNELS est affecté à chaque DEPART. On distingue les personnels non-
navigants des personnels navigants. Parmi ces derniers, on distingue le(s) pilote(s). Un membre du per-
sonnel est caractérisé par son NOM, son ADRESSE, son NO-TELEPHONE.
Exercice 1
Une entreprise de fabrication et de distribution de matériels possède une usine et plusieurs lieux de
stockage/expédition.
Un produit est caractérisé par un numéro (NOP), un libellé (LIB), un prix unitaire (PU).
Chaque produit peut être stocké dans un ou plusieurs dépôts. Un dépôt est caractérisé par un numéro
(NOD). Dans chaque dépôt on connaît la quantité en stock de chaque produit (QTS) et la quantité dis-
ponible (QTD) (la différence représente la quantité réservée pour des commandes déjà validées mais
non livrées).
Un client est déterminé par son numéro (NOCLI), son nom (NOM), son adresse (ADR), le total de son
chiffre d'affaire (CA), le taux de réduction (RED). Chaque client est livré à partir d'un dépôt privilégié,
ou à partir d'un dépôt de secours en cas de défaillance du premier.
À un client peuvent être associées une ou plusieurs commandes, chacune étant caractérisée par un nu-
méro (NOCOM) et une date (DAC). Une ligne comporte un code produit, une quantité commandée
(QTC), un délai de livraison (DEL) et un code livraison (CL) indiquant si la livraison est intervenue.
À chaque commande peuvent être associées une ou plusieurs factures, une facture étant élaborée dès
qu'une livraison est intervenue. Une facture est caractérisée par un numéro de facture (NOF), une date
(DAP), un montant (MOF). Une facture peut concerner plusieurs produits. Chaque ligne comprend la
quantité facturée (QTF) et le montant correspondant (MOP).
Proposer un schéma conceptuel des données à l’aide d’un diagramme de classes UML.
Exercice 2
Une compagnie aérienne veut mettre en œuvre une base de données pour gérer ses différents vols.
Un VOL est un parcours aérien caractérisé par un NUMERO, une VILLE-DEPART, une VILLE-
ARRIVEE, une HEURE-DEPART, une HEURE-ARRIVEE, une DISTANCE, une FREQUENCE.
1) On désire utiliser cette base pour produire (entre autres) les listes suivantes :
• passagers enregistrés pour un départ,
• personnels affectés à un départ pour chacune des trois catégories,
• départs programmés pour un vol donné,
• départs assignés à un avion donné pour la semaine à venir,
• caractéristiques du vol correspondant à un départ.
Proposer un diagramme de classes UML pour cette base (tous les éléments figurant en majuscules dans
l'énoncé doivent être pris en compte), en exploitant au maximum la relation d’héritage.
2) Un VOL peut en fait être constitué de plusieurs tronçons. Par ailleurs on souhaite pouvoir établir
pour chaque VILLE les vols au départ et les vols à l'arrivée.
Suggérer une amélioration du modèle précédent pour prendre en compte ces deux aspects.
Exercice 3
Il s'agit d'établir le schéma conceptuel d'une base de données pour la gestion des formations d'un insti-
tut privé. Un cours est caractérisé par un numéro de cours (NOCOURS), un libellé (LIBELLE), une
durée en heures (DUREE) et un type (TYPE). Un cours peut faire l'objet dans l'année de plusieurs ses-
sions identiques. Une session est caractérisée par un numéro (NOSES), une date de début (DATE) et
un prix (PRIX). Une session est le plus souvent assurée par plusieurs animateurs et est placée sous la
responsabilité d'un animateur principal. Un animateur peut intervenir dans plusieurs sessions au cours
de l'année. On désire mémoriser le nombre d'heures (NBH) effectué par un animateur pour chaque ses-
sion. Un animateur est caractérisé par un numéro (NOANI), un nom (NOMA) et une adresse (ADRA).
Chaque session est suivie par un certain nombre de participants. Un participant est une personne indé-
pendante ou un employé d'une entreprise cliente. Un participant est caractérisé par un numéro (NO-
PAR), un nom (NOMP) et une adresse (ADRP). Dans le cas d’un employé, on enregistre le nom (NO-
MEN) et l’adresse de l’entreprise (ADREN). On désire pouvoir gérer d’une manière séparée (pour la
facturation notamment) les personnes indépendantes d’une part, et les employés d’autre part. Si néces-
saire, on fera les hypothèses sémantiques complémentaires qui pourraient s'imposer.
Établir un schéma conceptuel (diagramme de classes UML) pour cette base de données.
Lorsqu'un VOL est programmé pour une DATE déterminée il constitue un DEPART. Un VOL n’est
programmé qu'une seule fois dans une journée à l'heure prévue.
Exercice 4
Un certain nombre de PASSAGERS peut être enregistré pour un DEPART. Un PASSAGER est carac-
térisé par son NOM, son ADRESSE et son NO-TELEPHONE.
Un AVION est affecté à chaque DEPART. Un AVION est caractérisé par un NUMERO, un TYPE,
Publicité
une CAPACITE. Un AVION utilise une certaine QUANTITE DE CARBURANT pour accomplir le
Traduire en schémas relationnels les trois schémas UML conçus lors des exercices précédents (compa-
gnie aérienne, entreprise de fabrication/distribution, institut de formation).
Exercices UML et relationnel (1)
1/2
Exercices UML et relationnel (1)
2/2
Correction Exercice 1
Correction Exercice 2.1
V O L
NUMER O
vill e-depa rt
vill e-arrivee
he ure-depart
he ure-arrivee
distance
fre quence
1
1
0..*
0..*
DEPART
NUMERO
date
0..*
0..*
1..*
1..*
0..*
0..*
DEPART-AVION
quantite-carburant
0..*
0..*
PASSAGER
1
1
AVION
NUMERO
type
capacite
PERSONNE
NUMERO
nom
adresse
no-telephone
{Inclusif}
NON-NAVIGANT
{Exclusif, Co mplète}
PERSON NEL
1..*
1..*
PILOTE
NAVIGANT
NB : Les identifiants sont indiqués en majuscules.
Exercices UML et relationnel (1)
3/2
Exercices UML et relationnel (1)
4/2
Correction Exercice 2.2
Correction Exercice 3
VOL-TRONCON
heure-depart
heure-arrivee
Publicité
V O L
NUMER O
freq uence 1
1
1..*
1..*
DEPART-AVION
quantite-carburan t
0..*
0..*
DEPART
NUMER O
da te
0 ..*
0 ..*
1..*
1..*
0..*
0..*
0..*
0..*
PASSAGER
1
1
AVION
NUMERO
type
capacite
PERSONN E
NUMER O
nom
adres s e
no-telephone
{Inclus if}
1..*
1..*
TRONCON
NUMERO
ville-depart
ville-arrivee
dis tance
NON-NAVIGANT
{Exclus if, Com plète}
PERSONNEL
1..*
1..*
PILOTE
NAVIGANT
NB : Les identifiants sont indiqués en majuscules.
1
1
COUR S
NOCOURS
libelle
duree
type
EMPLOYE
no men
ad ren
1..*
1..*
1..*
1..*
SESSION
Publicité
NOSES
date
pri x
0..*
0..*
Principal
1
1
1..*
1..*
PARTICIPANT
ANIMATEUR
1..*
1..*
1..*
1..*
ANIME
nbh
{Exclusi f}
PERSONNE
NOP
nom
adr
NB : Les identifiants sont indiqués en majuscules.
Exercices UML et relationnel (1)
5/2
Exercices UML et relationnel (1)
6/2
Correction Exercice 4
PRODUIT (NOP, LIB, PU)
DEPOT (NOD)
CLIENT (NOCLI, NOM, ADR, CA, RED, NOD_PRIV#, NOD_SEC#)
COMMANDE (NOCOM, DAC, NOCLI#)
FACTURE (NOF, DAP, MOP, NOCOM#)
STOCKAGE (NOP#, NOD#, QTS, QTD)
LIGNE_COMMANDE (NOP#, NOCOM#, QTC, DEL, CL)
LIGNE_FACTURE (NOP#, NOF#, QTF, MOF)
VOL (NUMVOL, FREQUENCE)
TRONCON (NUMTRONC, VILLEDEP, VILLEARR, DISTANCE)
AVION (NUMAV, TYPE, CAPACITE)
DEPART (NUMDEP, DTE, NUMVOL#, NUMAV#, QTECARBU)
PERSONNE (NUMPERS, ADRESSE, TEL, CAT1) CAT1 ˛
PASSAGER (NUMPERS_PAS#)
PERSONNEL (NUMPERS_PER#, CAT2) CAT2 ˛
NAVIGANT (NUMPERS_NAV#)
NON_NAV (NUMPERS_NON#)
PILOTE (NUMPERS_PIL#)
DECOUPER (NUMVOL#, NUMTRONC#, HEUREDEP, HEUREARR)
RESERVER (NUMDEP#, NUMPERS_PAS#)
AFFECTER (NUMDEP#, NUMPERS_PER#)
{PASSAGER, PERSONNEL}
{NAVIGANT, NON_NAV}
SESSION (NOSES, DATE, PRIX, NOCOURS#, NOP_ANIPRINC#)
COURS (NOCOURS, LIBELLE, DUREE, TYPE)
PERSONNE (NOP, NOM, ADR, CAT) CAT ˛
ANIMATEUR (NOP_ANI#)
PARTICIPANT (NOP_PAR#)
EMPLOYE (NOP_EMP#, NOMEN, ADREN)
PARTICIPER (NOP_PAR#, NOSES#)
ANIMER (NOP_ANI#, NOSES#, NBH)
{ANIMATEUR, PARTICIPANT}
Exercices UML et relationnel (1)
7/2