Aller au contenu

Calcul d'un MPD⚓︎

ou Du diagramme de classe au modèle physique

Les 5 règles⚓︎

Règle 1

🔹 Toute classe devient une relation ayant pour clé primaire son identifiant.
🔹 Chaque propriété se transforme en attribut.

regle 1

CLIENT (code_client, nom, prenom, adresse, code_postal, ville, téléphone)

Règle 2

🔹 Toute relation de type hiérarchique (de type [1, *]) se traduit par une clé étrangère.
🔹 La clé primaire correspondant à l’entité fils (côté 1 ) « migre » comme clé étrangère correspondant à l’entité père (côté *)

regle 2

CLIENT (code_client, nom, prenom, adresse, code_postal, ville, téléphone)
COMMANDE (num_com, date, etat, montant_total, #code_client)

Règle 3

🔹 Toute relation non hiérarchique (de type [ * , * ] ou de dimension > 2) devient une relation.
🔹 La clé primaire est formé par la concaténation (juxtaposition) de l’ensemble des identifiants des entités reliées.
🔹 Toutes les propriétés éventuelles deviennent des attributs qui ne peuvent pas faire partie de la clé.

regle 3

CLIENT (code_client, nom, prenom, adresse, code_postal, ville, téléphone)
COMMANDE (num_com, date, etat, montant_total, #code_client)
ARTICLE (ref_article, designation, prix_unitaire)
CONCERNE (#num_com, #ref_article)

Règle 4

🔹 C'est un cas particulier de la règle 3 sur les classes d'association.
🔹 On applique la règle 3 en créant une table qui contiendra également l’attribut de la classe d’association.
🔹 Mais l'attribut ne sera pas inclus dans la clé primaire.

regle 4

CLIENT (code_client, nom, prenom, adresse, code_postal, ville, téléphone)
COMMANDE (num_com, date, etat, montant_total, #code_client)
ARTICLE (ref_article, designation, prix_unitaire)
CONCERNE (#num_com, #ref_article, quantite)

Règle 5

C'est un cas particulier de la règle 2 et de la règle 3 sur les associations de type réflexive.

Les associations réfexives hiérarchiques regle 5_1

On peut lire l'association ainsi : Un salarié a pour chef \(0\) ou un seul salarié. un salarié est chef de \(0\) ou \(n\) salarié(s).

1️⃣ On applique la règle 1, donc on créer la table SALARIE contenant les propriétés de la classe et comme clé primaire l'identifiant, ici matricule.

2️⃣ Puis on applique la règle 2 des associations de type hiérarchique. On fait "descendre" la clé primaire de la table "fils" vers la table "père". 😨 On va donc retrouver un deuxième matricule dans la table. Il nous faut alors préciser quelle role tient cet clé etrangère, ici c'est le matricule du chef.

SALARIE(matricule, nom, prenom, #matriculeChef)

clé primaire : matricule
clé étrangère : matriculeChef EN REFERENCE à matricule de SALARIE

Les associations réfexives hiérarchiques regle 5_2

On peut lire l'association ainsi : Une pièce entre dans la composition de 0 à plusieurs autres pièces. Une pièce peut être composée de plusieurs autres pièces. Une pièce entre dans la composition d'une autre un certain nombre de fois.

Exemple : La pièce "voiture" est composée de 4 pièces "roue". La pièce "roue" est elle-même composée d'une pièce "pneu" et d'une autre "jante".

Une pièce entrant dans la composition d'une autre est appelée composant. Une pièce composée d'autres pièces est appelée composé. Une roue est à la fois composant (de voiture) et un composé (de pneu et jante).

🚨 On applique la règle de 3 sur les associations non hiérarchiques. Il faut créer une table dont la clé primaire composée des identifiants composant la relation en spécifiant les rôles de chaque identifiant.

PIECE (reference, libelle)
COMPOSITION(#reference_compose, #reference_composant, nombre)

Gestion de l'héritage⚓︎

héritage emploi

Pour le concept de l'héritage, il n'y a pas une seule solution. La solution d'implémentation va dépendre des besoins prioritaires.

🔹 Cohérence
🔹 Evolutivité
🔹 Volume des données
🔹 Optimisation des traitements pour retrouver une donnée
🔹 Mise à jours + Ajout

heritage tableau

Solution 1 : Duplication des attributs dans les sous-types
EMPLOYE (matricule, nom, prénom, adresse, cp, ville, #serv_code)
CONTRACTUEL (matricule, nom, prénom, adresse, cp, ville, num_contrat)
TITULAIRE (matricule, nom, prénom, adresse, cp, ville, date_embauche)
SERVICE (serv_code, serv_nom)

Solution 2 : conservation de l’entité générique
EMPLOYE (matricule, nom, prénom, adresse, cp, ville, num_contrat, date_embauche, #serv_code)
SERVICE (serv-code, serv_nom)

Solution 3 : conservation des entités spécifiques
EMPLOYE_TITULAIRE (matricule, nom, prénom, adresse, cp, ville, date_embauche, #serv_code)
EMPLOYE_CONTRACTUEL (matricule, nom, prénom, adresse, cp, ville, num_contrat, #serv_code)
SERVICE (serv-code, serv_nom)

Solution 4 : conservation de toutes les entités
EMPLOYE (matricule, nom, prénom, adresse, cp, ville, #serv_code)
EMPLOYE_CONTRACTUEL (matricule, num_contrat)
EMPLOYE_TITULIARE (matricule, date_embauche)
SERVICE (serv-code, serv_nom)