• 8 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 13/11/2023

Transformez vos relations d’héritage

Le modèle relationnel n’a pas été pensé pour représenter des relations d’héritage. Il est certes possible de les modéliser, mais cela nécessitera un peu de réflexion de votre part.

Il y a  trois manières différentes de traduire une relation d’héritage :

  • L’héritage par référence ;

  • L’héritage par classe mère ;

  • L’héritage par classes filles.

Chacune de ces trois méthodes possède ses avantages et inconvénients, que nous allons détailler ici.

La méthode la plus fréquente est la transformation de l’héritage par référence, car elle est bien adaptée à la majeure partie des cas de figure.

Transformez votre héritage par référence

Avec cette méthode, il vous faut créer une table pour la classe mère, et une table par classe fille. Des clés étrangères dans les tables des classes filles permettront de référencer la table de la classe mère.

La clé primaire de chaque table fille doit être la même clé primaire que la table mère. Chacune des clés primaires des tables filles est donc également une clé étrangère qui référence la table mère.

C’est à-dire ?

Dans notre cas, la clé primaire deoeuvre est(titre, societe_prod). Ces deux attributs devront donc être ajoutés aux tables filles (telefilmlong_metrage,serie_web,   serie_tvetserie), et ils seront à la fois clé étrangère versoeuvre, et à la fois clé primaire de chaque table fille :

Cas de l’héritage par référence
Cas de l’héritage par référence

On pourrait aussi considérer aussi que saison fait partie de la clé primaire deserie , mais pour ne pas allonger le cours, je ne traiterai pas ce cas ici. ;)

Transformez votre héritage par la classe mère

Avec cette méthode, il n’y a qu’une seule table : celle qui correspond à la classe mère.

Elle nécessite donc de regrouper toutes les informations des classes filles dans cette unique table. Tous les attributs des classes filles seront donc réintégrés à la classe mère. En plus, un attribut supplémentaire sera ajouté (appelé attribut de discrimination), qui indique pour chaque ligne à quelle classe fille cette ligne correspond.

En reprenant votre UML, vous verrez que parmi toutes les classes filles de oeuvre , il n’y a qu’un seul attribut : saison . Vous allez donc l’ajouter à la table oeuvre. Remarquez que cet attribut aura la valeur NULL lorsque l’œuvre en question ne sera pas une série.

Aussi, il vous faut ajouter l’attribut de discrimination qui permet de savoir si une œuvre est un téléfilm, un long-métrage, etc. Appelez cet attribut type_de_tournage:

La table
La table « oeuvre » avec l’attribut de discrimination « type_de_tournage »

Transformez votre héritage par la classe fille

Avec cette méthode, la classe mère ne donne pas lieu à une table. À l’inverse, chaque classe fille est traduite par une table, et chacune de ces tables doit alors reprendre les attributs de la classe mère.

De plus, la clé primaire de chaque table fille doit être la clé primaire de la classe mère. Dans votre cas, chaque table fille aurait donc eu comme clé primaire(titre, societe_prod):

Héritage par classes filles : les classes mères
Héritage par classes filles : les classes mères « Oeuvre » et « Serie » ne sont pas traduites en tables

Autres alternatives

Le modèle relationnel n’ayant pas été conçu pour gérer efficacement l’héritage, il a été créé une amélioration du modèle relationnel : le modèle objet-relationnel. Il reprend les concepts du modèle relationnel, mais y ajoute quelques notions empruntées à l’orienté objet (qui se modélise par le diagramme de classes UML), comme l’héritage. 

À vous de jouer

Maintenant que vous avez sous la main toutes les règles de traduction de l’UML vers le relationnel, je vous laisse traduire entièrement votre diagramme UML en modèle relationnel !

Voici la réponse :

Réponse à l'exercice
Réponse à l'exercice

En résumé

Une relation d'héritage peut être traduite de 3 manières différentes :

  • par référence ;

  • par classe mère ;

  • par classes filles.

Bravo, vous savez maintenant traduire entièrement n’importe quel diagramme UML en un schéma relationnel. Mais au fait, est-ce que votre modélisation minimise la redondance ? C’est ce que nous allons voir dans la dernière partie.  

Exemple de certificat de réussite
Exemple de certificat de réussite