Dilème sur la structure de tables....

marcmendez
Dilème sur la structure de tables....

Bonjour,

J'ai un dileme à résoudre.
Voila l'exemple

Une table A avec une clef primaire constituée d'une seule colonne : a_id

Une table B, avec un clef primaire constituée d'une seule colonne : b_id

J'ai une relation n-n entre ces deux tables : j'ai donc une table intermédiaire dont la clef primaire est constituée des 2 clefs étrangères vers A et B.

L'exemple est simple, mais il se complique lorsque la table intermédiaire est aussi utilisée dans une autre table et ainsi de suite...
Moralité : je me retrouve avec des clefs primaire composées à tiroir !

Est-il "acceptable" de concevoir sur ma table intermédiaire :

- un index unique constitué des deux clefs étrangères vers A et B
- une clef primaire d'une seule colonne (auto incrémentée) que je référencerai donc lorsque j'utiliserai cette table dans d'autres tables.

J'hésite entre les deux choix :
- le premier me permet de retrouver directement les informations des tables A ou B, puisque la clef composée les contient. Par contre, vu la structure de mes données, je vais me retrouver avec des clefs primaires à 4 voire 5 composantes !
- le deuxième est plus simple, mais dès que je dois retrouver un info dans les tables, il faut que je "remonte" la pelote de laine pour retrouver les clefs primaires....

Args, je craque !

fredericmazue

Quote:

Est-il "acceptable" de concevoir sur ma table intermédiaire :

- un index unique constitué des deux clefs étrangères vers A et B
- une clef primaire d'une seule colonne (auto incrémentée) que je référencerai donc lorsque j'utiliserai cette table dans d'autres tables.

Ce que l'on fait en principe, c'est de créer une table intermédiaire constituée uniquement de deux clefs étrangères.
Voir par exemple ici

marcmendez

Ce que l'on fait en principe, c'est de créer une table intermédiaire constituée uniquement de deux clefs étrangères.
Voir par exemple ici

Heu, certes, mais je ne comprends pas votre réponse ! Bien sûr que ma table intermédiaire est constituée de de deux clefs étrangères. C'est le principe de base pour concevoir le MPD d'une relation N-N.
Mon problème, c'est que je fais de ces deux clefs une clef primaire (donc un clef composée). J'utilise ensuite cette nouvelle clef primaire dans d'autres relations. En restant dans la "norme", le principe est correct. Mais la complexité des informations que je manipule fait que je vais très certainement finir dans certaines relations/tables par avoir des clefs étrangères composées de 5 ou 6 colonnes !

La solution que je propose est une dénormalisation, qui, dans l'absolue doit fonctionner. Mais là où je me pose des questions, c'est de savoir les avantages et surtout les inconvénients de ce choix.