Modélisation II :

Traduction d’un MCD (Modèle E/A) en MLD (Modèle relationnel)

2025-11-24

Introduction

Entre modèle EA et modèle relationnel

Dans le modèle conceptuel des données (modèle EA)

  • Plusieurs types de briques de bases : Entités (noms) et Associations (verbes)
  • Un formalisme accessible (en principe) aux usagers du système d’information

Dans le modèle logique des données relationnel (MRD)

  • Une seule brique de base : les tables

Formalisme du Modèle Relationnel des Données

Objectifs

  • Une technique de traduction du formalisme EA vers le formalisme relationnel.

  • Visualisation des contraintes référentielles via les pattes de corbeaux.

  • Un formalisme graphique très proche de la description physique en SQL.

  • Un formalisme graphique utilisé pour documenter les bases de données relationnelles

Origines

  • Créé par Gordon Everest (fin des années 1970)

  • Normalisé par Finkelstein et Martin

Diagrammes

Deux briques de base

Les modèles relationnelles des données (MRD) sont formés :

  • de tables,
  • de liens entre tables.

Les liens

  • Représentent des associations binaires un-un, ou un-vers-plusieurs

  • Les cardinalités sont visualisées par les extrémités des liens

Les cardinalités

Symbole Interprétation
Zéro ou un
Exactement un
Zéro ou plus (pas de borne supérieure)
Un ou plus (pas de borne supérieure)

Interprétation des cardinalités du MRD

  • Association is-in : une valeur de l’attribut countrycode de COUNTRY (donc une instance de COUNTRY car c’est l’identifiant) peut être référencée 0 à plusieurs fois dans la table CITY.

  • Association is-capital : une valeur de l’attribut id de CITY (donc une instance de CITY) est référencée 0 à 1 fois dans la table COUNTRY.

Les liens dans un MRD

Avertissement

  • Un lien dans un MRD définit une contrainte d’intégrité référentielle entre deux tables.

  • Il ne peut pas représenter directement un association d’arité supérieure à 2.

  • Il ne porte pas d’attributs propres.

Traduction du MCD en MRD

Les entités

  • Entité forte du MCD \(\rightarrow\) table du MRD de même nom et de mêmes attributs
  • Entité faible du MCD \(\rightarrow\) table du MRD de même nom et de mêmes attributs
  • Entité spécialisée du MCD \(\rightarrow\) table du MRD de même nom et de mêmes attributs
  • Les identifiants des entités deviennent les identifiants (clés primaires) des tables.
  • On décompose les identifiants concaténés des entités faibles en autant d’attributs qui forment ensemble la clé primaire de la table créée.

Exemple du MCD World

Les entités COUNTRY, CITY et LANGUAGE sont traduits en 3 tables:

  • COUNTRY d’identifiant countrycode,
  • CITY d’identifiant id,
  • LANGAGE d’identifiant name.

Associations binaires 1 à 1, 1 à plusieurs, plusieurs à plusieurs

Définition

On dit qu’une association binaire du MCD est de type \(a\) à \(b\) si la cardinalité maximale de l’association est \(a\) pour une entité, \(b\) pour l’autre.

Exemples sur le MCD World

  • is-capital est une association \(1\) à \(1\).
  • is-in est une association \(1\) à plusieurs.
  • is-spoken-in est une association plusieurs à plusieurs.

Traduction des associations binaires 1 à 1 du MCD

Soit \(A\) une association 1 à 1 entre deux \(E_1\) et \(E_2\) telle que le taux de participation des instances de \(E_1\) à l’association \(A\) est plus grand que celui des instances de \(E_2\).

  • Traduction en tables de \(E_1\) et \(E_2\).
  • Ajout d’un attribut dans \(E_1\) (une clé étrangère) qui référence l’identifiant de \(E_2\) (la clé primaire de \(E_2\)).
  • Ajout des attributs de \(A\) dans \(E_1\).
  • Création d’un lien entre les deux tables.
  • On fait figurer du coté de la clé étrangère les cardinalités de \(A\) qui dans le modèle E/A, étaient du côté l’entité référencée.

Choix entre \(E_1\) et \(E_2\)

  • Pour les instances de \(E_1\) qui ne participent pas à l’association, les âttributs ajoutés par traduction de \(A\) seront NULL.
  • On choisit \(E_1\) plutôt que \(E_2\) pour minimiser le nombre de valeur NULL. Mais choisir \(E_2\) plutôt que \(E_1\) est possible.

Exemple de la relation is-capital de World

Important

La cardinalité maximale 1 du MRD sur la clé étrangère capital de COUNTRY se traduira en SQL par une contrainte UNIQUE sur capital.

Traduction des associations binaires 1 à plusieurs du MCD

Soit \(A\) une association 1 à plusieurs entre deux \(E_1\) et \(E_2\) (plusieurs du côté de \(E_2\)) :

  • Traduction en tables de \(E_1\) et \(E_2\).
  • Ajout d’un attribut dans \(E_1\) (une clé étrangère) qui référence l’identifiant de \(E_2\) (la clé primaire de \(E_2\)).
  • Ajout des attributs de \(A\) dans \(E_1\).
  • Création d’un lien entre les deux tables.
  • On fait figurer du coté de la clé étrangère les cardinalités de \(A\) qui dans le modèle E/A, étaient du côté l’entité référencée.

Exemple de la relation is-in de World

Important

La cardinalité minimale 1 du côté de CITY dans le MCD n’est pas traduite dans le MRD mais elle se traduira en SQL par une contrainte NOT NULL sur la clé étrangère countrycode de la table CITY.

Traduction des associations faibles et des spécialisations

  • Les spécialisations et les associations faibles du modèle E/A sont des associations binaires un à plusieurs qui sont traduites selon le principe précédent.

  • Pour les spécialisations, comme l’entité spécialisée n’avait pas d’identifiant, l’attribut introduit par traduction de l’association de spécialisation devient la clé primaire.

  • Pour les entités faibles, l’assocation faible avec l’entité forte de référence est déjà traduite par décomposition de l’identifiant concaténé en deux attributs qui forment la clé primaire de la table traduisant l’entité faible.

Exemple de traduction d’une association faible

Exemple de traduction d’une spécialisation

Traduction des associations binaires plusieurs à plusieurs

Soit \(A\) une association plusieurs à plusieurs entre deux entités \(E_1\) et \(E_2\) :

  • Traduction en tables de \(E_1\) et \(E_2\).
  • Traduction de \(A\) en une entité faible intermédiaire dont l’identifiant est le couple des identifiants de \(E_1\) et \(E_2\).
  • Création de deux associations binaires faibles \(A_1\) et \(A_2\) respectivement entre \(A\) et \(E_1\) et entre \(A\) et \(E_2\).
  • Traduction en tables de cette décomposition.

Remarque

Du côté de l’entité faible, la cardinalité d’une association faible est toujours 1:1 donc les associations faibles sont de type un à plusieurs ou un à un.

Exemple de la relation is-spoken-in de World

MRD world

MRD world simplifié

Simplification

  • On peut choisir de supprimer la table LANGUAGE car elle n’a pas d’autre attribut que l’identifiant.
  • Mais cela supprime une contrainte d’intégrité référentielle, c.a.d. la contrainte d’appartenance de l’attribut is-spohen-in.language à un ensemble déterminé de valeurs : les valeurs stockées dans language.name.

Traduction d’une association \(n\)-aire (\(n>2\))

Traduction d’une association \(n\)-aire

Soient \(n>2\), \(E_1\), \(\dots\), \(E_n\) des entités et \(A\) une association \(n\)-aire entre ces entités.

  • Décomposition de l’association \(A\) en une entité faible et \(n\) associations binaires de type 1 à plusieurs ou 1 à 1.
  • Traduction en tables de cette décomposition.

Exemple de l’association flight

MCD avant décomposition

ER AIRPORT AIRPORT flight flight AIRPORT--flight orig 0:n PLANE PLANE AIRLINE AIRLINE flight--AIRPORT dest 0:n flight--PLANE 0:n flight--AIRLINE 0:n

MCD flight décomposé

ER AIRPORT AIRPORT orig orig AIRPORT--orig 0:n dest dest AIRPORT--dest 0:n PLANE PLANE AIRLINE AIRLINE FLIGHT FLIGHT operates operates FLIGHT--operates 1:1 uses uses FLIGHT--uses 1:1 orig--FLIGHT 1:1 dest--FLIGHT 1:1 operates--AIRLINE 0:n uses--PLANE 0:n

MRD flight

Du MRD à la Description Physique des Données (SQL)

Une traduction immédiate

  • Chaque table du MRD correspond à une table SQL.

  • Les identifiants sont définis comme clés primaires.

  • Les liens du MRD se traduisent en contraintes d’intégrité référentielle.

  • Les contraintes du MCD se traduisent autant que possible en contraintes SQL selon les possibilités du SGBD choisi.

Contraintes UNIQUE traduites des cardinalités du MRD

Important

Une cardinalité maximale 1 du MRD sur une clé étrangère se traduit en SQL par une contrainte UNIQUE sur cette clé étrangère.

Exemple de l’association is-capital de World

On ajoute une contrainte UNIQUE sur la clé étrangère capital de la table country.

Contraintes NOT NULL traduites des cardinalités du MCD

Important

Une cardinalité minimale 1 du MCD du côté de l’entité à laquelle on ajoute une clé étrangère n’est pas traduite dans le MRD mais elle se traduit en SQL par une contrainte NOT NULL sur la clé étrangère.

Exemple de l’association is-in de World

On ajoute une contrainte NOT NULL sur la clé étrangère countrycode de la table city.

Au delà des modèles EA et Relationnels

La modélisation : un exercice très général

En Informatique, la modélisation concerne aussi la conception des interfaces humains-machines, des sites WWW, des traitements divers, des entrepots de données, des lacs de données, ….

Chaque situation a suscité une méthode apropriée

Quelques exemples :

  • Modèles Relation-Objet (Object Relational Model ORM)
  • UML (Universal Modeling Language)

Fin

Traduction d’un MCD (Modèle E/A) en MLD (Modèle relationnel)