KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Lundi 12 mai 2008 - 11:37:38

Dilème sur la structure d'une base de donnée

Rechercher : dans
Dilème sur la structure d'une base de donnée
par marcmendez
 Fil de Discussions
Statut : Non résolu
vendredi 9 mai 2008 à 18:16:05
Bonjour,

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 !
Répondre à marcmendez  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par macgawel, le vendredi 9 mai 2008 à 19:13:24 Fil de Discussions
Bonjour.

- Si tu as beaucoup de relations N-N dans ton schéma, c'est peut-être parce qu'il faut le revoir.
Avant de te lancer dans des "bidouillages", ça pourrait être une bonne idée de réfléchir à ton modèle.

Sur l'acceptabilité, tout dépend de ce que tu fais...
Ce n'est pas acceptable si tu veux rester dans les clous (BDD normalisée).
En pratique (entre autres pour des raisons de performances) on "dénormalise" souvent un minimum.
Et ça dépend aussi de la taille et de l'utilisation de ta BDD (si c'est une petite base à usage local, on n'a pas les mêmes contraintes que pour une base professionnelle)

donc ton idée de rajouter une clé dans ta table de liaison peut être intéressante, sous réserve.
Répondre à macgawel

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par marcmendez, le vendredi 9 mai 2008 à 20:43:24 Fil de Discussions 
C'est "peut-être" parce que je suis "justement" en train, non pas de reprendre, mais de concevoir la base que je me pose la question..... ;)

Afin d'éviter les erreurs de conception de la version précédente réalisée "à l'arrache" par qq'un d'autre, je suis en train de commencer à réfléchir à l'analyse (qui n'a jamais été faite et en tout cas, pas ou peu validée...) , bref, tout ce qu'il ne faut pas faire... mais la personne a de très grosses circonstances atténuantes, et je ne lui en ferai pas les reproches.
Mais c'est une autre histoire.

Pour précision, ce n'est pas que j'ai beaucoup de relation N-N, mais il se trouve que le "coeur" de la structure est basée sur une table intermédiaire... Donc je vais partir déjà avec une clef primaire de 2 colonnes. Et je crains, ce qui serait normal ou en tout cas illusoire de penser le contraire, qu'il y ait d'autres tables intermédiaires qui viennent "récupérer" cette clef en plus, donc augmenter le nombre de colonnes.

L'application est locale (MySql + PHP). La version actuelle de la base doit contenir moins de 100 tables pour 15 à 30 utilisateurs. Mais elle est très incomplète et je pense que je n'aurai pas à pousser beaucoup pour exploser cette limite.

Quant à la dénormalisation, je n'en serai pas à ma première !

Les 2 propositions que j'ai faite ont autant d'avantage que d'inconvénient, pour l'instant, à mes yeux. Je cherche simplement à voir si l'un ou l'autre pourrait, après examen d'autres personnes, la chance de remporter le "coquetier" !
Moi, j'ai le nez dans mon MCD depuis un peu trop longtemps, et cet aspect n'est qu'un partie de l'iceberg. Pourtant, c'est une partie importante sur lequelle reposera toute l'application et je n'aimerais pas partir avec des roues... carrées !
Répondre à marcmendez
Discussions pertinentes trouvées dans le forum
05/03 18h01Pb structure base de données Open OfficeProgrammation07/03 08h325
20/01 18h03Aide structure base de données SQLWebmastering20/01 18h463
10/12 17h05POPUP Java liste base données SQL/PHPWebmastering22/02 15h5212
01/11 12h30[ACCESS 2007]désactiver mot passe base donnéeProgrammation06/11 13h181
31/10 18h40doc word à partir de 2 bases données excelBureautique13/11 22h1313
Plus de discussions sur « Dilème sur la structure d'une base de donnée » Discussion en cours Discussion fermée Problème résolu
Répondre
Titre du message :
Votre pseudo:
Votre email :
Message: 
  •  
  •  
Options: Recevoir les réponses par mail.
 

Aide