Partie 1 · Modéliser
Du MCD au schéma relationnel (MPD)
Le schéma relationnel, appelé volontiers MPD (modèle physique des données), est une représentation plus concrète : tables, clés primaires, clés étrangères et autres champs, écrits comme une liste.
MaTable(MaClefPrimaire, #UneClefEtrangere, UnChamp, …)- la ou les clés primaires sont soulignées (plusieurs champs possibles) ;
- les clés étrangères sont préfixées par
#(aucune, une ou plusieurs ; elles peuvent faire partie de la clé primaire) ; - une clé étrangère composée s'écrit
#(Champ1, Champ2).
Exemple du cours, la CIM « Ligne » devient bien une table :
Ecriture(EcritureNum, EcritureLib, PieceRef, …)
Ligne(#EcritureNum, #CompteId, Debit, Credit, Lettrage, …)
Compte(CompteId, CompteNum, CompteAuxNum, CompteLib, …)Remarque : la clé primaire de Ligne est composée de deux clés étrangères, comme annoncé (« clé primaire d'une association = clés des entités reliées »).
Vérifie que tu as compris
Ligne(#EcritureNum, #CompteId, Debit, Credit), que signifie le « # » ?Trois cas particuliers du cours
1. Entité dépendante. Une entité dont l'existence (ou l'identifiant) dépend d'une autre : un appartement n'existe que si l'immeuble existe ; un numéro de facture se définit par rapport à un compte auxiliaire. Sa clé primaire contient la clé de l'entité dont elle dépend :
Facture(#IdCompte, NumFacture, DateEmission, …)
Compte(IdCompte, NumCompte, NumCompteAux, …)2. Pseudo-entité. Une association de type CIM qui se comporte comme une entité : on veut lui ajouter d'autres clés étrangères (CIF). Exemple du cours : réserver une nuit d'hôtel n'a de sens que par rapport à l'hôtel et à la date.
Hôtel(NumHotel, NomHotel, …)
Client(NumClient, MailClient, …)
Réservation(#N°Hôtel, #Date, #N°Client, NbNuits)Dans l'énoncé du cours, la table Date n'est pas créée en pratique : la date n'est pas une vraie clé étrangère.
3. Réflexivité. Une entité reliée à elle-même pour modéliser une hiérarchie ou un arbre (arbre généalogique). On doit préciser le rôle de chaque patte (parent / enfant). Avec des cardinalités 2..2 côté enfant, « Filiation » est une CIF : pas de table, mais deux clés étrangères dans la même table :
Personne(NumPersonne, #Pere, #Mere, Prenom, Nom, …)Père et mère sont chacun une clé étrangère qui pointe vers une autre ligne de Personne.
Vérifie que tu as compris
Vérifie que tu as compris