11.10
Compléments
283
© Dunod – La photocopie non autorisée est un délit.
11.10.2Au sujet des rôles de cardinalité 1-N
Nous avons explicitement interdit d’assigner à un rôle la cardinalité 1-N au motif
que sa traduction dans un schéma de tables posait des problèmes qui dépassaient les
objectifs de cet ouvrage. Il est certain en revanche qu’une telle cardinalité est
parfois utile (le schéma de la figure 10.7 par exemple exigerait que le rôle de FOURNISSEUR soit obligatoire). Considérons le schéma de la figure 11.11 (haut), dans
lequel on indique, via la cardinalité 1-N, le fait que tout accident implique au moins
un véhicule.
Figure 11.11 - Une cardinalité 1-N se traduit par une clé étrangère exprimant l’égalité
de deux ensembles de valeurs plutôt que leur inclusion
Le type d’associations implique se traduit par la table IMPLICATION (figure 11.11,
bas), incluant deux clés étrangères dont l’une, qui référence ACCIDENT, est un peu
particulière. En effet, non seulement toute valeur de IMPLICATION.NUMACC 5 doit
se trouver parmi les valeurs de ACCIDENT.NUMACC, mais en outre, toute valeur de
ACCIDENT.NUMACC doit aussi apparaître dans IMPLICATION.NUMACC. Dit plus
clairement, les ensembles de valeurs ACCIDENT.NUMACC et IMPLICATION.NUMACC doivent être égaux, ce qu’indique le schéma via le symbole equ, en
remplacement du symbole ref.
Une clé étrangère du type equ pose deux problèmes, qui expliquent pourquoi
nous avons écarté les cardinalités 1-N. Le premier concerne la dynamique d’enregistrement d’un accident. Lors de l’insertion de la première ligne d’IMPLICATION,
le SGBD vérifiera l’existence préalable de la ligne d’ACCIDENT cible, mais lors de
l’insertion de la ligne d’ACCIDENT, il vérifiera aussi qu’il existe au moins une ligne
d’IMPLICATION de même valeur de NUMACC, ce qui bien sûr est impossible. On
pourrait donc conclure à l’impossibilité intrinsèque d’insérer des lignes d’ACCIDENT. Les tables ACCIDENT et IMPLICATION devraient donc rester
irrémédiablement vides !
Le deuxième problème est qu’il est impossible de traduire complètement ce type
de clé étrangère par un prédicat (check) ou par un déclencheur, notamment en ce qui
5. C’est-à-dire la valeur de la colonne NUMACC d’une ligne de la table ACCIDENT.
0-N
1-N
implique
VEHICULE
NumVéh
Marque
id: NumVéh
ACCIDENT
NumAcc
DateAcc
id: NumAcc
VEHICULE
NUMVEH
MARQUE
id: NUMVEH
IMPLICATION
NUMACC
NUMVEH
id: NUMACC
NUMVEH
ref: NUMVEH
equ: NUMACC
ACCIDENT
NUMACC
DATEACC
id: NUMACC
Précédent

- 283/436

Suivant