Usine de production
[30 minutes]
Une usine cherche à modéliser sa production de véhicules et de moteurs :
Les véhicules sont identifiés par un numéro d'immatriculation alphanumérique et caractérisés par une couleur, dont la dénomination est une chaîne de caractères. Chaque véhicule peut comporter un unique moteur et/ou un nombre quelconque de pneus.
Chaque moteur est monté sur un et un seul véhicule et est identifié par un numéro de série. Un moteur est caractérisé par une puissance, en chevaux.
Tout pneu est monté sur un unique véhicule et est identifié par un numéro de série. Sa position est définie localement sur ce véhicule et par rapport à l'essieu : Dn pour les pneus situé sur la droite de l'essieu et Gn pour les pneus situés à gauche ; n représentant le numéro de l'essieu (1 pour celui situé devant, 2 pour la deuxième rangée, etc.). Un pneu est caractérisé par un diamètre et une largeur en pouces.
Les moteurs, les pneus et les véhicules sont fabriqués sous une marque. Les mêmes marques peuvent fabriquer indifféremment des moteurs, des pneus et/ou des véhicules, et un véhicule d'une certaine marque peut comporter un moteur et/ou des pneus de marque différente.
Question
Réaliser le modèle UML de ce problème en faisant apparaître les domaines et les clés.
Question
Réaliser le passage au modèle relationnel, en faisant apparaître les clés primaires, candidates et étrangères.
Solution
Marque(#Nom:string)
Véhicule(#NumImmat:string, Couleur:string, Marque=>Marque) avec Marque NOT NULL
Moteur(#NumSerie:string, NumImmat=>Véhicule, Puissance:integer, Marque=>Marque) avec NumImmat KEY et Marque NOT NULL
Pneu(#NumSerie:string, Position:string(2), Diamètre:integer, Largeur:integer, Marque=>Marque, NumImmat=>Véhicule) avvec Marque NOT NULL et NumImmat NOT NULL
Attention :
Moteur.NumImmat
est une clé, car l'association Moteur-Véhicule est de cardinalité 1:1.
Complément :
Si l'on fait l'hypothèse qu'il peut y avoir plusieurs pneus du côté d'un essieu (comme sur un camion), alors Position n'est pas une clé locale, il peut exister plusieurs fois un pneu D1 sur un véhicule par exemple.
En revanche si l'on fait l'hypothèse inverse (comme sur une voiture), alors Position est une clé locale, ce que l'on exprime par : (NumImmat,Position) KEY
Question
Dessiner les tableaux correspondant aux relations du modèle. Instancier au minimum deux véhicules et quatre marques.
Question
Donner quatre exemples d'enregistrements qui seront refusés - étant données les données déjà insérées - pour quatre raisons différentes :
contrainte de clé sur une clé primaire
contrainte de clé sur une clé candidate
contrainte d'intégrité référentielle
contrainte de non nullité