Mysql 数据库设计:喜欢的表?

Mysql 数据库设计:喜欢的表?,mysql,database,postgresql,database-design,Mysql,Database,Postgresql,Database Design,我想知道, 在许多网站上,可以选择喜欢/不喜欢帖子。 当然,即使在这里,在stackoverflow 那么,从技术上讲,这是一张大桌子 user_id post_id 用户id-投票人 post\u id-是哪个post 就这些吗? 大桌子? 难道没有更有效/更复杂的东西吗 在最基本的层面上,是的,仅此而已 但随后它开始扩展,试图回答以下问题: 用户对这篇文章有多喜欢 他们什么时候喜欢这篇文章的 他们是怎么找到这个职位的 他们对这篇文章发表了评论吗 整个团队/社区如何看待该帖子 然后

我想知道,
在许多网站上,可以选择喜欢/不喜欢帖子。
当然,即使在这里,在stackoverflow

那么,从技术上讲,这是一张大桌子

user_id    post_id
用户id-投票人
post\u id-是哪个post

就这些吗?
大桌子?

难道没有更有效/更复杂的东西吗

在最基本的层面上,是的,仅此而已

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

  • 用户对这篇文章有多喜欢
  • 他们什么时候喜欢这篇文章的
  • 他们是怎么找到这个职位的
  • 他们对这篇文章发表了评论吗
  • 整个团队/社区如何看待该帖子

然后你开始想回答关于朋友和社区的更深入的问题。

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

当然,您必须拥有这个基本表,它将是COUNT()的基础,但实际上并不需要每次访问都对其进行COUNT()

创建一个汇总表,并在页面收到“喜欢”或“不喜欢”时使用触发器对其进行更新,或者调用存储过程不时对其进行更新


我想说的是,每种方法都更适合不同的网站个性,即更多的阅读或更多的写作,但你已经知道,当涉及到喜欢或不喜欢时,没有什么是可以预见的。

你基于什么假设这是一个大表?如果你需要保留关于谁喜欢/不喜欢某个帖子的信息,这是您需要存储的最小数据量。因此,实际上,假设我有一个喜欢的Post表。它应该有一个字段“likes\u counter”,用于计算likes的数量,这样我就不必使用count()。对吧?对。使用目标表,向其中添加列是在服务器中保存额外表的一种方法。如果允许您更改目标表的结构,那就太好了。如果没有,则创建一个单独的表,该表将包含两列:targetTableName、TotalIkes。我想你可以完全访问数据库。我的考虑是提醒人们注意不同的设计方案。