数据库设计:喜欢的表?

soc*_*ket 12 mysql database postgresql database-design

我想知道,
在许多网站上都有喜欢/不喜欢帖子的选项.
当然,甚至在stackoverflow.

所以,从技术上讲,这是一个很喜欢的桌子?

user_id    post_id
Run Code Online (Sandbox Code Playgroud)

user_id - 谁投了
post_id - 哪个帖子是它

就是这样吗?
一个大喜欢的桌子?
是不是有更高效/更复杂的东西?

Bri*_*ver 13

在这是最基本的水平,是的,就是这样.

但随后它开始扩大,试图回答如下问题:

  • 用户喜欢这篇文章多少钱?
  • 他们什么时候喜欢这个帖子?
  • 他们是怎么找到这个帖子的?
  • 他们是否对帖子发表评论?
  • 整个团体/社区如何像帖子一样

然后,您开始想要回答有关朋友和社区的更深入的问题.


Gus*_*ard 6

我想我能理解您的担心。每次需要显示页面时都必须发出COUNT()。

当然,您必须具有此基本表,该表将成为COUNT()的基础,但实际上并不需要每次访问都对其进行COUNT()。

创建一个总计表并使用触发器在页面收到喜欢或不喜欢时更新它,或调用存储过程以不时更新它。

我想说的是,每种方法都针对不同的网站个性,例如更多的阅读或更多的著作,但是您已经知道,当喜欢或不喜欢时,没有什么是显而易见的。

  • 正确的。使用目标表,向其中添加列是一种在服务器中保存额外表的方法。如果允许您更改目标表的结构,那就太好了。如果没有,请创建一个单独的表,其中包含两列:targetTableName、totalLikes。我想你有数据库的完全访问权限。我的考虑只是为了引起人们对不同设计方案的关注。 (2认同)