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

1
Marque(#Nom:string)
2
Véhicule(#NumImmat:string, Couleur:string, Marque=>Marque) avec Marque NOT NULL
3
Moteur(#NumSerie:string, NumImmat=>Véhicule, Puissance:integer, Marque=>Marque) avec NumImmat KEY et Marque NOT NULL
4
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é