Salut à tous,
je gère une base de donnée (exploité par PHP) pour mon site Internet.
Dans cette base, il y a plusieurs tables :
- association
- commerce
- etc...
Je dois créer une table qui contient la liste des manifestations qui se dérouleront prochainement.
Pour cela, il y aura les champs :
- id
- titre
- texte
- date_debut
- date_fin
- heure (a voir)
- organisateur
C'est sur le champ organisateur qu'il y a un problème. Je voudrai qu'il puisse faire la relation avec la clé primaire de 'association' ou la clé primaire de 'commerce'.
Je sais faire une relation simple (un champ lié à un autre champ d'une autre table) mais je ne sais pas lier un champ à plusieurs champs de plusieurs tables.
Je ne sais même pas si c'est faisable.
Pouvez vous m'éclairer ?
Merci.
PS : mes tables sont au format InnoDB
# Table intermediaire
Posté par Pooly (site web personnel) . Évalué à 2.
Et lá pas de manip sous innoDb, ce n'est pas supporté.
Sinon, tu ajoutes un champ organisateur_asso et un champ organisateur_commerce qui peuvent etre nul. Ensuite, tu les déclare tous les deux en clés étrangeres.
Sinon y'a-t-il un SGBDOO libre ? (je suis resté a MySQL, et je connais les possibilites de PostGreSQL)
[^] # Re: Table intermediaire
Posté par spongurex . Évalué à 2.
C'est la solution actuellement utilisée. Mais puisque je réorganise le site en profondeur (changement du moteur du site), et que la base de données évolue fortement, je me suis dis que ce serai plus propre un seul champ.
[^] # Re: Table intermediaire
Posté par Pooly (site web personnel) . Évalué à 1.
# une solution parmi d'autres
Posté par Nap . Évalué à 2.
tu fais une table 'personne' ou 'interlocuteur' ou ce que tu veux
dedans tu comptabilises tous les interlocuteurs (commerces et associations), via un id, et, si tu veux, un nom. Ensuite, dans tes tables association et commerce, tu utilises comme id pour les entrées leur id de la table 'interlocuteur'.
Dans ta table manifestation, la clé organisateur se réfère à la clé primaire de la table 'interlocuteur'.
Pour savoir s'il s'agit d'un commerce ou d'une association, tu cherches si l'id est présent dans la table commerce ou dans la table association.
Ma solution a de nombreux problèmes : impossible de s'assurer qu'un élément présent dans 'interlocuteur' est présent dans l'une des deux tables ? Ni de s'assurer qu'un élément présent dans association n'est pas présent dans commerce.
C'est les limites de MySQL...
[^] # Re: une solution parmi d'autres
Posté par Hardy Damien . Évalué à 2.
Ou plus généralement du relationnnel non ?
C'est la qu'on peut faire appel a des bases objets ...
Dam
[^] # Re: une solution parmi d'autres
Posté par Pooly (site web personnel) . Évalué à 1.
mais pas de polymorphisme la dessus :)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.