Vous êtes sur la page 1sur 30

Modlisation Entit/Association

1/30

La phase de design d une BD


Analyse des besoins
Design conceptuel
Modle EA, UML

Design logique
de EA vers des tables
normalisation de schma

2/30

Modle Entit/Association (ER)


Entit
similaire la notion d objet, reprsente une chose du
monde rel

Type d entit
similaire la notion de classe, dfinit la structure
commune d un ensemble d entits
Nom

Proprit
atomiques

ID

Tlphone

Diagramme ER
Type d entit --> rectangle
Proprit
--> ovale

Taille
lve
3/30

Proprits identifiantes
Ensemble de proprits dont la valeur ne
peut pas appartenir plus qu une entit
Doit tre fix pour chaque type d entit
Soulignes dans le diagramme ER :
Nom
Prnom

Tlphone
Taille

Elve
4/30

Associations
Lien entre deux ou plusieurs types d entit
Diagramme ER : losange
lve

Assiste

Cours

Type d associations
dfinit des liens entre des types d entit.
la valeur d un type d association peut tre une table :
une colonne par type d entit participant l association
une ligne pour chaque combinaison d entits participant une
association
Elve
Jean
Jean
Jacques

Cours
Macro Economie
Anglais
E-Commerce

5/30

Cardinalit
Min:Max
Valeurs considrer :

0:1, 1:1
0:N, 1:N,
M-N
Exemple :
lve

1:M

Assiste

0:N

Cours

6/30

Associations ternaires
Le plus souvent les associations binaires suffisent
Des associations entre trois types d entit (ou plus) peuvent
tre ncessaires
Exemple : liens entre Elves, Cours et TH

lve

Assiste

Reprsentation correcte

Cours

Compos

si chaque lve est tenu de participer


a toutes les TH de chaque cours

TH
7/30

Exemple d association ternaire


Comment faire lorsque les lves sont issus de diffrentes
formations et ne suivent pas tous l intgralit de chaque
cours ?
Comment dterminer l emploi du temps de chaque lve
---> Besoin d une association ternaire entre lve, Cours et TH :

lve

suivre

Cours

lve
TH

Jean
Jean
Jacques

Cours
Macro Economie
Anglais
E-Commerce

TH
s40#1
s40#2
s40#1
8/30

Proprits des associations


Anne

lve

Assiste

Cours

Simplification de :
Anne

Annes

lve

Assiste

Cours
9/30

Proprit multivalue

Anne

lve

Assiste

Cours

10/30

Exemple : Bars Bire


1:N

Bar

1:N

frquente

Servie
1:M

1:N

0:M

Aime

Bire

0:M
Buveur

0:1

0:M
favorite
11/30

Rles
Une entit peut participer plus qu une fois la
mme association
besoin d associer des rles diffrents pour une entit

Mari
pouse

poux
Buveur

poux
Jean
Jules

pouse
Bernadette
Arlette

12/30

Sous-classe
Sous-classe --> nombre d entits restreint -->
proprits supplmentaires
Exemple : Barman est un buveur
+ ( 1 proprit supplmentaire anciennet et un lien
travaille )
Identifiant du barman est celui de buveur

Id

Bar

frquente

travaille

Buveur

isa
anciennet
Barman
13/30

Sous-classe et hritage
Point de vue Objet :
1 objet (entit) est associ une seule classe
Il hrite les proprits de sa super-classe

Point de vue Entit/Association :


1 entit a une reprsentation dans toutes les sous-classe dont elle
dpend
Ses proprits sont obtenues par l union des proprits qu elle a dans
les diffrentes classes

Hritage multiple :
Thoriquement possible
Problme rsolution des conflits ?

Contraintes COVER/OVERLAPS
14/30

Entit Faible (weak entity)


L identifiant d une entit peut tre compos partir
d une (ou plusieurs) entit forte avec laquelle
l entit faible est lie
Exemple :
Id Login = Nom de login (unique sur chaque
machine) + adresse IP de la machine
Nom
Login

Host

Nom
15/30

D autres aspects
Choix attribut ou entit?
Exemple: plusieurs adresses

Relation vs entit:
Exemple: manageur (association avec un attribut
budget)
budget global?

16/30

Transposition en relationnel

Type d entit

==> Relation

Proprit

==> Attribut

Proprits identifiantes ==> Cl primaire


Association

==> fonction des cardinalits ?

17/30

Transposition des associations


priode

Id_Bar

Bar

x:1

gre

Id_Buveur

x:1

Buveur

L identifiant de Buveur est utilis comme cl trangre


dans la relation Bar, ou inversement.
Les proprits de l association suivent la cl trangre
Bar(Id_Bar, ) et Buveur(Id_Buveur, , Id_Bar, priode)
ou
Bar(Id_Bar, , Id_Grant, priode) et Buveur(Id_Buveur, )
18/30

Transposition des associations (suite)


Id_Bar

Bar

Id_Buveur

x:1

habitu

x:n

Buveur

L identifiant de Bar est utilis comme cl trangre dans


la relation Buveur.
Les proprits de l association suivent la cl trangre
Bar(Id_Bar, ) et Buveur(Id_Buveur, , Id_Bar)
19/30

Transposition des associations (suite)


Id_Bar

Bar

Id_Buveur

x:m

frquente

x:n

Buveur

L association donne lieu une relation.


La cl primaire de la relation frquente est compose des
cls des relations Buveur et Bar.
Bar(Id_Bar, ) et Buveur(Id_Buveur, )
Frquente (Id_Bar, Id_Buveur, )
20/30

Transposition des associations (suite)


Nom
1:1

1:n
Personne

fait partie

Famille

Prnom
La cl de la relation Personne est compose de celle de la
relation Famille
Personne (Nom_famille, Prnom, )
Famille (Nom, )
21/30

Transposition des associations (suite)


Adresse

Nom

Buveur

isa
anciennet
Barman
Point de vue OO :
Buveur(Nom, Adresse) et Barman (Nom, Adresse, anciennet)

Point de vue ER
Buveur(Nom, Adresse) et Barman (Nom, anciennet)
22/30

Transposition des associations (suite)


Qualit

1:m
lve

1:n
Assiste

Cours

L attribut multivalu fait partie de la cl


Elve (Nom, )
Cours (Code, )
Assiste (Nom, Code_cours, Qualit)

23/30

Conclusion
Modlisation simple du monde rel
Transposition relationnelle automatisable
Outils d aide la conception E/A disponibles
sur le march

24/30

TD : base Speedo Finn


participant

Heritage

Equipier
profession

num
nom_partic ipant
prenom_participant

Skipper

1,n
engag

dirig e

role
Epreuve
date
port1
port2

1,n
1,n

1,1

0,n
Classement

0,n

rang

Spons or
Nom_spons or
adresse

1,1
Bateau

Immatriculation
nom
longueur
0,n
finance

1,n

montant

25/30

TD : base Speedo Finn, schma relationnel


PARTICIPANT
NUM
<non dfini>
NOM_PARTICIPANT
<non dfini>
PRENOM_PARTICIPANT
<non dfini>

EQUIPIER
NUM
NOM_PARTICIPANT
PRENOM_PARTICIPANT
PRO FESSION

<non dfini>
<non dfini>
<non dfini>
<non dfini>

NUM = NUM

NUM = NUM

NUM = NUM

SKIPPER
NUM
IMM
NOM_PARTICIPANT
PRENOM_PARTICIPANT

ENG AGE
NUM
<non dfini>
DATE
<non dfini>
IMM
<non dfini>
ROLE
<non dfini>

IMM = IMM

DATE = DATE

EPREUVE
DATE
<non dfini>
PORT1
<non dfini>
PORT2
<non dfini>

<non dfini>
<non dfini>
<non dfini>
<non dfini>

IMM = IMM

IMM = IMM

BATEAU
IMM
<non dfini>
NOM
<non dfini>
LONG UEUR
<non dfini>

DATE = DATE

CLASSEMENT
DATE
<non dfini>
IMM
<non dfini>
RANG
<non dfini>

IMM = IMM

FINANCE
SPONSOR
NOM_SPONSOR
<non dfini>
ADRESSE
<non dfini>

IMM
NOM_SPONSO R = NO M_SPONSOR
NOM_SPONSOR
MONTANT

<non dfini>
<non dfini>
<non dfini>

26/30

TD : base Speedo Finn, script SQL de cration de la BD


-- ==========================================
-- Nom de la base : MODELE_1
-- Nom de SGBD
: ORACLE Version 8
-- Date de cration : 07/11/2002 19:40
-- ==========================================
-- ==========================================
-- Table : EPREUVE
-- ==========================================
create table EPREUVE
(
DATE
CHAR(10)
not null,
PORT1
CHAR(10)
null ,
PORT2
CHAR(10)
null ,
constraint PK_EPREUVE primary key (DATE)
)
/
-- ===========================================
-- Table : BATEAU
-- ===========================================
create table BATEAU
(
IMM
CHAR(10)
not null,
NOM
CHAR(10)
null ,
LONGUEUR
CHAR(10)
null ,
constraint PK_BATEAU primary key (IMM)
)
/
-- ============================================
-- Table : SPONSOR
-- ============================================
create table SPONSOR
(
NOM_SPONSOR
CHAR(10)
not null,
ADRESSE
CHAR(10)
null ,
constraint PK_SPONSOR primary key (NOM_SPONSOR)
)
/

-- ===========================================
-- Table : PARTICIPANT
-- ===========================================
create table PARTICIPANT
(
NUM
CHAR(10)
not null,
NOM_PARTICIPANT CHAR(10)
null ,
PRENOM_PARTICIPANT CHAR(10)
null ,
constraint PK_PARTICIPANT primary key (NUM)
)
/
-- ============================================
-- Table : EQUIPIER
-- ============================================
create table EQUIPIER
(
NUM
CHAR(10)
not null,
NOM_PARTICIPANT CHAR(10)
null ,
PRENOM_PARTICIPANT CHAR(10)
null ,
PROFESSION
CHAR(10)
null ,
constraint PK_EQUIPIER primary key (NUM)
)
/
-- ============================================
-- Table : SKIPPER
-- ============================================
create table SKIPPER
(
NUM
CHAR(10)
not null,
IMM
CHAR(10)
not null,
NOM_PARTICIPANT CHAR(10)
null ,
PRENOM_PARTICIPANT CHAR(10)
null ,
constraint PK_SKIPPER primary key (NUM)
)
/

27/30

-- =============================================
-- Table : CLASSEMENT
-- =============================================
create table CLASSEMENT
(
DATE
CHAR(10)
not null,
IMM
CHAR(10)
not null,
RANG
CHAR(10)
null ,
constraint PK_CLASSEMENT primary key (DATE, IMM)
)
/
-- ==============================================
-- Table : FINANCE
-- ==============================================
create table FINANCE
(
IMM
CHAR(10)
not null,
NOM_SPONSOR
CHAR(10)
not null,
MONTANT
CHAR(10)
null ,
constraint PK_FINANCE primary key (IMM, NOM_SPONSOR)
)
/
-- ===============================================
-- Table : ENGAGE
-- ===============================================
create table ENGAGE
(
NUM
CHAR(10)
not null,
DATE
CHAR(10)
not null,
IMM
CHAR(10)
not null,
ROLE
CHAR(10)
null ,
constraint PK_ENGAGE primary key (NUM, DATE, IMM)
)
/

alter table EQUIPIER


add constraint FK_EQUIPIER_HERITAGE2_PARTICIP foreign key (NUM)
references PARTICIPANT (NUM)
/
alter table SKIPPER
add constraint FK_SKIPPER_DIRIGE2_BATEAU foreign key (IMM)
references BATEAU (IMM)
/
alter table SKIPPER
add constraint FK_SKIPPER_HERITAGE_PARTICIP foreign key (NUM)
references PARTICIPANT (NUM)
/
alter table CLASSEMENT
add constraint FK_CLASSEME_LIEN_15_EPREUVE foreign key (DATE)
references EPREUVE (DATE)
/
alter table CLASSEMENT
add constraint FK_CLASSEME_LIEN_16_BATEAU foreign key (IMM)
references BATEAU (IMM)
/
alter table FINANCE
add constraint FK_FINANCE_LIEN_24_BATEAU foreign key (IMM)
references BATEAU (IMM)
/
alter table FINANCE
add constraint FK_FINANCE_LIEN_25_SPONSOR foreign key (NOM_SPONSOR)
references SPONSOR (NOM_SPONSOR)
/
alter table ENGAGE
add constraint FK_ENGAGE_LIEN_47_EQUIPIER foreign key (NUM)
references EQUIPIER (NUM)
/
alter table ENGAGE
add constraint FK_ENGAGE_LIEN_48_EPREUVE foreign key (DATE)
references EPREUVE (DATE)
/
alter table ENGAGE
add constraint FK_ENGAGE_LIEN_49_BATEAU foreign key (IMM)
references BATEAU (IMM)
/

28/30

TD : base Xtlcom

29/30

TD : base Xtlcom, schma relationnel

30/30