You are on page 1of 9

Plan

Elaboration dʼun
Modèle Logique de Données Relationnel 1. Problématique du MLD-R
(MLD-R) 2. Formalisme graphique de Merise
Bernard ESPINASSE
Professeur à Aix-Marseille Université (AMU) 3. Dérivation dʼun MLD-R à partir dʼun MCD en Entité-Relation
Ecole Polytechnique Universitaire de Marseille
4. Création de tables en langage SQL (clé primaires et
Novembre 2012
étrangères)

• Problématique du MLD 5. Dimensionnement dʼune BD Relationnelle (multiplicité
• Formalisme graphique de Merise moyenne des liens)
• Dérivation dʼun MLD-R à partir dʼun MCD en Entité-Relation
• Création de tables en langage SQL (clé primaires et étrangères)
• Dimensionnement dʼune BD Relationnelle

Bernard ESPINASSE – Elaboration dʼun MLD-R 1 Bernard ESPINASSE – Elaboration dʼun MLD-R 2

Problématique du MLD Dé marche dʼé laboration dʼun MLD Re lationne l
Modèle Conceptuel de Données (MCD) : ! MCD : Modèle Conceptuel de Données
- permet de modéliser la sémantique des informations dʼune façon ! MLD-R : Modèle Logique de Données Relationnel
compréhensible par lʼutilisateur de la future base de données
- utilise le formalisme (graphique) Entité-Relation MCD
NIVEAU CONCEPTUEL
- ne permet pas dʼimplémentation informatique de la base de En formalisme Entité-Relation
données dans un SGBD donné
Modèle Logique de Données (MLD) :
- permet de modéliser la structure selon laquelle les données seront MLD (Relationnel)
NIVEAU LOGIQUE
stockées dans la future base de données En formalisme « Merise »
- est adapté à une famille de SGBD : ici les SGBD relationnels (MLD
Relationnels ou MLD-R)
- utilise le formalisme graphique Merise
Création des tables de la base
- permet dʼimplémenter la base de données dans un SGBD donné de données en langage SQL

NIVEAU PHYSIQUE ! SGBD Relationnel

Bernard ESPINASSE – Elaboration dʼun MLD-R 3 Bernard ESPINASSE – Elaboration dʼun MLD-R 4

Adresse : autres attributs ! Matricule: clé primaire ! Nom_departement : clé étrangère vers table DEPARTEMENT Bernard ESPINASSE – Elaboration dʼun MLD-R 5 Bernard ESPINASSE – Elaboration dʼun MLD-R 6 Formalisme graphique “ Merise ” du MLD-R (3) Formalisme graphique “ Merise ” du MLD-R (4) Lien entre tables : clé primaire composée référentielle Lien entre tables : contraintes dʼintégrité référentielle réflexive TACHE Précéder TACHE Concerner PROJET N°ordre N°projet N°tache N°projet budget N°tache précédente durée Désignation Durée Schémas des tables : Schémas des tables : ! Table PROJET (N°projet. age. budget) ! N°projet : clé primaire ! Table TACHE (n°tache. n°projet : clé primaire composée ! N°projet : clé étrangère vers table PROJET Bernard ESPINASSE – Elaboration dʼun MLD-R 7 Bernard ESPINASSE – Elaboration dʼun MLD-R 8 . Nom. Effectif) : ! Nom_departement : clé primaire Attributs de la table EMPLOYE : ! Matricule : clé primaire ! Table EMPLOYE (Matricule. Adresse) ! Nom. Age. N°projet. durée) ! N°tache : clé primaire ! Table TACHE (N°ordre. Nom_departement. nom. n°tache_précédente. durée) ! N°tache_précédente: clé étrangère vers table TACHE ! N°ordre. adresse) ! Table DEPARTEMENT (Nom_departement. Age. désignation.Formalisme graphique “ Merise ” pour le MLD-R (1) Formalisme graphique “ Merise ” pour le MLD-R (2) Table Lien entre tables : contrainte dʼintégrité référentielle Table EMPLOYE (représentation graphique) : Table EMPLOYE (représentation graphique) : EMPLOYE DEPARTEMENT EMPLOYE Appartenir Nom_departement Matricule Matricule Effectif Nom_departement Nom Nom Age Age Adresse Adresse Schéma de la table EMPLOYE : Schémas des tables : EMPLOYE (Matricule.

N 0.1) MCD: MCD : EMPLOYE VOITURE DEPARTEMENT PERSONNE Matricule appartenir Posseder Nom_departement Nom Numero Nom Date dʼacquisition Marque 1. MCD -> MLD : dérivation des entités Re lation Règle : toute entité du MCD se dérive en une table du MLD Entité Table NIVEAU CONCEPTUEL MCD En formalisme Entité-Relation EMPLOYE EMPLOYE Ensemble de règles Matricule Matricule Nom Nom Age Age NIVEAU LOGIQUE MLD (Relationnel) Adresse Adresse En formalisme « Merise » la propriété identifiante de lʼentité devient la clé primaire de la table Création des tables de la base de données en langage SQL NIVEAU PHYSIQUE ! SGBD Relationnel Bernard ESPINASSE – Elaboration dʼun MLD-R 9 Bernard ESPINASSE – Elaboration dʼun MLD-R 10 MCD -> MLD : relations (*. Date_acquisition) . ! Table DEPARTEMENT (Nom_departement. Nom_departement.1 Type Adresse Adresse P o MLD : s EMPLOYE DEPARTEMENT Appartenir PERSONNE s VOITURE Matricule Nom_departement Effectif Nom Posseder e Numero Nom_departement d Nom Nom MLD : Prenom e Marque Age Adresse r Type Adresse Date d’acquisition Schémas relationnels : Schémas relationnels : ! PERSONNE (Nom. Effectif) : ! VOITURE (Numéro. Nom. Adresse) .N)-(0. ! Table EMPLOYE (Matricule. Age. Nom.1) MCD -> MLD : relations (*.N)-(1. Marque.1 1. Prenom. Adresse) Nom_departement : clé étrangère vers table DEPARTEMENT Bernard ESPINASSE – Elaboration dʼun MLD-R 11 Bernard ESPINASSE – Elaboration dʼun MLD-R 12 .Dérivation dʼun MLD-R à partir dʼun MCD en Entité. Type.N Effectif Prenom Age 0.

1)-(0.1 Type Adresse MLD (solution 1) : MLD : TIERS MAISON ENTREPRISE EDIFICE Correspondre N°tiers Est-un N°maison N°entreprise N°edifice N°entreprise N°edifice Adresse Type Type Adresse Schémas relationnels : Schémas relationnels : ! ENTREPRISE (N°entreprise.1 N°entreprise Type 0.1) MCD : MCD : EDIFICE MAISON ENTREPRISE TIERS Est-un Correspondre N°edifice N°maison N°tiers 1. Bernard ESPINASSE – Elaboration dʼun MLD-R 13 Bernard ESPINASSE – Elaboration dʼun MLD-R 14 MCD -> MLD : relations (0.1) pose le problème dʼaccepter des valeurs nulles sur lʼattribut migrant pouvant fixer le sens de migration (par exemple.1 Adresse 0.1 C 0.N) MCD : MCD : COMMANDE Porter ARTICLE ENTREPRISE TIERS Correspondre N°commande N°article N°tiers 1.N Qte-commandée 0. ! EDIFICE (N°edifice. Type) .1)-(1. Désignation. ! TIERS (N°tiers. Statut) .1) pose le problème dʼaccepter des valeurs nulles sur lʼattribut migrant pouvant fixer le sens de migration (par exemple la taille des clés). Adresse). Prix). N°édifice.1) MCD -> MLD : relations (0/1.1 Type Statut Prix o r MLD (solution 2) : r e MLD : ENTREPRISE TIERS COMMANDE PORTER ARTICLE s Correspondrep N°tiers N°commande N°commande N°article N°entreprise N°tiers Type Date N°article Désignation o Adresse Statut Qte-commandée Prix n d r Schémas relationnels : Schémas relationnels : e ! COMMANDE (N°commande. la taille des clés). Idem : la cardinalité (0.MCD -> MLD : relations (0. La cardinalité (0. ! TIERS (N°tiers. Qte_commandée) . Bernard ESPINASSE – Elaboration dʼun MLD-R 15 Bernard ESPINASSE – Elaboration dʼun MLD-R 16 . Adresse) ! MAISON (N°maison. ! PORTER (N°article. N°tiers.1 0. Adresse) ! ARTICLE (N°article. Date.N)-(0/1. ! ENTREPRISE (N°entreprise.1)-(0.1) MCD -> MLD : relations (0. N°commande. Adresse) . Adresse) .N Désignation N°entreprise Date Adresse 0. N°entreprise.

MCD -> MLD : relations ternaires ou plus (1) MCD -> MLD : relations ternaires ou plus (2) MCD MLD MAISON ENTREPRISE MAISON ENTREPRISE Schémas relationnels associés : Coordonnées N°entreprise Coordonnées N°entreprise Date_construction Nom Date_construction Nom Surface Adresse Surface Adresse ! MAISON (Coordonnées. Date_construction.1 Désignation TRAVAUX suit O. O. désignation. Durée) Bernard ESPINASSE – Elaboration dʼun MLD-R 19 Bernard ESPINASSE – Elaboration dʼun MLD-R 20 . N°tâche_précédente.1) MCD -> MLD : Re lations ré fle xive s (*. Montant) . N°type_travaux. Désignation. ! PRÉCÉDER (N°tâche. Coordonnées. Adresse). Solution 1 : ! DÉCOMPOSER (n°travaux.N ! TYPE_TRAVAUX (N°type_travaux.N)-(*.N Correspondre Durée MLD : précède O. Realiser REALISER ! RÉALISER (N°entreprise. Nom.N) MCD : TACHE Entité-Relation : N°tache O. durée) . Date. Désignation. n°travaux_ensemble).N)-(0. Surface) .N Durée N°travaux Désignation élément O. Durée) .N ensemble Décomposer Solution 1 Solution 2 Relationnel dérivé : TACHE TRAVAUX TACHE N°tache Précéder N°travaux ensemble PRECEDER Désignation N°tache Désignation DECOMPOSER Durée N°tache N°tache précédente Durée N°travaux N°tache_suivante Désignation élément N°travaux ensemble Durée Schémas relationnels : Schémas relationnels : ! TRAVAUX (n°travaux. O. Date Montant Coordonnées N°entreprise ! ENTREPRISE (N°entreprise. Désignation) . ! TACHE (N°tâche.N O. N°tâche_suivante) Solution 2 : TACHE (N°tâche.N N°type_travaux Date TYPE_TRAVAUX Montant N°type_travaux Désignation TYPE_TRAVAUX N°type_travaux Désignation Bernard ESPINASSE – Elaboration dʼun MLD-R 17 Bernard ESPINASSE – Elaboration dʼun MLD-R 18 MCD -> MLD : Re lations ré fle xive s (0.

n date statut qt!_livr!e prix_unitaire n°article d!signation Nom_projet 1. art_stock.1 n°commande qt!_cmd!e 0. ! LIGNE_CMD (lcd_cmd. cmd_cli. cli_nom. art_pa. Désignation) cli_ca cli_tremise FOURNISSEUR FOURNIR art_pa art_pv four_num four_nom four_adresse Bernard ESPINASSE – Elaboration dʼun MLD-R 21 Bernard ESPINASSE – Elaboration dʼun MLD-R 22 E x e m p l e d e p assage E-R au relationnel Introduction au langage SQL • Modèle relationnel dérivé : • Origine : SQL (Structured Query Language) est un langage de COMMANDE LIGNE_CMD requêtes standard pour les SGBD relationnels CLIENT cmd_num lcd_cmd cli_num cmd_cli lcd_art lcd_qté ARTICLE • 3 niveaux de normes : cmd_date art_num cli_nom cmd_statut lcd_liv art_four cli_age PASSER lcd_pu art_nom • SQL86 (standard ANSI en 86 puis ISO en 87) : la base puis SQL89 ou cli_adresse cli_type art_stock SQL1 : lʼintégrité: cli_ca art_poids cli_tremise FOURNISSEUR FOURNIR art_pa art_pv • SQL91 ou SQL2 four_num four_nom • SQL3 (98) : SQL devient un langage de programmation et évolue four_adresse vers lʼobjet • Schémas relationnels : ! CLIENT (cli_num.N 1. cli_tremise) ! ARTICLE (art_num. lcd_art. art_four. art_nom. cli_type. four_adresse) Bernard ESPINASSE – Elaboration dʼun MLD-R 23 Bernard ESPINASSE – Elaboration dʼun MLD-R 24 .n LIGNE_CMD ARTICLE Comporter n°client PASSER 1. lcd_qte. cli_ca.1 Désignation age qt! stock adresse (R) type 0.Rè gle de dé rivation : Ide ntifiant re latif Exe mple de passage E-R au Re lationne l MCD : Entité-Relation : PROJET TACHE CLIENT COMMANDE 1. cmd_date.n prix de vente taux remise FOURNIR n°fournisseur MLD : nom adresse PROJET Comporter TACHE Relationnel dérivé : N°projet N°ordre COMMANDE LIGNE_CMD Nom_projet N°projet CLIENT cmd_num lcd_cmd Désignation cli_num cmd_cli lcd_art ARTICLE cmd_date lcd_qté Schémas relationnels : cli_nom cmd_statut lcd_liv art_num art_four cli_age PASSER lcd_pu ! PROJET (N°projet.1 poids CA annuel prix d'achat FOURNISSEUR 0. Nom_projet) cli_adresse cli_type art_nom art_stock art_poids ! TRANCHE (N°ordre. cli_age. cli_adresse. cmd_statut) tables par la commande CREATE TABLE de SQL2.n N°projet N°ordre nom 1. lcd_liv. art_poids. four_nom. art_pv) Dans ce chapitre nous ne considèrerons que la création BASIQUE de ! COMMANDE (cmd_num. lcd_pu) ! FOURNISSEUR (four_num. N°projet.

cli_num = clé primaire inconnue) PRIMARY KEY (cli_num): l’attribut cli_num est clé primaire de la table Client. cli_type. cli_adresse cmd_statut cli_age INTEGER NOT NULL. cmd_statut) . FOREIGN KEY (art_four) REFERENCES Fournisseur).cmd_cli.l'attribut cmd_cli de la table commande est du même type que celui de la clé étrangère qui réfère à la table Fournisseur. art_pa. cli_type cli_adresse VARCHAR(80). art_poids NUMERIC (8. Schémas relationnels : PRIMARY KEY (cli_num)) . cli_adresse. cmd_statut VARCHAR(16). Bernard ESPINASSE – Elaboration dʼun MLD-R 27 Bernard ESPINASSE – Elaboration dʼun MLD-R 28 . (art_num CHAR(8) NOT NULL. cli_tremise INTEGER NOT NULL. cli_type. art_nom VARCHAR(25) NOT NULL. cli_nom. FOREIGN KEY (cmd_cli) REFERENCES client: l’attribut cmd_cli est une clé étrangère qui réfère à la table Client PRIMARY KEY (art_num): l’attribut art_num est clé primaire de la table article. cli_nom. Table COMMANDE (cmd_num. art_poids. • cli_ca cli_type VARCHAR(16). PRIMARY KEY (cmd_num). art_pa INTEGER NOT NULL. FOREIGN KEY (cmd_cli) REFERENCES client). cmd_date. PRIMARY KEY (cmd_num): l’attribut cmd_num est clé primaire de la table PRIMARY KEY (art_num).Création dʼune table en langage SQL (1) Création dʼune table (2) : clé primaire Soit le MLD suivant : CLIENT COMMANDE Table CLIENT (cli_num. Création de la table COMMANDE : • Création de la table ARTICLE : CREATE TABLE Commande CREATE TABLE Article (cmd_num CHAR(8) NOT NULL. art_nom. cli_age cmd_date cli_nom CHAR(25) NOT NULL. Remarques : 1. cmd_date. cli_tremise cli_ca INTEGER. Commande. primaire de la table client. cmd_cli. cli_adresse. art_stock. art_four CHAR(8) NOT NULL.la table client doit déjà exister FOREIGN KEY (art_four) REFERENCES Fournisseur: l’attribut art_cli est une clé 2. art_stock INTEGER NOT NULL. cli_age. cli_tremise) NOT NULL : on n’accepte pas que l’attribut puisse avoir une valeur nulle (valeur . cli_ca. art_pv) . art_four.1). cli_ca. cmd_date DATE NOT NULL. cmd_cli.cmd_num = clé primaire Remarque : un attribut déclaré clé primaire doit être défini avec l'option NOT NULL . cmd_cli CHAR(8) NOT NULL. cli_tremise) cli_num cmd_num CREATE TABLE Client cli_nom cmd_cli (cli_num CHAR(8) NOT NULL. = clé étrangère Bernard ESPINASSE – Elaboration dʼun MLD-R 25 Bernard ESPINASSE – Elaboration dʼun MLD-R 26 Création dʼune table (3) : clé étrangère Création dʼune table (4) : clé étrangère Table COMMANDE (cmd_num. cmd_statut) Table ARTICLE (art_num. cli_age. art_pv INTEGER NOT NULL. Table CLIENT (cli_num.

cli_tremise INTEGER NOT NULL. lcd_cmd INTEGER NOT NULL. a1 b1 a2 r b2 0. lcd_art): la clé primaire de la table Ligne_cmd est composée des attributs lcd_cmd et lcd_art qui sont ici clés étrangères. FOREIGN KEY (lcd_cmd) REFERENCES commande: l’attribut lcd_cmd est une clé Insertion dʼun nouveau enregistrement dans la table Client : étrangère qui réfère à la table Commande. cli_nom. 25) . PRIMARY KEY (lcd_cmd. cli_adresse VARCHAR(80).Clé primaire composée PRIMARY KEY (cli_num)) . lcd_pu) Table CLIENT (cli_num. lcd_liv INTEGER. cli_age. lcd_pu INTEGER NOT NULL. FOREIGN KEY (lcd_art) REFERENCES Article. cli_adresse VARCHAR(80). ‘Marseille’. PRIMARY KEY (cli_num)) . supposons une distribution triangulaire: cli_type VARCHAR(16). lcd_art. cli_tremise) . 29. ‘Tranvouez’. cli_type VARCHAR(16). personne 4 voiture a1 b1 a2 b2 a1 10000 r 40000 Bernard ESPINASSE – Elaboration dʼun MLD-R 31 Bernard ESPINASSE – Elaboration dʼun MLD-R 32 . cli_ca INTEGER. cli_tremise) CREATE TABLE Ligne_cmd CREATE TABLE Client (lcd_art CHAR(8) NOT NULL. cli_nom CHAR(25) NOT NULL. cli_ca.10 1. possèder cli_nom CHAR(25) NOT NULL. FOREIGN KEY (lcd_cmd) REFERENCES Commande. PRIMARY KEY (lcd_cmd. lcd_qte INTEGER NOT NULL. 0 10 3 moyenne mini maxi selon la distribution. <. Bernard ESPINASSE – Elaboration dʼun MLD-R 29 Bernard ESPINASSE – Elaboration dʼun MLD-R 30 Suppression dʼenregistrement dans une table Dime nsionne me nt dʼune BD Re lationne lle : Table CLIENT (cli_num. cli_age. (cli_num CHAR(8) NOT NULL. lcd_qte. lcd_art)) . ici une loi triangulaire d'où moy = (mini+2(mod)+max)/4 Suppression dʼun enregistrement dans la table client : d'où cardinalité moyenne = (0+2(3)+10)/4 = 4 si 10000 personnes. cli_type. cli_nom. 3680. cli_adresse. étrangère qui réfère à la table Article.Création dʼune table (5) : clé primaire composée Insertion dʼenregistrement dans une table en SQL Table LIGNE_CMD (lcd_cmd. FOREIGN KEY (lcd_art) REFERENCES commande: l’attribut lcd_art est une clé INSERT INTO client VALUES (‘C2345’. cli_ca.1 cli_age INTEGER NOT NULL. mode cli_tremise INTEGER NOT NULL. la relation "posséder" aura 40000 tuples DELETE FROM client WHERE (cli_nom = ‘Tranvouez’). lcd_liv. Multiplicités moyennes des liens relationnels CREATE TABLE Client personne voiture (cli_num CHAR(8) NOT NULL. cli_ca INTEGER. cli_age INTEGER NOT NULL. cli_type. cli_adresse. ‘particulier’.

75 n = 715 a1 b1 r r 1000 x 1. mode 1 card.Propagation des multiplicités moyenne personne conduire voiture a1 b1 a2 0.75 conduire => n= 1250/1.25 = 1250 Bernard ESPINASSE – Elaboration dʼun MLD-R 33 .75 1.25 = nb voiture x 1.75 d'où: nb personne x 1.5 b2 card.3 r 0.25 1. mode 1 card moy = 5/4 = 1.25 card moy = 7/4 = 1.75 soit: personne voiture a1 b1 715 a2 b2 1000 1250 = n x 1.