19.02.2015 Views

Conception logique d'une base de données relationnelle objet

Conception logique d'une base de données relationnelle objet

Conception logique d'une base de données relationnelle objet

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

G.5 Représentation <strong>de</strong>s types d’associations binaires 7<br />

G.5.1<br />

Types d’associations un-à-plusieurs (1:N)<br />

Examinons d’abord une <strong>de</strong>s structures les plus classiques : un type d’associations<br />

1:N dont chaque type d’entités possè<strong>de</strong> un i<strong>de</strong>ntifiant primaire (figure G.5). La<br />

traduction (a), traditionnelle, est celle qui vient immédiatement à l’esprit. On trouvera<br />

cependant assez fréquemment la traduction (b), qui utilise ne concept nouveau<br />

<strong>de</strong> clé étrangère multivaluée sous forme d’un tableau <strong>de</strong> valeurs <strong>de</strong> Matricule, dont la<br />

taille a été fixée arbitrairement à 100, et dont les valeurs doivent être uniques. On<br />

spécifie cette clé étrangère en indiquant que chaque valeur <strong>de</strong> Matricule (notée Matricule[*])<br />

constitue une référence à la table EMPLOYE. Rappelons qu’il peut être intéressant<br />

<strong>de</strong> représenter un type d’associations 1:N par une table association (section<br />

18.4). Pour <strong>de</strong>s raisons <strong>de</strong> place, nous ne reprendrons pas cette technique dans la<br />

figure G.5.<br />

DEPARTEMENT<br />

NomDepart<br />

Localisation<br />

id: NomDepart<br />

0-N occupe 1-1<br />

EMPLOYE<br />

Matricule<br />

Nom<br />

id: Matricule<br />

DEPARTEMENT<br />

NomDepart<br />

Localisation<br />

id: NomDepart<br />

EMPLOYE<br />

Matricule<br />

Nom<br />

NomDepart<br />

id: Matricule<br />

ref: NomDepart<br />

DEPARTEMENT<br />

NomDepart<br />

Localisation<br />

Matricule[0-100] array<br />

id: NomDepart<br />

ref: Matricule[*]<br />

EMPLOYE<br />

Matricule<br />

Nom<br />

NomDepart<br />

id: Matricule<br />

(b)<br />

(a)<br />

Valeurs <strong>de</strong> DEPARTEMENT.Matricule uniques<br />

DEPARTEMENT<br />

NomDepart<br />

Localisation<br />

Matricule[0-100] array<br />

id: NomDepart<br />

ref: Matricule[*]<br />

DEPARTEMENT.Matricule<br />

inverse <strong>de</strong> EMPLOYE.NomDepart<br />

EMPLOYE<br />

Matricule<br />

Nom<br />

NomDepart<br />

id: Matricule<br />

ref: NomDepart<br />

(c)<br />

Valeurs <strong>de</strong> DEPARTEMENT.Matricule uniques<br />

DEPARTEMENT<br />

NomDepart<br />

Localisation<br />

EMPLOYE[0-100] array<br />

Matricule<br />

Nom<br />

id: NomDepart<br />

id': EMPLOYE[*].Matricule<br />

id(EMPLOYE):<br />

Matricule<br />

(d)<br />

Figure G.5 - Expression d’un type d’associations 1:N<br />

© J-L Hainaut - 2009<br />

Le schéma (b) peut sembler étonnant à première vue, mais peut se comprendre<br />

comme suit. D’une part, l’usage d’une référence basée sur un i<strong>de</strong>ntifiant d’<strong>objet</strong><br />

offre <strong>de</strong>s possibilités intéressantes, dont le mo<strong>de</strong> <strong>de</strong> désignation navigationnel fléché<br />

"->" décrit à la section 9.6.6. D’autre part, l’approche orientée <strong>objet</strong> est par nature<br />

plus procédurale et navigationnelle que l’approche <strong>relationnelle</strong>, intrinsèquement<br />

déclarative (SQL permet <strong>de</strong> spécifier les propriétés <strong>de</strong>s données à extraire en ignorant<br />

la manière d’y accé<strong>de</strong>r). Le programmeur OO accè<strong>de</strong> aux employés d’un département<br />

par une construction orientée, différente <strong>de</strong> celle <strong>de</strong> l’accès inverse (la

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!