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

Nom. 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. budget) ! N°projet : clé primaire ! Table TACHE (n°tache. Effectif) : ! Nom_departement : clé primaire Attributs de la table EMPLOYE : ! Matricule : clé primaire ! Table EMPLOYE (Matricule. age. Nom_departement. Age. adresse) ! Table DEPARTEMENT (Nom_departement. Adresse) ! Nom. durée) ! N°tache : clé primaire ! Table TACHE (N°ordre. durée) ! N°tache_précédente: clé étrangère vers table TACHE ! N°ordre. 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. désignation. Age. N°projet. n°tache_précédente.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.

Nom.N)-(1. ! Table EMPLOYE (Matricule.N 0. Nom. Date_acquisition) .Dérivation dʼun MLD-R à partir dʼun MCD en Entité. Age.1) MCD: MCD : EMPLOYE VOITURE DEPARTEMENT PERSONNE Matricule appartenir Posseder Nom_departement Nom Numero Nom Date dʼacquisition Marque 1.1 1. Marque. ! Table DEPARTEMENT (Nom_departement.N Effectif Prenom Age 0. 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 . Effectif) : ! VOITURE (Numéro. Adresse) . Prenom. Type.N)-(0. 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 (*.1) MCD -> MLD : relations (*.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. Nom_departement.

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

Désignation. n°travaux_ensemble). durée) . ! PRÉCÉDER (N°tâche. N°type_travaux. ! TACHE (N°tâche.N ! TYPE_TRAVAUX (N°type_travaux. Adresse).1 Désignation TRAVAUX suit O.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. N°tâche_suivante) Solution 2 : TACHE (N°tâche. Date.N Durée N°travaux Désignation élément O. Realiser REALISER ! RÉALISER (N°entreprise. Désignation. O.N O.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. Surface) . Nom. Montant) . Durée) . Solution 1 : ! DÉCOMPOSER (n°travaux. Désignation) .1) MCD -> MLD : Re lations ré fle xive s (*.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°tâche_précédente. Coordonnées. désignation.N Correspondre Durée MLD : précède O. Date_construction.N)-(0.N) MCD : TACHE Entité-Relation : N°tache O. Date Montant Coordonnées N°entreprise ! ENTREPRISE (N°entreprise. O.N)-(*. Durée) Bernard ESPINASSE – Elaboration dʼun MLD-R 19 Bernard ESPINASSE – Elaboration dʼun MLD-R 20 .

1 Désignation age qt! stock adresse (R) type 0. cmd_date. four_nom. art_poids.n LIGNE_CMD ARTICLE Comporter n°client PASSER 1.N 1. art_pa.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. art_nom.n N°projet N°ordre nom 1. ! LIGNE_CMD (lcd_cmd. N°projet. cli_nom.n date statut qt!_livr!e prix_unitaire n°article d!signation Nom_projet 1. Nom_projet) cli_adresse cli_type art_nom art_stock art_poids ! TRANCHE (N°ordre. art_pv) Dans ce chapitre nous ne considèrerons que la création BASIQUE de ! COMMANDE (cmd_num. cli_age. art_stock.1 n°commande qt!_cmd!e 0.1 poids CA annuel prix d'achat FOURNISSEUR 0. cli_tremise) ! ARTICLE (art_num. art_four. lcd_art. cli_type. lcd_liv. 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. cli_adresse. cli_ca. lcd_qte. four_adresse) Bernard ESPINASSE – Elaboration dʼun MLD-R 23 Bernard ESPINASSE – Elaboration dʼun MLD-R 24 . cmd_cli. cmd_statut) tables par la commande CREATE TABLE de SQL2.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. lcd_pu) ! FOURNISSEUR (four_num.

cmd_date. cli_ca. art_poids.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. • cli_ca cli_type VARCHAR(16). cli_type cli_adresse VARCHAR(80). cmd_date. cli_nom. cli_type. PRIMARY KEY (cmd_num). cmd_cli. Schémas relationnels : PRIMARY KEY (cli_num)) . art_nom VARCHAR(25) NOT NULL. Création de la table COMMANDE : • Création de la table ARTICLE : CREATE TABLE Commande CREATE TABLE Article (cmd_num CHAR(8) NOT NULL. cli_age. cmd_date DATE NOT NULL.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. cli_type. cli_tremise INTEGER NOT NULL.la table client doit déjà exister FOREIGN KEY (art_four) REFERENCES Fournisseur: l’attribut art_cli est une clé 2. art_pa INTEGER NOT NULL. Table COMMANDE (cmd_num. cli_adresse. art_four. Bernard ESPINASSE – Elaboration dʼun MLD-R 27 Bernard ESPINASSE – Elaboration dʼun MLD-R 28 .cmd_cli. art_stock INTEGER NOT NULL. art_pv) . cli_nom. art_pa. cli_tremise cli_ca INTEGER. cmd_statut) Table ARTICLE (art_num. Table CLIENT (cli_num.cmd_num = clé primaire Remarque : un attribut déclaré clé primaire doit être défini avec l'option NOT NULL .cli_num = clé primaire inconnue) PRIMARY KEY (cli_num): l’attribut cli_num est clé primaire de la table Client. art_stock. = 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. cli_tremise) NOT NULL : on n’accepte pas que l’attribut puisse avoir une valeur nulle (valeur . PRIMARY KEY (cmd_num): l’attribut cmd_num est clé primaire de la table PRIMARY KEY (art_num). art_nom. cli_adresse. FOREIGN KEY (art_four) REFERENCES Fournisseur). art_pv INTEGER NOT NULL. Commande. FOREIGN KEY (cmd_cli) REFERENCES client). 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. art_four CHAR(8) NOT NULL. cmd_cli. cli_age. cmd_statut VARCHAR(16).1). art_poids NUMERIC (8. cli_tremise) cli_num cmd_num CREATE TABLE Client cli_nom cmd_cli (cli_num CHAR(8) NOT NULL. cli_ca. cmd_cli CHAR(8) NOT NULL. cli_age cmd_date cli_nom CHAR(25) NOT NULL. cli_adresse cmd_statut cli_age INTEGER NOT NULL. cmd_statut) . Remarques : 1. (art_num CHAR(8) NOT NULL. primaire de la table client.

FOREIGN KEY (lcd_art) REFERENCES Article. cli_type VARCHAR(16). cli_adresse. lcd_pu INTEGER NOT NULL. (cli_num CHAR(8) NOT NULL. <.1 cli_age INTEGER NOT NULL. cli_tremise) . cli_nom. 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. PRIMARY KEY (lcd_cmd. lcd_qte. cli_type.Clé primaire composée PRIMARY KEY (cli_num)) . PRIMARY KEY (lcd_cmd. mode cli_tremise INTEGER NOT NULL. ‘Tranvouez’. la relation "posséder" aura 40000 tuples DELETE FROM client WHERE (cli_nom = ‘Tranvouez’). lcd_art)) . cli_ca. cli_nom CHAR(25) NOT NULL. FOREIGN KEY (lcd_art) REFERENCES commande: l’attribut lcd_art est une clé INSERT INTO client VALUES (‘C2345’. 25) . 29. ‘particulier’. 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.10 1. cli_age. lcd_liv. possèder cli_nom CHAR(25) NOT NULL.Création dʼune table (5) : clé primaire composée Insertion dʼenregistrement dans une table en SQL Table LIGNE_CMD (lcd_cmd. PRIMARY KEY (cli_num)) . cli_adresse VARCHAR(80). FOREIGN KEY (lcd_cmd) REFERENCES Commande. cli_age INTEGER NOT NULL. 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. cli_ca INTEGER. supposons une distribution triangulaire: cli_type VARCHAR(16). cli_type. cli_age. lcd_qte INTEGER NOT NULL. 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. 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_ca. cli_tremise) CREATE TABLE Ligne_cmd CREATE TABLE Client (lcd_art CHAR(8) NOT NULL. étrangère qui réfère à la table Article. lcd_liv INTEGER. 0 10 3 moyenne mini maxi selon la distribution. a1 b1 a2 r b2 0. ‘Marseille’. lcd_art. 3680. lcd_cmd INTEGER NOT NULL. lcd_pu) Table CLIENT (cli_num. Multiplicités moyennes des liens relationnels CREATE TABLE Client personne voiture (cli_num CHAR(8) NOT NULL. cli_adresse VARCHAR(80). cli_tremise INTEGER NOT NULL. cli_adresse.

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