2012-08-04 44 views
5

我想知道,
在许多网站有选择喜欢/不喜欢的职位。
甚至在这里,当然,在stackoverflow。数据库设计:喜欢的桌子?

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

user_id post_id 

USER_ID - 谁投
POST_ID - 这帖子是它

是怎么回事?
大喜欢表吗?
是不是有更高效/复杂的东西?

+0

你认为这是一张大桌子的基础是什么? – 2012-08-04 12:32:01

+0

如果您需要保留关于谁喜欢/不喜欢帖子的信息,那是您需要存储的最小数据量。 – JJJ 2012-08-04 12:33:02

回答

5

在最基本的层面上,是的,就是这样。

但随后开始扩张,试图回答这样的问题:

  • 多少钱的用户喜欢这个岗位?
  • 他们什么时候喜欢这篇文章?
  • 他们是怎么找到帖子的?
  • 他们对帖子发表了评论吗?
  • 如何整组/社区类的职位

然后你开始想回答更多关于在朋友和社会各界深入的问题。

1

我想我能理解你的关心。每次需要呈现页面时都必须发出COUNT()。

您当然必须拥有这个基本的表,这将成为COUNT()的基础,但您并不需要为每次访问都COUNT()。

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

我会说每种方法都更多地针对不同的网站个性,即更多的阅读或更多的作品,但你已经知道,当谈到喜欢或不喜欢什么是不可见的。

+0

所以几乎, 假设我有一个可以喜欢的邮政表。 它应该有一个字段“likes_counter”来计算喜欢的数量,所以我不必使用COUNT()。对? – socksocket 2012-08-04 15:21:50

+0

正确。使用目标表,向其添加列是一种在服务器中保存额外表的方法。如果你被允许改变目标表的结构,那很好。如果没有,则创建一个包含两列的单独表格:targetTableName,totalLikes。 我想你可以完全访问数据库。我的注意力集中在关注不同的设计方案。 – 2012-08-04 16:31:18