Le monde du SQL

Chapitre 4 : Modèle logique

Learning by Doing.

Comment transformer un modèle entité-association en modèle logique ?

 

  • Chaque entité devient une table

  • Les associations one-to-many implique la création d'un attribut supplémentaire pour la clé étrangère dans une des tables associées

  • Une association many-to-manu nécessite la création d'une table intermédiaire pour y stocker les clefs primaires des deux tables associées

  • Les associations ayant des attributs deviennent des tables

Service de location de voitures
ER digram location de voiture
Location Voiture Logical Model
Podcast
ER diagram podcast 6
Logical model podcast

Pour commencer, chaque entité devient une table: utilisateur, podcast, épisode, commentaire. L'association "propose" entre l'utilisateur et le podcast est une relation one-to-many, le lient est donc effectué via une clé primaire. Un utilisateur peut créer plusieurs podcasts, mais il est impossible de stocker la liste dans un attribut. Par contre, chaque podcast est créé par un utilisateur, il est donc possible de créer un attribut pour y stocker l'identifiant (clé primaire) de l'utilisateur qui a créé le podcast. Cet attribut (email créateur) est une clé étrangère ou foreign key (FK). L'association "s'abonne" est une association many-to-many. Une table intermédiaire doit être créée pour l'implémenter. Les identifiants du podcast et de l’utilisateur y seront stockés pour savoir qui est abonné à quel podcast. L'association entre podcast et épisode est une association one-to-many. Chaque épisode est associé à un podcast, nous allons créer un attribut dans la table "épisode" pour connaître à quel podcast il appartient. Un Utilisateur peut commenter les épisodes et l'association many-to-many a déjà été décomposée avec une entité supplémentaire. Il suffit donc d'ajouter les identifiants de l'utilisateur et de l'épisode dans le commentaire pour savoir qui a laissé un commentaire et pour quel épisode. La réponse au commentaire est modélisée par une table supplémentaire pour éviter de garder un attribut vide si la majorité des commentaires ne sont pas des réponses et n'ont pas de commentaires "parent" associés.

Covoiturage
ERD covoiturage
Logical covoiturage

Chaque entité devient une table. Toutes les relations sont de type « one-to-many » mais l'association "commenter" contient des attributs et doit donc devenir une table que nous appelons "Evaluation". Le cas de la table "Evaluation" est un peu particulier. Même si dans notre modèle entité-association le commentaire associe l'utilisateur et la réservation, la réservation contient déjà l'identifiant du voyageur et de la course. An associant l'évaluation à une réservation, nous avons connaissance du voyageur et de la course qui est évaluée. Il n'est pas nécessaire d'ajouter l'identification de l'utilisateur directement dans la table "evaluation" car cela fera un doublon d’information.

Notez qu'il est possible de générer le modèle logique à partir du modèle entité-association depuis l'application ERDPlus. Pour cela, il faut définir un attribut unique pour chaque entité avant de procéder à la transformation afin que le logiciel puisse savoir quel attribut doit devenir une clé primaire. Pour créer le modèle ensuite, cliquez sur les 3 points à côté du nom du modèle à transformer (ER Diagram) dans la liste et choisissez "Convert to Relational Schema". Choisissez un nom. Le nouveau document va apparaitre dans la liste. Notez que la transformation n'est pas toujours parfaite et peut nécessiter des corrections.

Capture d’écran 2022-10-29 à 10.26.26.png