Probleme de tables

VaN
Mammouth du PHP | 1107 Messages

20 avr. 2006, 15:33

Bonjour,

je résume mon projet :
J'ai une table Contacts, et une table Mails. Mon interface permet d'envoyer des mails à une serie de contacts.
A chaque mail envoyé, j'enregistre dans ma table une ligne, avec l'id du mail, son titre, et les id des contacts visés, séparés par un point virgule ;

Comme ça, je peux savoir, lorsque je vais faire des stats sur mes mails, qui a reçu tel mail. J'aimerais maintenant egalement enregistré le fait que mon contact a publié le mail ou non. Je pourrais faire un autre champ, avec encore les id des contact qui ont publié, separés par des points virgules, mais je souhaiterais egalement enregistré combien de personnes ont lu cette annonce, pour chaque contact.

Alors une solution serait de faire une autre table, qui lie chaque mail a chaque contact, et repertorie ces infos, mais la table risque vite d'etre tres importante :

exemple : 2 mails en tout, 2 contacts en tout

mail1 | contact1 | infos relatives
mail1 | contact2 | infos relatives
mail2 | contact1 | infos relatives
mail2 | contact2 | infos relatives

Avec cette architecture, la table grandit de façon exponentielle, ce qui peut etre genant.

Des idées pour résoudre ce probleme ?

Eléphant du PHP | 353 Messages

20 avr. 2006, 15:40

annonces , mail !! je comprend pas trop ce que tu veux expliquer !!

tu envoye un mail avec un lien pour consulter un page avec une annonce ? et tu veux compter combien de personne viennent lire l'annonce ?

exprimer un peu plus clairement please !! merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

20 avr. 2006, 15:40

C'est pourtant la modélisation la plus logique

Tu as "1 mail peut-être envoyé à 1 ou plusieurs contacts"
Et "1 contact peut recevoir 1 ou plusieurs mails"

Il faut donc une relation (table intermédiaire) sur le modèle que tu as donné

Alors oui la table contiendra peut-être vite beaucoup de lignes (mais je ne vois pas en quoi elle va grandir de façon exponentielle), mais ça ce n'est pas grave.

Si dedans tu as :
id_contact integer
id_mail integer
lu tinyint (0 ou 1)
publie tinyint (0 ou 1)

Ce n'est pas ça qui va te prendre beaucoup de place
Il ne faut pas avoir peur d'une table avec beaucoup de ligne, c'est souvent le cas des relations.
De toute façon, à moins que j'ai mal lu ton problème, c'est la meilleure solution.

VaN
Mammouth du PHP | 1107 Messages

20 avr. 2006, 16:28

annonces , mail !! je comprend pas trop ce que tu veux expliquer !!

tu envoye un mail avec un lien pour consulter un page avec une annonce ? et tu veux compter combien de personne viennent lire l'annonce ?

exprimer un peu plus clairement please !! merci
j'envoie un mail à une serie de contact, chacun ayant un site web sur lesquels les informations de mon mail seront annoncées. Je recupere ensuite combien de fois l'annonce a été vue sur chacun de ces sites, et je l'enregistre.

Vu qu'il semble que la solution des tables de lien mail/contact soit la plus simple, je vais faire comme ça.

merci.