Comments on many tables database design issue

后端 未结 5 909
予麋鹿
予麋鹿 2021-01-07 05:57

I have tables:

Articles{...}
Recipes{...}
Notifications{...}
Photos{...}

And I need to implement \'user comments\' feature (like facebook).

5条回答
  •  抹茶落季
    2021-01-07 06:43

    That depends on how your application will be using comments.

    My guess is that you'll frequently want to pull up all the comments a user has created regardless of the entity that they are commenting on. That is, I assume you'll frequently want a query that returns rows indicating that user JohnDoe commented on Article 1, then Photo 12, then Recipe 171. If that's the case, then it would make far more sense to have a single Comments table with a structure similar to what Steve Mayne has suggested with the CommentableEntity table.

    On the other hand, if you would only be accessing the comments for a particular item (i.e. all comments for Article 1), separate ArticleComments and PhotoComments tables may be more appropriate. That makes it easier to have foreign keys between the entity table and the comment table and is potentially a bit more efficient since it's a poor man's partitioning. Of course, as soon as you start having to combine data from multiple comment tables, this efficiency goes away so you'd need to be reasonably confident about the use cases.

提交回复
热议问题