Des voitures et des hommes I

[15 minutes]

Soit le diagramme de classe UML suivant :

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

1
Type Personne : <
2
  nom:string,
3
  ddn:date,
4
  =age():entier
5
>
6
tPersonne de Personne (#nom)
7
8
Type Conducteur : <
9
  refPersonne =>o Personne,
10
  ddn:date,
11
  typePermis:{A,B,E},
12
  datePermis:date
13
>
14
tConducteur de Conducteur (#nom) avec refPersonne NOT NULL
15
16
Type Voiture : <
17
  type:string,
18
  marque:string,
19
  nbPortes:integer,
20
  puissance:integer,
21
  refPropriétaire =>o tPersonne,
22
>
23
tVoiture de Voiture (#type, #marque)
24
25
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.

Cas simples

Cas problématiques

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.