TD2 - MLD/MPD - Correction


Mise en oeuvre des Modèles Logiques et Physique de Données


(1) On révise un peu...

Dans la pratique, la relation est en fait la table, un T-uple est une ligne (ou enregistrement), et les attributs sont les colonnes.

Cette table est décrite par :
NEWSLETTER ( id_newsletter , Sujet, DateEnvoie, Contenu, #id_rubrique)

Chaque enregistrement doit être identifié de manière unique (voir la notion d'identifiant abordée dans le Cours et le TD précédent). L'attribut qui permet d'identifier de façon unique chaque ligne est appelée la Clé Primaire . Elle peut être composée, c'est à dire comprendre plusieurs attributs. Ici, il s'agit de l'attribut id_newsletter .

La table Newsletter comprend un attribut provenant de la table RUBRIQUE , l'attribut id_rubrique . Cet attribut est appelé Clé Etrangère .

Dans le formalisme, la clé primaire est soulignée, et la clé étrangère est précédée du signe #. D'où l'écriture définitive :

MATABLE ( Cle_Primaire , Colonne1, Colonne2, #Cle_Etrangere)

Dans notre exemple :
Rubrique ( id_rubrique , Nom)
Newsletter ( id_newsletter , Sujet, DateEnvoie, Contenu, #id_rubrique)

Ici, id_rubrique est la Clé Primaire de la table RUBRIQUE , et est une Clé Etrangère dans la table NEWSLETTER .

(2) Entité du MCD -> MLD

Toute entité du MCD devient une relation du MLDR, et donc une table de la Base de Donnée. Chaque propriété de l'entité devient un attribut de cette relation, et dont une colonne de la table correspondante. L'identifiant de l'entité devient la Clé Primaire de la relation (elle est donc soulignée), et donc la Clé Primaire de la table correspondante.

<==> CLIENT ( id_client , Nom_Client, Tel_client)

(3) Transformation des relations MCD -> MLD -> MPD

Donnez les transformations MCD vers MLD puis vers MPD pour les relations suivantes :

1. Relation binaire aux cardinalités (X,n) - (X,n), X=0 ou X=1

Il y a création d'une table supplémentaire ayant comme Clé Primaire une clé composée des identifiants des 2 entités. On dit que la Clé Primaire de la nouvelle table est la concaténation des Clés Primaires des deux autres tables.
Si la relation est porteuse de donnée, celles ci deviennent des attributs pour la nouvelle table.

S.I. :
Une commande est composée de 1 ou n produits distincts en certaine quantité. Un produit est présent dans 0 ou n commandes en certaine quantité.

MCD :

MLDR :
COMMANDE ( id_Commande , Date_commande)
PRODUIT ( id_Produit , libelle)
A ( id_Commande, id_Produit , qantité) //A pourrait être nommée COMPOSE

MPD :

2. Relation n-aire (quelles que soient les cardinalités).

Il y a création d'une table supplémentaire ayant comme Clé Primaire la concaténation des identifiants des entités participant à la relation.
Si la relation est porteuse de donnée, celles ci deviennent des attributs pour la nouvelle table.

S.I. :
Un étudiant parle une ou plusieurs langues avec un niveau. Chaque langue est donc parlée par 0 ou n étudiants avec un niveau. Pour chaque niveau, il y a 0 ou plusieurs étudiants qui parlent une langue.

MCD :
MLDR :
ETUDIANT ( id_Etudiant , Nom_Etudiant)
NIVEAU ( id_Niveau , Nom_Niveau)
LANGUE ( id_Langue , Nom_Langue)
PARLE ( id_Etudiant, id_Niveau, id_Langue)

MPD :

3. Association Réflexive de cardinalité (X,1) - (X,n), avec X=0 ou X=1.

Premier cas : cardinalité (X,1) - (X,n), avec X=0 ou X=1.

La Clé Primaire de l'entité se dédouble et devient une Clé Etrangère dans la relation ou nouvelle table. Exactement comme si l'entité se dédoublait et était reliée par une relation binaire (X,1) - (X,n) (Cf règle 2).

S.I. :
Prenons l'exemple d'une société organisée de manière pyramidale : chaque employé a 0 ou 1 supérieur hiérarchique direct. Simultanément, chaque employé est le supérieur hiérarchique direct de 0 ou plusieurs employés.

MCD :

MLDR :
EMPLOYE ( id_Employe , Nom_Employe, #id_Sup_Hierarchique)

#id_Sup_Hierarchique est l'identifiant (id_Employe) du supérieur hiérarchique direct de l'employé considéré.

MPD :

4. Association Réflexive de cardinalité (X,n) - (X,n), avec X=0 ou X=1.

De même, tout se passe exactement comme si l'entité se dédoublait et était reliée par une relation binaire (X,n) - (X,n) (Cf règle 3). Il y a donc création d'une nouvelle table.

S.I. :
Prenons cette fois l'exemple d'une organisation de type familiale : chaque personne a 0 ou n descendants directs (enfants), et a aussi 0 ou n descendants directs (enfants).

MCD :

MLDR :
PERSONNE ( id_Personne , Nom_Personne)
PARENTE ( #id_Parent, #id_Enfant )


#id_Parent est l'identifiant (id_Personne) d'un ascendant direct de la personne. #id_Enfant est l'identifiant (id_Personne) d'un descendant direct de la personne. La table PARENTE sera en fait l'ensemble des couples (parents-enfants) présent dans cette famille.

MPD :

5. Relation binaire aux cardinalités (0,1) - (1,1).

La Clé Primaire de la table à la cardinalité (0,1) devient une Clé Etrangère dans la table à la cardinalité (1,1) :

S.I. :
Dans ce centre de vacances, Chaque animateur encadre en solo 0 ou 1 groupe, chaque groupe étant encadré par un et un seul animateur.

MCD :

MLDR :
ANIMATEUR ( id_Animateur , Nom_Animateur)
GROUPE ( id_Groupe , Nom_Groupe, #id_animateur)

MPD :

(4) Transformation du MCD NEWSLETTER vers MLD et MPD.

1. Donnez le MLDR de l'exercice 5 du TD1.

MOTIVATION ( id_motivation, intitule)
ABONNE ( id_abonne, #id_motivation, nom, prenom, age, sexe, profession, rue, code_postal, ville, telephone, email)
S_INSCRIT ( #id_abonne, #id_rubrique, #id_motivation)
RUBRIQUE ( id_rubrique, nom_rubrique)
NEWSLETTER ( id_newsletters, #id_rubrique, sujet, date_envoi, contenu)

2. Donnez le MPD correspondant.

Le modèle physique de données, qui découle du modèle logique fourni, prend en compte la structure de la base de données au niveau technique. Voici ce que l'on peut dire du modèle physique correspondant :

a. Tables

Le modèle physique sera composé de cinq tables :

b. Clés primaires et étrangères

Clés primaires : Chaque table a une clé primaire (indiquée par id_*).

Clés étrangères : Les tables ABONNE, S_INSCRIT, et NEWSLETTER ont des relations de clés étrangères avec d'autres tables :

3. Types de données

Pour chaque attribut, des types de données devront être définis.

4. Contraintes d'intégrité

Les contraintes de clé étrangère seront imposées pour garantir l'intégrité référentielle entre les tables.

5. Indexation

Des index pourront être créés sur les colonnes fréquemment utilisées, comme id_abonne dans S_INSCRIT, pour améliorer les performances.

6. Optimisation

Selon le volume de données, des décisions devront être prises concernant la partition des tables, les types de stockage, et la gestion des performances.