Dans l’exercice précédent, nous avons expliqué que les noms des personnages n’étaient pas dupliqués : si le nom d’un personnage changeait, il n’y aurait qu’une seule ligne à modifier.
Cet exemple était toutefois un peu artificiel, car les noms des séries et des acteurs, eux, étaient dupliqués.
Pour ne dupliquer aucun nom, il nous faut davantage de tables et plusieurs jointures.
Nous avons des tables pour les personnages, les séries et les acteurs. Ces tables représentent des choses (que l’on appelle aussi des entités).
En plus de celles-ci, nous avons les tables de relation character_tv_show et character_actor, qui décrivent le lien entre deux entités.
C’est une façon souple de représenter les relations entre entités, car certains personnages apparaissent dans plusieurs séries et certains acteurs sont connus pour avoir incarné plusieurs personnages.
Pour obtenir le nom de chaque personnage avec le nom de sa série, nous pouvons écrire
SELECT character.name, tv_show.name
FROM character
INNER JOIN character_tv_show
ON character.id = character_tv_show.character_id
INNER JOIN tv_show
ON character_tv_show.tv_show_id = tv_show.id;
Pouvez-vous utiliser deux jointures pour associer le nom de chaque personnage à l’acteur qui l’incarne ? Sélectionnez les colonnes : character.name, actor.name