1

Chapitre 3 :
Transformer un modèle conceptuel en modèle relationnel

Gérer les entités et les relations : Support de cours

Support de cours : Gérer les entités et les relations

Comme nous l'avons vu, la transformation du schéma conceptuel en schéma relationnel va se faire en trois étapes :

  1. Transformer les entités en relation
  2. Transformer les associations "1 à plusieurs" en clé étrangère
  3. Transformer les associations "plusieurs à plusieurs" en relation 

I Transformer les entités en relation

La première chose à faire est de transformer chaque entité en relation en respectant le formalisme suivant

Nom de l'entité (liste des propriétés de l'entité séparées par des virgules)

Clé primaire : nom de la propriété identifiant

Dans l'exemple  ci-dessous, l'entité Catégorie à 3 propriétés : id_categorie, nom_categorie, et pourcentage_reduction.

Cette entité est transformé en relation :

Categorie(id_categorie, nom_categorie, pourcentage_reduction)
Clé primaire : id_catégorie

Il est souvent nécessaire de modifier les noms des attributs pour qu’ils respectent les règles suivantes :

  • ne comporte aucun caractère spécial (accent, espace...)
  • ajout d’un suffixe ou un préfixe correspondant à leur relation.
  • éviter les mots clés SQL.
  • Éviter les abréviations

II Transformer les associations 1 à plusieurs

Une association 1 à plusieurs est une association dont au moins 1 des maximums des cardinalités qui l’entourent est un 1. Ce type d’association relie une entité dite parent (la cardinalité maximum est 1) et une entité dite enfant (cardinalité maximum est n).

L’identifiant de l’entité enfant est rajouté dans la relation parent comme clé étrangère

Dans l'exemple ci-dessous, nous allons traduire le schéma suivant :

On commence par transformer en relation les deux entités. Puis on analyse l'association "Appartenir". Si on lit les cardinalités on obtient :

  • Un client appartient à au minimum 0 catégorie et au maximum 1 seule.
  • A une catégorie appartient au minimum 0 client et au maximum plusieurs.

"Appartenir" est une association "1 à plusieurs", car le maximum de la cardinalité entre "Appartenir" et "Client" est égale à 1. L'entité parent est donc "Client" et l'entité enfant est "Catégorie". Il faut prendre l'identifiant de "Catégorie" et le placer dans la relation "Client" comme dans le schéma ci-dessous

Categorie(id_categorie, nom_categorie, pourcentage_reduction)
Clé primaire : id_catégorie

Client(id_client, nom_client, prenom_client, id_categorie)
Clé primaire : id_client, 
clé étrangère : id_categorie en référence à id_categorie de la table categorie

Souvent les étudiants ont du mal à mémoriser quel est l'identifiant que l'on place comme clé étrangère. Une façon de vérifier et de s'assurer que le nouveau champ est bien en dépendance fonctionnelle avec l'identifiant. Dans notre exemple, si on place l'id_catégorie dans la relation "Client" cela signifie que pour un client on a 1 seule catégorie ce qui semble logique et coller à la lecture des cardinalités. Par contre si on place l'id_client dans la relation "Catégorie" on a, pour chaque catégorie, un seul client. Cette solution ne correspond pas à la lecture des cardinalités.

III Transformer les types relations plusieurs à plusieurs

Une association "plusieurs à plusieurs" est une association dont tous les maximum des cardinalités qui l’entourent est n.

Les associations "plusieurs à plusieurs" sont transformées en relation dont la clé primaire est la concaténation de tous les attributs identifiants des entités reliées. Chaque attribut identifiant devient aussi une clé étrangère dans cette nouvelle relation.

Dans l'exemple suivant, nous allons transformer ce schéma conceptuel en schéma relationnel

On commence par transformer les entités "Joueur" et "Match" en relation.

Ensuite on analyse "Participer". Si on lit les cardinalités on obtient :

  • Un joueur Participe au minimum à 1 match et au maximum à plusieurs (N)
  • A un match Participe au minimum 22 joueurs et au maximum plusieurs (N).

Cette association est une association plusieurs à plusieurs car les deux cardinalités qui l'entourent ont comme maximum "N". Il faut alors transformer Participer en relation avec comme clé primaire le couple jo_id et ma_id. Ces deux champs sont aussi des clés étrangères.

Joueur( jo_id, jo_nom, jo_prenom)
Clé primaire : jo_id

Match(ma_id, ma_date, ma_lieu
Clé primaire :ma_id

Participer (jo_id, ma_id, numero_maillot)
Clé primaire : jo_id ET ma_id
Clé étrangère :  jo_id en référence à jo_id de la table Joueur
                          ma_id en référence à ma_id de la table Match



Cours validé