Download - UML Merise

Transcript
Page 1: UML Merise

Le Modèle Entité-Association (et UML)

et les Bases de Données Relationnelles

Didier DONSEZUniversité Joseph Fourier

PolyTech’Grenoble - LIG/ADELE

[email protected]

[email protected]

http://www-adele.imag.fr/users/Didier.Donsez/cours

Page 2: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

72

Motivations

� Modèle Entité/Association (Entity/Relationship)

• point de départ aux MCD de nombreuses méthodes

• Merise, OMT, UML, …

• extension objet (héritage)

� Modèle Relationnel

• modèle de base pour les SGBDs relationnels

• >70 % des applications SI

• théorie de la normalisation

• suppression des redondances

• mais il faut déterminer toutes les dépendances fonctionnelles

� Transformation E/A vers le Relationnel

Page 3: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

73

Modèle Entité-Association E/A [Chen76]

Entity-Relationship Model E/R

� Concepts de Base

• Type d ’Entité (Entity Set)

• Type d ’Association (Relationship Set)

• Attribut (Attribute)

• Clé (Key)

� Base pour de nombreux autres méthodologies

• Merise, OMT, Booch, …, Diagramme de classes UML (1 & 2)

Suivre CoursEtudiant

numss nom adresse année code titre heures

Etudiant Cours

numss

nom

adresse

code

titre

heure

0..n 0..n

Suivre

année

Page 4: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

74

Les Clés

� Une entité a une et une seule clé

� même si plusieurs clés sont candidates

• les attributs clé sont soulignés

Cours

formation intitulé salle heure

Cours

formation intitulé salle heure

Page 5: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

75

Choisir une Clé

� Naturelle (Natural)

• Attribut seul ou composition d ’attributs

• doit toujours être renseigné (NOT NULL)

• Remarque : Attribut clé représentant une composition

ISBN : numéro intl d ’éditeur + numéro d ’ouvrage

GENCOD, EAN, SKU : numéro intl de fabricant + numéro de produit

• clé d ’une entité faible

� Artificielle (Surrogate)

• introduction d ’un attribut artificiel n ’appartenant pas au

système décrit.

• performance en comparaison

• compacité du stockage

souvent employé pour les bases décisionnelles

Page 6: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

76

BA BABA

Cardinalités des AssocationsMultiplicity of Relationships

Many-to-manyN-M

0,n - 0,n

Many-to-oneN-1

0,n - 0,1

One-to-one1-1

0,1 - 0,1

A BRA BR A BR

A B0..n 0..n

A B0..n 0..1

A B0..1 0..1

E/A

UML

Page 7: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

77

Associativité Many-to-One

Encadrantde Stage

Etudiants Enseignants

Se lit : « Un enseignant encadre

plusieurs étudiants »

Se lit : « Un étudiant est encadré

que par un enseignant »

Page 8: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

78

EnseigneEtudiants TDs

Assistants

numss nom adresse

numemp nom bureau

codcours titre coef

Association n-Aire

• Plusieurs entités peuvent participer à la même associations

� Exemple d ’un association ternaire

Page 9: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

79

Modèle Entité-Association

Entity-Relationship Model

Suivre CoursEtudiants

année

Suivre CoursEtudiants

année

Année

Page 10: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

710

Rôles dans une association

Couple

Personne

époux épouse

époux épouse

Joseph MarieSanson Dalida

Ami

Personne

1 2

1 2

Pierre PaulPaul Jean

Rôles asymétrique / symétrique

Page 11: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

711

Les Entités Faibles (Weak Entity)

� Parfois, un attribut de la clé d ’une entité (dite faible)provient d ’une autre entité

� Exemple

� Remarque• Certains attributs clés sont composés et forme la clé d’une entité faible

• ISBN, GENCOD, EAN, SKU, IBAN, …

@Logins Machines

nom nom

Marque

nom

Instance deProduit

nserie

fabriquerModèle

code

Page 12: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

713

Transformation E/A vers Relationnel

� But

• Implantation du modèle E/A sur un SGBD réel

� Méthode

• transformation

des associations n-aires en associations binaires

• 1 entité = 1 relation

• 1 association = dépendant de sa cardinalité

� Cas de navigation restriente

Employénempnomsal

Servicenomadr

1..n 1

appartient >

Page 13: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

714

Cas général : Association Many-to-Many

Many-to-Many

N-M

A BR

ka aa kb bbcc

A ka aa

... ...

B kb bb

... ...

R ka kb

... ...

cc

...

create table A (

ka …, aa …,

primary key(ka)

)

create table R (

ka …, kb …, cc …,

primary key(ka,kb),

foreign key (ka) references A,

foreign key (kb) references B

)

create table B (

kb …, bb …,

primary key(kb)

)

A B

ka

aa

kb

bb

0..n 0..n

B

cc

Page 14: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

715

Cas d ’une Association Many-to-One

A BR

ka aa kb bbcc

A ka aa

... ...

B kb bb

... ...

R ka kb

... ...

cc

...

A ka aa

... ...

B kb bb

... ...

kb

...

cc

...

Many-to-One

N-1

create table A (ka …, kb …, aa…, cc …,primary key(ka),foreign key (kb) references Bcheck(cc IS NULL

OR kb IS NOT NULL))

create table B (kb …, bb …,primary key(kb))

Coût des jointures !

A B

ka

aa

kb

bb

0..n 0..1

B

cc

Page 15: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

716

Cas d ’une Association One-to-One

A ka aa

... ...

B kb bb

... ...

R ka kb

... ...

cc

...

A ka aa

... ...

B kb bb

... ...

kb

...

cc

...

One-to-One

1-1

A BR

ka aa kb bbcc

A ka aa

... ...

B kb bb

... ...

ka cc

... ...

A B

ka

aa

kb

bb

0..1 0..1

B

cc

Coût des jointures !

Page 16: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

717

� Rôle symétrique et One-To-One

• quel est le danger de cette modélisation ?

A R

ka aa cc

rôle1

rôle 2 A ka aa

... ...

R krole1

...

A ka aa

... ...

cc

...

krole2

...

cc

...

Rôle Symétriqueet One-to-One

create table A (

ka …, aa …,

primary key(ka)

)

create table R (

krole1 …, krole2 …, cc …,

primary key(krole1, krole2),

foreign key (krole1) references A,

foreign key (krole2) references A

)

krole2

...

Cas d ’une Association avec des Rôles

Page 17: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

718

Cas de l ’entité faible (Weak Entity)

� Cas de l’aggrégation en UML

A ka aa

... ...

B kb bb

... ...

kb

...

cc

...

B

ka aa kb bbcc

A RR

create table A (

ka …, kb …,

aa…, cc …,

primary key(ka,kb),

- - différent du cas N-to-1

foreign key (kb) references B

)

create table B (

kb …, bb …,

primary key(kb)

)

A B

ka

aa

kb

bb

0..n 0..1

B

cc

Page 18: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

719

Cas de navigation restreinte

� La navigation est unidirectionnelle

� Exemple

Hotel

nomadr

Clientnomadr

Héberge

Page 19: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

720

Exercicesde transformation E/A vers Relationnel

� Exercice 1

• transformez les cas de l ’entité faible avec 3 tables A,

B, R

� Exercice 2

• transformez le schéma suivant• attention à l ’ordre des noms

DomainesPrimaires

nom

@Machines

nom

@Domaines

Secondaires

nom

Page 20: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

721

Exercicesde transformation E/A vers Relationnel

� Exercice 3

• transformez le schéma suivant

#client

nomClient

∈∈∈∈

Modèle

#serie sav #mod design

Produit R∈∈∈∈

Préfère

Marque

#mar nomcc

R∈∈∈∈

Date

date

Page 21: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

723

Emp nemp

100200

nom

DupondDurant

Employé Cadre

nemp nom primesal

sal

500020000

Cadre nemp

200

prime

10000

Emp nemp

100

nom

Dupond

sal

5000

Cadre nemp

200

prime

10000

nom

Durant

sal

20000

Le Cas des Sous Entités (i)

1 - Separation

2 - Push down

Cadre.nemp est une clé étrangère sur Emp

CI : {Emp.nemp}∩∩∩∩ {Cadre.emp} = ∅∅∅∅

Empl Cadre

nemp

nom

sal

prime

Page 22: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

725

Employé Cadre

nemp nom primesal

Emp nemp

100200

prime

NULLNULL10000

nom

DupondDurant

sal

500020000

Le Cas des Sous Entités (ii)

3 - Push Up

Empl Cadre

nemp

nom

sal

prime

Page 23: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

727

1

2

3

Le Cas des Sous Entités (iii)

� Inconvénients

• Jointure pour reconstituer Cadre

• Union pour reconstituer Employé

• Pas de distinction entre un Employée

et un Cadre avec une prime NULL

• en général, pas d ’abstraction dans les Traitements

Page 24: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

728

Employé Cadre

nemp nom primesal

Amélioration du Cas 3 - Push Up

Emp nemp

100200

prime

NULLNULL10000

nom

DupondDurant

sal

500020000

4typemp

EMPCAD

Emp typemp

EMPCAD

Emp.typemp est une clé étrangère

CI : Emp.typemp =EMP ⇒⇒⇒⇒ prime=NULL

Emp nemp

100200

prime

NULLNULL10000

nom

DupondDurant

sal

500020000

5typemp

EMPCAD

Domaine typemp, CD typeemp IN (EMP,CAD)

CI : Emp.typemp =EMP ⇒⇒⇒⇒ prime=NULL

Empl Cadre

nemp

nom

sal

prime

Page 25: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

730

Entité Abstraite

� Employé : entité abstraite (notion dans Java, C#, C++, UML, ...)

• pas de tuple (instance) Employé

Emp nemp

100200

prime

NULLNULL10000

nom

DupondDurant

sal

500020000

typemp

OUVCAD

Domaine typemp

CD typeemp IN (OUV,CAD)CI : Emp.typemp !=CAD ⇒⇒⇒⇒ prime=NULL

CI : Emp.typemp !=OUV ⇒⇒⇒⇒ equipe=NULL

equipe

NuitNULLNULL

Employé

Cadre

nemp nom

prime

sal Ouvrier equipe

Page 26: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

732

Transformation E/A vers Relationnel

L ’évolution de Schéma

� Inconvénients

• Ajout d ’une sous entité Dirigeant

• Impacts

sur le schéma

sur les contraintes d ’intégrité

sur les contraintes de domaines

sur les traitements

� Solution : l ’Objet-Relationnel ou l ’Objet Pur

Employé Cadre

nemp nom primesal

Département

Dirigeant

Page 27: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

733

Transformation E/Avers l ’Objet-Relationnel

� But

• Implantation du modèle E/A

sur un SGBD Objet-Relationnel

� Fonctionnalités disponibles

• pour les Sous-Entités

• Héritage de Type et Héritage de Table

• pour les Associations

• table indépendante ou collection imbriquée (tableau dimensionnable,

table imbriquée)

• clé étrangère ou référence d ’objet

• nombreuses solutions [Soutou99] pp84,93,103-105

Page 28: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

734

Héritage

� Héritage de Table

Mettre en correspondance les Sous-Entités avec des Sous

Tables

� Héritage de Type

• Même problème que pour le relationnel pur

• Utilisation des sous types dans le Push-Down

Page 29: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

735

Cas général :Association Many-to-Many (i)

Many-to-Many

N-M

A BR

ka aa kb bbcc

A ka aa

... ...

B kb bb

... ...

R ra rb cc

...

create type tA as object (

ka …, aa …,

);

create table A of tA (

primary key(ka)

);

create table R (

ra REF(tA), rb REF(tB),

cc …,

primary key(ra,rb),

SCOPE FOR ra IS A,

SCOPE FOR rb IS B

);

create type tB as object (

kb …, bb …,

);

create table B of tB (

primary key(kb)

);

A B

ka

aa

kb

bb

0..n 0..n

B

cc

Page 30: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

736

Cas général :Association Many-to-Many (ii)

Many-to-Many

N-M

A BR

ka aa kb bb

A ka aa

... ...

B kb bb

... ...

{ras}{rbs}

create type tB as object;

create type tA as object(

ka …, aa …,

rbs varray(10) of REF(tB),

);

create table A of tA (

primary key(ka),

);

create or replace type tB

as object (

kb …, bb …,

ras varray(10) of REF(tA),

);

create table B of tB (

primary key(kb)

);

Attention à la mise

à jour des listes de refs

=> risque d ’incohérence

A B

ka

aa

kb

bb

0..n 0..n

Page 31: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

737

Cas général :Association Many-to-Many (ii)

Many-to-Many

N-MA ka aa

... ...

B kb bb

... ...

{ras}

create type tA as object(

ka …, aa …

);

create table A of tA (

primary key(ka),

);

create type tB as object (

kb …, bb …,

ras varray(10) of REF(tA)

);

create table B of tB (

primary key(kb)

);

En UML: sens unidirectionnel de navigation (B vers A)

A B

ka

aa

kb

bb

Page 32: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

738

Cas général :Association One-To-One

One-To-One

1,1

A BR

ka aa kb bb

A ka aa

... ...

B kb bb

... ...

rarb

create type tB as object;

create type tA as object (

ka …, aa …, rb REF(tB)

);

create table A of tA (

primary key(ka),

SCOPE FOR rb IS B

);

create or replace type tB as object (

kb …, bb …, ra REF(tA)

);

create table B of tB (

primary key(kb),

SCOPE FOR ra IS A

);

Page 33: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

739

Bibliographie

� Roger Mounyol, "Merise par l'Exemple", Ed Ellispes, 1991, ISBN 2-7298-9114-5

� Chris Date, "Introduction aux Bases de Données", 6ème édition, Ed Intl Thomson Publ. ISBN 2-84180-964-1, 970 pp

� Jeffrey D. Ullman, Jennifer Widom, "A First Course in Database Systems", 1ère édition, Ed. Prentice Hall Engineering, Science & Math, Avril 1997, ISBN 0-13-861337-0, 470 pp.

� PPS Chen. The Entity-Relationship model toward a unified view of data. ACM Transactions on Database Systems, March 1976.

� Michael Blaha, William Premerlani. Object-Oriented Modeling and Design for DatabaseApplications, Prentice Hall, Englewood Cliffs, New Jersey, 1998.

• http://www.omtassociates.com/Pages/papers.html

� Christian Soutou, "Objet-Relationnel sous Oracle8, Modélisation avec UML", Ed Eyrolles, 1999, ISBN 2-212-09063-3

• décrit bien les alternatives de conception des associations avec l ’objet-relationnel et avec le relationnel

� Christian Soutou, "De UML à SQL : Conception de bases de données", Ed Eyrolles, 2002, ISBN 2-212-11098-7

• La mise à jour du précedent

� Using UML to Design Database Applications• http://www.umlchina.com/Indepth/usinguml.htm

• http://www.intelinfo.com/newly_researched_free_training/UML.html

Page 34: UML Merise

25/09/2007D

. D

on

se

z, E

A e

t B

D,

19

98

-200

740

Annexe : Zoo de méthodes

dépendances d’après HDR Bruel