Mysql
 sql >> Base de données >  >> RDS >> Mysql

Une table vs plusieurs tables

Il peut y avoir de vraies raisons de vouloir/avoir besoin d'un seul tableau de commentaires. Par exemple, cela simplifierait la visualisation de tous les commentaires d'un utilisateur donné. De plus, les recherches dans tous les commentaires seraient plus simples (mettez un index FTS sur une table et vous avez terminé).

D'autre part, s'il n'y a pas de raison impérieuse de conserver les commentaires dans un seul tableau, il existe une troisième solution possible (et plutôt évidente).

Créez un tableau de commentaires distinct pour chaque élément (publication, événement, fichier, document). Les relations RI seraient très simples à définir et à décrire dans cette situation. De plus, si vous tapez très souvent des requêtes ad hoc, cela pourrait simplifier les choses. Par exemple

 select * from documents d left join doc_comments c 
                           on d.id = c.docid 
                           where d.id=42;

Rien de tout cela n'est peut-être pertinent ou important pour votre situation, mais cela pourrait valoir la peine d'être pris en considération.

Une pensée aléatoire supplémentaire :les deux solutions de l'OP ont la "sensation" qu'elles définissent une relation plusieurs à plusieurs (par exemple, un commentaire peut appartenir à plusieurs éléments). En supposant que ce n'est pas la situation souhaitée, elle peut être évitée avec l'index unique approprié, ... mais quand même ... elle a cette apparence initiale, qui semble pouvoir conduire à une confusion possible.