Supposons que vous souhaitiez créer une base de données pour une application Web. Cette base de données contient déjà plusieurs tables et vous devrez peut-être l'étendre dans le futur.Méthode conseillée pour une table "comment" dans une base de données relationnelle
De plus, vous voulez que l'utilisateur final puisse commenter n'importe quel type d'objet dans la base de données.
Je voudrais trouver une solution pour cela serait assez générique afin que je ne devrais pas l'étendre chaque fois que j'ajoute une nouvelle table dans la base de données.
Je pensais que des éléments suivants:
Nom de la table: commentaire
colonnes:
- id: l'id d'un commentaire
- user_id: l'id du utilisateur faisant le commentaire
- nom_table_objet: onglet le où l'objet commenté est
- objet_id: ID de l'objet commenté dans la table nom_table_objet.
- texte: le texte
- Date: la date
Ce tableau résoudre sorte de mon problème, la seule chose qui me préoccupe est que l'aspect relationnel de celui-ci est assez faible (je ne peux pas faire object_id une clé étrangère par exemple). Aussi, si un jour j'ai besoin de renommer une table, je vais devoir changer toutes les entrées concernées dans la table des commentaires.
Que pensez-vous de cette solution? Y a-t-il un motif de conception qui pourrait m'aider?
Thanks.-
Avez-vous besoin de conserver les enregistrements historiques de ces commentaires? Je ne peux pas penser à une autre raison majeure pour créer une table de commentaires séparée de toute sorte. – jwiscarson
Est-il possible d'avoir plus d'un commentaire par paire (object_table_name, object_id)? Si c'est toujours 1: 1, ajoutez simplement les commentaires en tant que colonne supplémentaire sur le nom_table_objet lui-même. Si c'est 1: N, une table séparée sera nécessaire. –