社交网络 - 收集重新分享帖子的最佳策略是什么

时间:2014-01-10 12:07:38

标签: php mysql social-networking

我正在开发一个社交网络数据库(MySQL),用户可以在其中重新分享其他帖子。每个用户都可以跟随其他用户,因此其他用户将看到他/她自己的帖子以及由该用户重新共享的帖子(引用原始帖子)按日期排序(重新共享或发布)。

我为此考虑了两个 Table 设计:

设计1.使用2个表

posts_tbl

  • id(Primary,A_I)
  • owner_id(对id的{​​{1}}字段的引用)
  • last_update(timestamp)
  • time_created(timestamp)

users_tbl

  • id(Primary,A_I)
  • src_owner_id(对reshares_tbl的{​​{1}}字段的引用)
  • resharer_id(对id的{​​{1}}字段的引用)
  • src_post_id(对users_tbl的{​​{1}}字段的引用)
  • reshare_time

在此设计中,重新分享帖子后,会在id添加一行。

设计2.使用1表

users_tbl

  • id(Primary,A_I)
  • owner_id(对id的{​​{1}}字段的引用)
  • 类型(转发或发布)
  • src_id (如果type = reshared,则对posts_tbl的原始帖子reshares_tbl字段的引用)
  • last_update(timestamp)
  • time_created(timestamp)

在此设计中,在转发帖子后,会在posts_tbl添加一行。


哪种设计更好?有没有更好的方法呢?

注意:PHP用于后端开发。

1 个答案:

答案 0 :(得分:1)

采用第二种方法。但是,您不需要type。只需检查src_id(我打电话给parent_id(也许某人正在转发转发后的帖子))不是0.发布父ID为0的原始帖子,这意味着它是原始发布的帖子

如果parent_id的值不是0,那么它将是原始帖子的ID,它是转发后的帖子。通过添加一种类型(至少如果您只有两种类型的帖子来确定它是原始帖子还是转发的帖子),您就会创建冗余,在任何情况下都应该避免。