Académique Documents
Professionnel Documents
Culture Documents
ER Relationnel 4p
ER Relationnel 4p
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)
Bernard ESPINASSE – Elaboration dʼun MLD-R 1 Bernard ESPINASSE – Elaboration dʼun MLD-R 2
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
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
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
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
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
Bernard ESPINASSE – Elaboration dʼun MLD-R 21 Bernard ESPINASSE – Elaboration dʼun MLD-R 22
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
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
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
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