I’m working on a social networking system that will have comments coming from several different locations. One could be friends, one could be events, one could be groups–much like Facebook. What I’m wondering is, from a practical standpoint, what would be the simplest way to write a comments table? Should I do it all in one table and allow foreign keys to all sorts of different tables, or should each distinct table have its own comment table? Thanks for the help!
I’m working on a social networking system that will have comments coming from several
Share
A single comments table is the more elegant design, I think. Rather than multiple FKs though, consider an intermediate table – CommentedItem. So Friend, Event, Group, etc all have FKs to CommentedItem, and you create a CommentedItem row for each new row in each of those tables. Now Comments only needs one FK, to CommentedItem. For example, to get all Comments for a given Friend: