Vous êtes sur la page 1sur 9

Plan

Elaboration dun
Modle Logique de Donnes Relationnel
(MLD-R)
Bernard ESPINASSE
Professeur Aix-Marseille Universit (AMU)

1.

Problmatique du MLD-R

2.

Formalisme graphique de Merise

3.

Drivation dun MLD-R partir dun MCD en Entit-Relation

4.

Cration de tables en langage SQL (cl primaires et


trangres)

5.

Dimensionnement dune BD Relationnelle (multiplicit


moyenne des liens)

Ecole Polytechnique Universitaire de Marseille


Novembre 2012

Problmatique du MLD
Formalisme graphique de Merise
Drivation dun MLD-R partir dun MCD en Entit-Relation
Cration de tables en langage SQL (cl primaires et trangres)
Dimensionnement dune BD Relationnelle

Bernard ESPINASSE Elaboration dun MLD-R

Problmatique du MLD

Bernard ESPINASSE Elaboration dun MLD-R

D marche d laboration dun MLD Re lationne l

Modle Conceptuel de Donnes (MCD) :


- permet de modliser la smantique des informations dune faon
comprhensible par lutilisateur de la future base de donnes
- utilise le formalisme (graphique) Entit-Relation
- ne permet pas dimplmentation informatique de la base de
donnes dans un SGBD donn

! MCD : Modle Conceptuel de Donnes


! MLD-R : Modle Logique de Donnes Relationnel

MCD

NIVEAU CONCEPTUEL

En formalisme Entit-Relation

Modle Logique de Donnes (MLD) :


- permet de modliser la structure selon laquelle les donnes seront
stockes dans la future base de donnes
- est adapt une famille de SGBD : ici les SGBD relationnels (MLD
Relationnels ou MLD-R)
- utilise le formalisme graphique Merise
- permet dimplmenter la base de donnes dans un SGBD donn

En formalisme Merise

Cration des tables de la base


de donnes en langage SQL
NIVEAU PHYSIQUE

Bernard ESPINASSE Elaboration dun MLD-R

MLD (Relationnel)

NIVEAU LOGIQUE

Bernard ESPINASSE Elaboration dun MLD-R

SGBD Relationnel
4

Formalisme graphique Merise pour le MLD-R (1)

Formalisme graphique Merise pour le MLD-R (2)

Table

Lien entre tables : contrainte dintgrit rfrentielle

Table EMPLOYE (reprsentation graphique) :

Table EMPLOYE (reprsentation graphique) :


DEPARTEMENT

EMPLOYE

EMPLOYE

Appartenir

Matricule
Nom_departement
Nom
Age
Adresse

Matricule
Nom
Age
Adresse

Schma de la table EMPLOYE :


EMPLOYE (Matricule, nom, age, adresse)

Schmas des tables :


! Table DEPARTEMENT (Nom_departement, Effectif) :
! Nom_departement : cl primaire

Attributs de la table EMPLOYE :


! Matricule : cl primaire
! Nom, Age, Adresse : autres attributs

! Table EMPLOYE (Matricule, Nom_departement, Nom, Age, Adresse)


! Matricule: cl primaire
! Nom_departement : cl trangre vers table DEPARTEMENT
5

Bernard ESPINASSE Elaboration dun MLD-R

Nom_departement
Effectif

Bernard ESPINASSE Elaboration dun MLD-R

Formalisme graphique Merise du MLD-R (3)

Formalisme graphique Merise du MLD-R (4)

Lien entre tables : cl primaire compose rfrentielle

Lien entre tables : contraintes dintgrit rfrentielle rflexive

TACHE
Nordre
Nprojet
dure

TACHE

Prcder

PROJET

Concerner

Ntache
Ntache prcdente
Dsignation
Dure

Nprojet
budget

Schmas des tables :

Schmas des tables :

! Table PROJET (Nprojet, budget)


! Nprojet : cl primaire

! Table TACHE (ntache, ntache_prcdente, dsignation, dure)


! Ntache : cl primaire

! Table TACHE (Nordre, Nprojet, dure)

! Ntache_prcdente: cl trangre vers table TACHE

! Nordre, nprojet : cl primaire compose


! Nprojet : cl trangre vers table PROJET

Bernard ESPINASSE Elaboration dun MLD-R

Bernard ESPINASSE Elaboration dun MLD-R

Drivation dun MLD-R partir dun MCD en EntitRe lation

MCD -> MLD : drivation des entits


Rgle : toute entit du MCD se drive en une table du MLD
Entit

MCD

NIVEAU CONCEPTUEL

En formalisme Entit-Relation

EMPLOYE

EMPLOYE

Matricule
Nom
Age
Adresse

Matricule
Nom
Age
Adresse

Ensemble de rgles
MLD (Relationnel)

NIVEAU LOGIQUE

Table

En formalisme Merise

la proprit identifiante de lentit devient


la cl primaire de la table

Cration des tables de la base


de donnes en langage SQL
NIVEAU PHYSIQUE

SGBD Relationnel

Bernard ESPINASSE Elaboration dun MLD-R

10

Bernard ESPINASSE Elaboration dun MLD-R

MCD -> MLD : relations (*,N)-(1,1)

MCD -> MLD : relations (*,N)-(0,1)

MCD:

MCD :
EMPLOYE

DEPARTEMENT

appartenir

Matricule
Nom
Age
Adresse

1,N

1,1

PERSONNE

Nom_departement
Effectif

Nom
Prenom
Adresse

MLD :
EMPLOYE
Matricule
Nom_departement
Nom
Age
Adresse

Appartenir

DEPARTEMENT

PERSONNE

Nom_departement
Effectif

MLD :

Nom
Prenom
Adresse

VOITURE

Posseder
Date dacquisition
0,N

P
o
s
s
Posseder e
d
e
r

0,1

Numero
Marque
Type

VOITURE
Numero
Nom
Marque
Type
Date dacquisition

Schmas relationnels :
! PERSONNE (Nom, Prenom, Adresse) ;
! VOITURE (Numro, Nom, Marque, Type, Date_acquisition) ;

Schmas relationnels :
! Table DEPARTEMENT (Nom_departement, Effectif) :
! Table EMPLOYE (Matricule, Nom_departement, Nom, Age, Adresse)
Nom_departement : cl trangre vers table DEPARTEMENT
Bernard ESPINASSE Elaboration dun MLD-R

11

Bernard ESPINASSE Elaboration dun MLD-R

12

MCD -> MLD : relations (0,1)-(1,1)

MCD -> MLD : relations (0,1)-(0,1)

MCD :

MCD :
MAISON

EDIFICE
Nedifice
Type

Est-un
1,1

0,1

ENTREPRISE

Nmaison
Adresse

Nentreprise
Adresse

TIERS

Correspondre
0,1

0,1

Ntiers
Type

MLD (solution 1) :
MLD :

Ntiers
Nentreprise
Type

Correspondre

Nentreprise
Adresse

Nmaison
Nedifice
Adresse

Est-un

Nedifice
Type

TIERS

ENTREPRISE

MAISON

EDIFICE

Schmas relationnels :

Schmas relationnels :
! EDIFICE (Nedifice, Type) ;
! MAISON (Nmaison, Ndifice, Adresse).

! ENTREPRISE (Nentreprise, Adresse) ;


! TIERS (Ntiers, Nentreprise, Adresse)
La cardinalit (0,1) pose le problme daccepter des valeurs nulles sur lattribut migrant
pouvant fixer le sens de migration (par exemple la taille des cls).

13

Bernard ESPINASSE Elaboration dun MLD-R

14

Bernard ESPINASSE Elaboration dun MLD-R

MCD -> MLD : relations (0,1)-(0,1)

MCD -> MLD : relations (0/1,N)-(0/1,N)

MCD :

MCD :
ENTREPRISE
Nentreprise
Adresse

MLD (solution 2) :
ENTREPRISE
Nentreprise
Ntiers
Adresse

Schmas relationnels :

0,1

C
o
r
r
e
s
Correspondrep
o
n
d
r
e

COMMANDE

TIERS

Correspondre
0,1

Ncommande
Date
Statut

Ntiers
Type

ARTICLE
Narticle
0,N Dsignation
Prix

MLD :

TIERS

COMMANDE

Ntiers
Type

Ncommande
Date
Statut

! ENTREPRISE (Nentreprise, Ntiers, Adresse) ;


! TIERS (Ntiers, Adresse)
Idem : la cardinalit (0,1) pose le problme daccepter des valeurs nulles sur lattribut
migrant pouvant fixer le sens de migration (par exemple, la taille des cls).
Bernard ESPINASSE Elaboration dun MLD-R

1,N

Porter
Qte-commande

15

PORTER
Ncommande
Narticle
Qte-commande

ARTICLE
Narticle
Dsignation
Prix

Schmas relationnels :
! COMMANDE (Ncommande, Date, Statut) ;
! PORTER (Narticle, Ncommande, Qte_commande) ;
! ARTICLE (Narticle, Dsignation, Prix).

Bernard ESPINASSE Elaboration dun MLD-R

16

MCD -> MLD : relations ternaires ou plus (1)


MCD

MCD -> MLD : relations ternaires ou plus (2)

MLD
ENTREPRISE

MAISON

Nentreprise
Nom
Adresse

Coordonnes
Date_construction
Surface

O,N

ENTREPRISE

MAISON
Coordonnes
Date_construction
Surface

Nentreprise
Nom
Adresse

Schmas relationnels associs :


! MAISON (Coordonnes, Date_construction, Surface) ;
! TYPE_TRAVAUX (Ntype_travaux, Dsignation) ;

O,N
Realiser

REALISER

Date
Montant

! RALISER (Nentreprise, Coordonnes, Ntype_travaux, Date, Montant) ;

Coordonnes
Nentreprise
Ntype_travaux
Date
Montant

O,N
TYPE_TRAVAUX

! ENTREPRISE (Nentreprise, Nom, Adresse).

Ntype_travaux
Dsignation

TYPE_TRAVAUX
Ntype_travaux
Dsignation

17

Bernard ESPINASSE Elaboration dun MLD-R

MCD -> MLD : Re lations r fle xive s (0,N)-(0,1)


MCD :

TACHE
Ntache
Dsignation
Dure

O,N
prcde

MLD :

18

Bernard ESPINASSE Elaboration dun MLD-R

MCD -> MLD : Re lations r fle xive s (*,N)-(*,N)


Entit-Relation :

O,1

TRAVAUX
Ntravaux
Dsignation
Dure
O,N

suit
Correspondre

ensemble

Solution 1
TACHE
Ntache
Dsignation
Dure

PRECEDER
Ntache
Ntache_suivante

TRAVAUX
Ntravaux
Dsignation
Dure

TACHE
Ntache
Ntache prcdente
Dsignation
Dure

Schmas relationnels :

Dcomposer

Schmas relationnels :

ensemble

lment

DECOMPOSER
Ntravaux
Ntravaux ensemble

! TRAVAUX (ntravaux, dsignation, dure) ;


! DCOMPOSER (ntravaux, ntravaux_ensemble).

Solution 1 :
! TACHE (Ntche, Dsignation, Dure) ;
! PRCDER (Ntche, Ntche_suivante)
Solution 2 : TACHE (Ntche, Ntche_prcdente, Dsignation, Dure)
Bernard ESPINASSE Elaboration dun MLD-R

lment

Relationnel driv :

Solution 2

Prcder

O,N

19

Bernard ESPINASSE Elaboration dun 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
Nprojet
Nom_projet

TACHE

Comporter
1,1
(R)

1,N

COMMANDE

CLIENT
nclient
nom
age
adresse
type
CA annuel
taux remise

Nordre
Dsignation

1,n

PASSER

1,1

ncommande
date
statut

LIGNE_CMD
1,n

ARTICLE

qt!_cmd!e
qt!_livr!e
prix_unitaire

0,n

0,1
FOURNISSEUR

0,n

FOURNIR

narticle
d!signation
qt! stock
poids
prix d'achat
prix de vente

nfournisseur
nom
adresse

MLD :
PROJET

Relationnel driv :

TACHE

Comporter

Nordre
Nprojet
Dsignation

Nprojet
Nom_projet

COMMANDE
CLIENT
cli_num
cli_nom
cli_age
cli_adresse
cli_type
cli_ca
cli_tremise

relationnels :

Schmas

! PROJET (Nprojet, Nom_projet)


! TRANCHE (Nordre, Nprojet, Dsignation)

PASSER

cmd_num
cmd_cli
cmd_date
cmd_statut

FOURNISSEUR
four_num
four_nom
four_adresse

21

Bernard ESPINASSE Elaboration dun MLD-R

LIGNE_CMD
lcd_cmd
lcd_art
lcd_qt
lcd_liv
lcd_pu

FOURNIR

ARTICLE
art_num
art_four
art_nom
art_stock
art_poids
art_pa
art_pv

Bernard ESPINASSE Elaboration dun MLD-R

E x e m p l e d e p assage E-R au relationnel

Introduction au langage SQL

Modle relationnel driv :

Origine : SQL (Structured Query Language) est un langage de


requtes standard pour les SGBD relationnels

COMMANDE
cmd_num
cmd_cli

CLIENT
cli_num
cli_nom
cli_age

PASSER

cmd_date
cmd_statut

cli_adresse
cli_type
cli_ca
cli_tremise

FOURNISSEUR
four_num
four_nom
four_adresse

LIGNE_CMD
lcd_cmd
lcd_art
lcd_qt
lcd_liv
lcd_pu

FOURNIR

3 niveaux de normes :

ARTICLE
art_num
art_four
art_nom
art_stock
art_poids

SQL86 (standard ANSI en 86 puis ISO en 87) : la base puis SQL89 ou


SQL1 : lintgrit:

art_pa
art_pv

SQL91 ou SQL2
SQL3 (98) : SQL devient un langage de programmation et volue
vers lobjet

Schmas 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)
! COMMANDE (cmd_num, cmd_cli, cmd_date, cmd_statut)
! LIGNE_CMD (lcd_cmd, lcd_art, lcd_qte, lcd_liv, lcd_pu)
! FOURNISSEUR (four_num, four_nom, four_adresse)

Bernard ESPINASSE Elaboration dun MLD-R

22

Dans ce chapitre nous ne considrerons que la cration BASIQUE de


tables par la commande CREATE TABLE de SQL2,

23

Bernard ESPINASSE Elaboration dun MLD-R

24

Cration dune table en langage SQL (1)

Cration dune table (2) : cl primaire

Soit le MLD suivant :

CLIENT
cli_num
cli_nom
cli_age
cli_adresse
cli_type
cli_ca
cli_tremise

Table CLIENT (cli_num, cli_nom, cli_age, cli_adresse, cli_type, cli_ca, cli_tremise)

COMMANDE
cmd_num
cmd_cli
cmd_date
cmd_statut

Schmas relationnels :
Table CLIENT (cli_num, cli_nom, cli_age, cli_adresse, cli_type, cli_ca, cli_tremise)
- cli_num = cl primaire

Table COMMANDE (cmd_num, cmd_cli, cmd_date, cmd_statut)

NOT NULL : on naccepte pas que lattribut puisse avoir une valeur nulle (valeur
inconnue)
PRIMARY KEY (cli_num): lattribut cli_num est cl primaire de la table Client.
Remarque : un attribut dclar cl primaire doit tre dfini avec l'option NOT NULL

- cmd_num = cl primaire
- cmd_cli, = cl trangre

Bernard ESPINASSE Elaboration dun MLD-R

CREATE TABLE Client


(cli_num CHAR(8) NOT NULL,
cli_nom
CHAR(25) NOT NULL,
cli_age
INTEGER NOT NULL,
cli_adresse VARCHAR(80),
cli_type VARCHAR(16),
cli_ca INTEGER,
cli_tremise INTEGER NOT NULL,
PRIMARY KEY (cli_num)) ;

25

Bernard ESPINASSE Elaboration dun MLD-R

26

Cration dune table (3) : cl trangre

Cration dune table (4) : cl trangre

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) ;

Cration de la table COMMANDE :


CREATE TABLE Commande
(cmd_num CHAR(8) NOT NULL,
cmd_cli
CHAR(8) NOT NULL,
cmd_date DATE NOT NULL,
cmd_statut
VARCHAR(16),
PRIMARY KEY (cmd_num),
FOREIGN KEY (cmd_cli) REFERENCES client);

Cration de la table ARTICLE :


CREATE TABLE Article
(art_num CHAR(8) NOT NULL,
art_nom
VARCHAR(25) NOT NULL,
art_four CHAR(8) NOT NULL,
art_stock INTEGER NOT NULL,
art_poids NUMERIC (8,1),
art_pa INTEGER NOT NULL,
art_pv INTEGER NOT NULL,
PRIMARY KEY (art_num),
FOREIGN KEY (art_four) REFERENCES Fournisseur);

PRIMARY KEY (cmd_num): lattribut cmd_num est cl primaire de la table


Commande.
FOREIGN KEY (cmd_cli) REFERENCES client: lattribut cmd_cli est une cl
trangre qui rfre la table Client
Remarques :
1- la table client doit dj exister
2- l'attribut cmd_cli de la table commande est du mme type que celui de la cl
primaire de la table client.

Bernard ESPINASSE Elaboration dun MLD-R

27

PRIMARY KEY (art_num): lattribut art_num est cl primaire de la table article.


FOREIGN KEY (art_four) REFERENCES Fournisseur: lattribut art_cli est une cl
trangre qui rfre la table Fournisseur.

Bernard ESPINASSE Elaboration dun MLD-R

28

Cration dune table (5) : cl primaire compose

Insertion denregistrement 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


(lcd_art CHAR(8) NOT NULL,
lcd_cmd
INTEGER NOT NULL,
lcd_qte
INTEGER NOT NULL,
lcd_liv
INTEGER,
lcd_pu INTEGER NOT NULL,
FOREIGN KEY (lcd_cmd) REFERENCES Commande,
FOREIGN KEY (lcd_art) REFERENCES Article,
PRIMARY KEY (lcd_cmd, lcd_art)) ; <- Cl primaire

compose

FOREIGN KEY (lcd_cmd) REFERENCES commande: lattribut lcd_cmd est une cl


trangre qui rfre la table Commande.
FOREIGN KEY (lcd_art) REFERENCES commande: lattribut lcd_art est une cl
trangre qui rfre la table Article.

CREATE TABLE Client


(cli_num CHAR(8) NOT NULL,
cli_nom
CHAR(25) NOT NULL,
cli_age
INTEGER NOT NULL,
cli_adresse VARCHAR(80),
cli_type VARCHAR(16),
cli_ca INTEGER,
cli_tremise INTEGER NOT NULL,
PRIMARY KEY (cli_num)) ;

Insertion dun nouveau enregistrement dans la table Client :


INSERT INTO client VALUES (C2345, Tranvouez, 29,
Marseille, particulier, 3680, 25) ;

PRIMARY KEY (lcd_cmd, lcd_art): la cl primaire de la table Ligne_cmd est


compose des attributs lcd_cmd et lcd_art qui sont ici cls trangres.

Bernard ESPINASSE Elaboration dun MLD-R

29

Suppression denregistrement dans une table


Table CLIENT (cli_num, cli_nom, cli_age, cli_adresse, cli_type, cli_ca, cli_tremise) ;
CREATE TABLE Client
(cli_num CHAR(8) NOT NULL,
cli_nom
CHAR(25) NOT NULL,
cli_age
INTEGER NOT NULL,
cli_adresse VARCHAR(80),
cli_type VARCHAR(16),
cli_ca INTEGER,
cli_tremise INTEGER NOT NULL,
PRIMARY KEY (cli_num)) ;

30

Bernard ESPINASSE Elaboration dun MLD-R

Dime nsionne me nt dune BD Re lationne lle :


Multiplicits moyennes des liens relationnels
personne
possder
a1
r
a2
0,10

1,1

voiture
b1
b2

supposons une distribution triangulaire:


mode

0
mini

3 moyenne

10
maxi

selon la distribution, ici une loi triangulaire d'o moy = (mini+2(mod)+max)/4


d'o cardinalit moyenne = (0+2(3)+10)/4 = 4
si 10000 personnes, la relation "possder" aura 40000 tuples
voiture
personne
4
a1
b1
a2
b2
a1
10000
r

Suppression dun enregistrement dans la table client :

DELETE FROM client WHERE (cli_nom = Tranvouez);

40000
Bernard ESPINASSE Elaboration dun MLD-R

31

Bernard ESPINASSE Elaboration dun MLD-R

32

Propagation des multiplicits moyenne


personne
a1
0,3
a2

conduire
r

0,5

voiture
b1
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:
voiture
b1
b2

personne
a1
a2
1000

conduire
1,25

a1
b1 r
r

1,75

715

1250 = n x 1,75
=> n= 1250/1,75
n = 715

1000 x 1,25 = 1250

Bernard ESPINASSE Elaboration dun MLD-R

33