Des voitures et des hommes I
Question
A partir de ce modèle conceptuel établissez un modèle logique en relationnel-objet.
On utilisera des tables d'objets et les OID pour effectuer les références (en revanche, on n'utilisera pas le modèle imbriqué).
Solution
Type Personne : <
nom:string,
ddn:date,
=age():entier
>
tPersonne de Personne (#nom)
Type Conducteur : <
refPersonne =>o Personne,
ddn:date,
typePermis:{A,B,E},
datePermis:date
>
tConducteur de Conducteur (#nom) avec refPersonne NOT NULL
Type Voiture : <
type:string,
marque:string,
nbPortes:integer,
puissance:integer,
refPropriétaire =>o tPersonne,
>
tVoiture de Voiture (#type, #marque)
tConduit (voiture =>o tVoiture, conducteur =>o tConducteur)
Méthode :
Un héritage par la classe mère empêchera de spécialiser simplement l'association conduit aux conducteurs ;
Un héritage par les classes filles empêchera de généraliser simplement l'association possède aux personnes non conducteurs et aux conducteurs ;
on adopte un héritage par référence.
Attention :
En implémentant l'héritage par référence avec une référence à un OID on perd ici la possibilité de contrôler la cardinalité 1..1 entre conducteur et personne (ici plusieurs conducteurs peuvent correspondre à une personne).
On pourra préférer l'usage d'une clé étrangère relationnelle pour éviter cela.