Problème de conception BD (XOR)

Résolu/Fermé
tamashino Messages postés 132 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 22 juin 2020 - 19 juin 2020 à 10:09
tamashino Messages postés 132 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 22 juin 2020 - 22 juin 2020 à 09:23
Bonjour,
J'ai un petit problème :
J'aimerais enregistrer en BD les différents mails envoyés aux clients.
Ce mail devra être lié soit à une personne, soit à une notification, soit à plein de choses autres

Je n ai pas envie d'avoir dans ma BD les champ notif_id, person_id, truc_id etc etc

J ai donc pensé à faire un champ provider (un string égal à "notification" ou à "personne" ou à "truc")
Puis un champ provider_id qui pointe soit sur la table "notif", soit sur "person" soit sur "truc"

Mais askip, c'est pas ouf
Donc comment faire ?



Merci

2 réponses

yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
19 juin 2020 à 11:04
bonjour, qu'est-ce qui t’empêche de faire comme tu as envie?
1
tamashino Messages postés 132 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 22 juin 2020 25
19 juin 2020 à 13:52
J'aurais aimé avoir quelque chose de plus conventionnelle/scolaire
Je suppose qu'une methode est déjà prévu face à ce genre de probleme, mais je ne la connais pas
0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
Modifié le 19 juin 2020 à 14:59
pourquoi n'as-tu pas envie d'avoir dans ta BD les champ notif_id, person_id, truc_id etc etc ?
une alternative serait d'avoir des tables supplémentaires qui enregistrent les liens.

je suppose qu'il s'agit d'une base de données relationnelle, est-ce exact?
0
tamashino Messages postés 132 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 22 juin 2020 25 > yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024
Modifié le 22 juin 2020 à 09:24
Je me suis mal exprimer :
"Je n'ai pas envie d'avoir dans ma Table** les champs notif_id, person_id, truc_id etc etc"

=> Parce qu'à terme, la table deviendrait beaucoup trop grande

Oui, j ai pensé à faire plusieurs tables qui enregistrerais les liens
Mais du coup, quelle est la meilleur méthode ?

D'un coté, un champ provider et provider_id : Pas vraiment conventionnelle
Peut même etre source de grosses erreurs (puisque ce n'est pas un vrai lien... une clé etrangère ne devrait pas pointer sur plusieurs tables...)

D'un autre coté, une table par lien :
Mais... ca implique la creation de beaucoup de tables... juste pour lier des mail à d'autre champs...

J'esperais qu'il existe une autre solution
Tant pis
Merci beaucoup d'avoir pris le temps de me répondre
0