Aller au contenu
Modélisation avancée

Généralisation / spécialisation

La généralisation place dans une entité mère les attributs communs à plusieurs sous-types, qui ajoutent les leurs. Elle sert quand des objets partagent une identité mais diffèrent en partie.

  • héritage
  • ISA
  • sous-type
  • partition
  • exclusion
  • totalité

Syntaxe

Modèle
            ENTITE_MERE        (attributs communs)                 │        contrainte : X, T ou XT           ╱             ╲    SOUS_TYPE_1      SOUS_TYPE_2  (attributs propres) (attributs propres)

Exemple

Exemple concret
PERSONNE (num_personne, nom, prenom, email)              │  XT (partition)        ╱            ╲   SALARIE          PRESTATAIRE   salaire          taux_journalier   date_embauche    societePartition : toute personne est soit salariée, soitprestataire, jamais les deux et jamais aucun des deux.Les sous-types héritent de l'identifiant num_personne.

À retenir

  1. Les liens de spécialisation ne portent pas de cardinalités mais une contrainte : X (exclusion) au plus un sous-type, T (totalité) au moins un, XT (partition) exactement un.
  2. Sans contrainte notée, une occurrence peut appartenir à plusieurs sous-types ou à aucun.
  3. Les sous-types n'ont pas d'identifiant propre, ils héritent de celui de la mère ; ils peuvent en revanche participer à leurs propres associations (seul un SALARIE est affecté à un service).
  4. Au MLD, trois traductions existent : table unique avec colonne de type, table mère et tables filles, tables filles seules (fiche MLD « Généralisation → MLD »).
  5. Piège : spécialiser pour un seul attribut ou par habitude de la programmation objet. Si les sous-types n'ont ni attribut ni association propres, un attribut type_personne suffit.

Voir aussi