Vous êtes sur la page 1sur 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
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, age, adresse) ! Table DEPARTEMENT (Nom_departement, Effectif) :
! Nom_departement : clé primaire
Attributs de la table EMPLOYE :
! Matricule : clé primaire ! Table EMPLOYE (Matricule, Nom_departement, Nom, Age, Adresse)
! Nom, Age, 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, budget)
! N°projet : clé primaire ! Table TACHE (n°tache, n°tache_précédente, désignation, durée)
! N°tache : clé primaire
! Table TACHE (N°ordre, N°projet, durée) ! N°tache_précédente: clé étrangère vers table TACHE
! N°ordre, 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
Dérivation dʼun MLD-R à partir dʼun MCD en Entité- 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 (*,N)-(1,1) MCD -> MLD : relations (*,N)-(0,1)
MCD: MCD :
EMPLOYE VOITURE
DEPARTEMENT PERSONNE
Matricule appartenir Posseder
Nom_departement Nom Numero
Nom Date dʼacquisition Marque
1,1 1,N Effectif Prenom
Age 0,N 0,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, Prenom, Adresse) ;
! Table DEPARTEMENT (Nom_departement, Effectif) :
! VOITURE (Numéro, Nom, Marque, Type, Date_acquisition) ;
! Table EMPLOYE (Matricule, Nom_departement, Nom, Age, 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
MCD -> MLD : relations (0,1)-(1,1) MCD -> MLD : relations (0,1)-(0,1)
MCD : MCD :
EDIFICE MAISON ENTREPRISE TIERS
Est-un Correspondre
N°edifice N°maison N°tiers
1,1 N°entreprise
Type 0,1 Adresse 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, Adresse) ;
! EDIFICE (N°edifice, Type) ; ! TIERS (N°tiers, N°entreprise, Adresse)
! MAISON (N°maison, N°édifice, Adresse).
La cardinalité (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).

Bernard ESPINASSE – Elaboration dʼun MLD-R 13 Bernard ESPINASSE – Elaboration dʼun MLD-R 14

MCD -> MLD : relations (0,1)-(0,1) MCD -> MLD : relations (0/1,N)-(0/1,N)
MCD : MCD :
COMMANDE Porter ARTICLE
ENTREPRISE TIERS
Correspondre N°commande N°article
N°tiers 1,N Qte-commandée 0,N Désignation
N°entreprise Date
Adresse 0,1 C 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, Date, Statut) ;
! ENTREPRISE (N°entreprise, N°tiers, Adresse) ; ! PORTER (N°article, N°commande, Qte_commandée) ;
! TIERS (N°tiers, Adresse) ! ARTICLE (N°article, Désignation, Prix).
Idem : la cardinalité (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).

Bernard ESPINASSE – Elaboration dʼun MLD-R 15 Bernard ESPINASSE – Elaboration dʼun MLD-R 16
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, Surface) ;
O,N O,N ! TYPE_TRAVAUX (N°type_travaux, Désignation) ;
Realiser
REALISER ! RÉALISER (N°entreprise, Coordonnées, N°type_travaux, Date, Montant) ;
Date
Montant Coordonnées
N°entreprise ! ENTREPRISE (N°entreprise, Nom, Adresse).
O,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)-(0,1) MCD -> MLD : Re lations ré fle xive s (*,N)-(*,N)
MCD :
TACHE Entité-Relation :
N°tache O,1
Désignation TRAVAUX
suit O,N
Durée N°travaux
Désignation élément
O,N Correspondre Durée
MLD : précède
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, désignation, durée) ;
Solution 1 : ! DÉCOMPOSER (n°travaux, n°travaux_ensemble).
! TACHE (N°tâche, Désignation, Durée) ;
! PRÉCÉDER (N°tâche, N°tâche_suivante)
Solution 2 : TACHE (N°tâche, N°tâche_précédente, Désignation, Durée)
Bernard ESPINASSE – Elaboration dʼun MLD-R 19 Bernard ESPINASSE – Elaboration dʼun MLD-R 20
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,n
LIGNE_CMD
ARTICLE
Comporter n°client PASSER
1,1 n°commande qt!_cmd!e
0,n
N°projet N°ordre nom 1,n date
statut
qt!_livr!e
prix_unitaire
n°article
d!signation
Nom_projet 1,N 1,1 Désignation age
qt! stock
adresse
(R) type 0,1
poids
CA annuel prix d'achat
FOURNISSEUR 0,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, Nom_projet) cli_adresse
cli_type
art_nom
art_stock
art_poids
! TRANCHE (N°ordre, N°projet, 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_nom, cli_age, cli_adresse, cli_type, cli_ca, cli_tremise)
! ARTICLE (art_num, art_nom, art_four, art_stock, art_poids, art_pa, art_pv) Dans ce chapitre nous ne considèrerons que la création BASIQUE de
! COMMANDE (cmd_num, cmd_cli, cmd_date, cmd_statut) tables par la commande CREATE TABLE de SQL2,
! LIGNE_CMD (lcd_cmd, lcd_art, lcd_qte, lcd_liv, lcd_pu)
! FOURNISSEUR (four_num, four_nom, four_adresse)

Bernard ESPINASSE – Elaboration dʼun MLD-R 23 Bernard ESPINASSE – Elaboration dʼun MLD-R 24
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_nom, cli_age, cli_adresse, cli_type, cli_ca, cli_tremise)
cli_num cmd_num
CREATE TABLE Client
cli_nom cmd_cli
(cli_num CHAR(8) NOT NULL,
cli_age cmd_date cli_nom CHAR(25) NOT NULL,
cli_adresse cmd_statut cli_age INTEGER NOT NULL,
cli_type cli_adresse VARCHAR(80),

cli_ca cli_type VARCHAR(16),
cli_tremise cli_ca INTEGER,
cli_tremise INTEGER NOT NULL,
Schémas relationnels : PRIMARY KEY (cli_num)) ;

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

Bernard ESPINASSE – Elaboration dʼun MLD-R 27 Bernard ESPINASSE – Elaboration dʼun MLD-R 28
Création dʼune table (5) : clé primaire composée Insertion dʼenregistrement dans une table en SQL
Table LIGNE_CMD (lcd_cmd, lcd_art, lcd_qte, lcd_liv, lcd_pu) Table CLIENT (cli_num, cli_nom, cli_age, cli_adresse, cli_type, cli_ca, cli_tremise)
CREATE TABLE Ligne_cmd CREATE TABLE Client
(lcd_art CHAR(8) NOT NULL, (cli_num CHAR(8) NOT NULL,
lcd_cmd INTEGER NOT NULL, cli_nom CHAR(25) NOT NULL,
lcd_qte INTEGER NOT NULL, cli_age INTEGER NOT NULL,
lcd_liv INTEGER, cli_adresse VARCHAR(80),
lcd_pu INTEGER NOT NULL, cli_type VARCHAR(16),
FOREIGN KEY (lcd_cmd) REFERENCES Commande, cli_ca INTEGER,
FOREIGN KEY (lcd_art) REFERENCES Article, cli_tremise INTEGER NOT NULL,
PRIMARY KEY (lcd_cmd, lcd_art)) ; <- Clé primaire composée PRIMARY KEY (cli_num)) ;

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.
FOREIGN KEY (lcd_art) REFERENCES commande: l’attribut lcd_art est une clé INSERT INTO client VALUES (‘C2345’, ‘Tranvouez’, 29,
étrangère qui réfère à la table Article. ‘Marseille’, ‘particulier’, 3680, 25) ;
PRIMARY KEY (lcd_cmd, 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.

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_nom, cli_age, cli_adresse, cli_type, cli_ca, cli_tremise) ;
Multiplicités moyennes des liens relationnels
CREATE TABLE Client personne voiture
(cli_num CHAR(8) NOT NULL,
possèder
cli_nom CHAR(25) NOT NULL, a1 b1
a2 r b2
0,10 1,1
cli_age INTEGER NOT NULL,
cli_adresse VARCHAR(80), supposons une distribution triangulaire:
cli_type VARCHAR(16),
cli_ca INTEGER,
mode
cli_tremise INTEGER NOT NULL,
PRIMARY KEY (cli_num)) ; 0 10
3 moyenne
mini maxi

selon la distribution, 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, la relation "posséder" aura 40000 tuples
DELETE FROM client WHERE (cli_nom = ‘Tranvouez’);
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
Propagation des multiplicités moyenne
personne conduire voiture
a1 b1
a2 0,3 r 0,5 b2

card. mode 1 card. mode 1

card moy = 5/4 = 1,25 card moy = 7/4 = 1,75

d'où:
nb personne x 1,25 = nb voiture x 1,75 soit:
personne voiture
a1 b1 715
a2 b2
1000 1250 = n x 1,75
conduire => n= 1250/1,75
1,25 1,75 n = 715
a1
b1 r
r
1000 x 1,25 = 1250

Bernard ESPINASSE – Elaboration dʼun MLD-R 33