Il existe probablement plusieurs façons de concevoir ceci tout en conservant les clés étrangères.
La première consiste essentiellement à avoir une table de commentaires pour chaque type; Garde-les séparés. Pour chaque commentaire, disposez d'une clé étrangère dans la galerie ou l'image parent, en fonction de la table.
La seconde est d'avoir une table (disons commentables) qui contient des données communes pour tout ce qui est commentable. Chaque galerie ou image possède une clé étrangère pour une ligne correspondante unique dans les commentaires. Chaque ligne de la table de commentaire est une clé étrangère à la commentable, ainsi que le texte du commentaire, date, etc.
Vous trouverez probablement ce utile de toute façon puisque vous finirez par métadonnées voulez pour la collecte des commentaires dans leur ensemble ... p.ex. pour spécifier si le commentaire est désactivé, activé pour les amis uniquement ou activé pour tout le monde.
Modifier Option 3 est comme l'option 1, mais au lieu d'avoir des tables de commentaires distincts complets pour chaque type commentable, juste avoir associatifs tableaux séparés pour chaque type commentable.
|comments| |gallery_comments| |image_comments |
-------- ---------------- ---------------
|id (pk)| |comment_id (fk)| |comment_id (fk)|
|text | |gallery_id (fk)| |image_id (fk)|
|date | ---------------- ---------------
|author |
--------
Beaucoup mieux que l'option 1 à mon avis.
Si le commentaire serait lié à un enregistrement parent auriez-vous vraiment besoin de connaître le type au niveau de commentaire? – Roadie57
@ Roadie57: Personnellement, je voudrais toujours savoir au niveau du commentaire. Cela permettrait de répondre à des questions comme "Combien de commentaires avons-nous reçu dans toutes les galeries?" beaucoup plus simple. –