Vous êtes sur la page 1sur 30

Modlisation Entit/Association

bogdan.cautis@telecom-paristech.fr

1/30

La phase de design dune BD


Analyse des besoins Design conceptuel
Modle EA, UML

Design logique
normalisation de schma

2/30

Modle Entit/Association (ER)


Entit
similaire la notion dobjet, reprsente une chose du monde rel

Type dentit
similaire la notion de classe, dfinit la structure commune dun Nom ensemble dentits

Proprit
atomiques

ID

Tlphone

Diagramme ER
Type dentit --> rectangle Proprit --> ovale
lve

Taille

3/30

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

Taille Elve
4/30

Associations
Lien entre deux ou plusieurs types dentit Diagramme ER : losange
lve Assiste Cours

Type dassociations
dfinit des liens entre des types dentit. la valeur dun type dassociation peut tre une table :
une colonne par type dentit participant lassociation une ligne pour chaque combinaison dentits 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 dentit (ou plus) peuvent tre ncessaires Exemple : liens entre Elves, Cours et TH

lve

Assiste

Cours

Reprsentation correcte
si chaque lve est tenu de participer a toutes les TH de chaque cours

Compos

TH
7/30

Exemple dassociation ternaire


Comment faire lorsque les lves sont issus de diffrentes formations et ne suivent pas tous lintgralit de chaque cours ?
Comment dterminer lemploi du temps de chaque lve ---> Besoin dune association ternaire entre lve, Cours et TH : M N

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

Servie 1:M Bire 0:1 0:M favorite 1:N Aime 0:M

frquente 0:M Buveur

11/30

Rles
Une entit peut participer plus quune fois la mme association
besoin dassocier des rles diffrents pour une entit

Mari poux Buveur pouse

poux Jean Jules

pouse Bernadette Arlette

12/30

Sous-classe
Sous-classe --> nombre dentits 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

Buveur

travaille

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 lunion des proprits quelle a dans les diffrentes classes

Hritage multiple :
Thoriquement possible Problme rsolution des conflits ?

Contraintes COVER/OVERLAPS
14/30

Entit Faible (weak entity)


Lidentifiant dune entit peut tre compos partir dune (ou plusieurs) entit forte avec laquelle lentit faible est lie Exemple : Id Login = Nom de login (unique sur chaque machine) + adresse IP de la machine Nom Login
@

Host

Nom
15/30

Dautres 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 dentit Proprit

==> Relation ==> Attribut

Proprits identifiantes ==> Cl primaire Association ==> fonction des cardinalits ?

17/30

Transposition des associations


Id_Bar priode Id_Buveur

x:1 Bar

gre

x:1

Buveur

Lidentifiant de Buveur est utilis comme cl trangre dans la relation Bar, ou inversement. Les proprits de lassociation 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 Id_Buveur

x:1 Bar habitu

x:n

Buveur

Lidentifiant de Bar est utilis comme cl trangre dans la relation Buveur. Les proprits de lassociation suivent la cl trangre
Bar(Id_Bar, ) et Buveur(Id_Buveur, , Id_Bar)
19/30

Transposition des associations (suite)


Id_Bar Id_Buveur

x:m Bar frquente

x:n

Buveur

Lassociation 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:n Personne
fait partie

1:1 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 Buveur Nom

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 Assiste

1:n
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 daide la conception E/A disponibles sur le march

24/30

TD : base Speedo Finn


participant num nom_participant prenom_participant

Equipier profession 1,n engag role Epreuve date port1 port2 1,n 1,n Classement rang

Heritage

Skipper

dirige 1,1 0,n 0,n 1,1 Bateau Immatriculation nom longueur 0,n finance 1,n montant

Sponsor Nom_sponsor adresse

25/30

TD : base Speedo Finn, schma relationnel


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

NUM = NUM

NUM = NUM

NUM = NUM

NUM DATE IMM ROLE

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

SKIPPER NUM IMM NOM_PARTICIPANT PRENOM_PARTICIPANT

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

DATE = DATE

IMM = IMM IMM = IMM

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

IMM = IMM DATE = DATE

IMM NOM LONGUEUR

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

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

IMM = IMM

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


NOM_SPONSOR = NOM_SPONSOR

IMM 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