【问题标题】:Database / Schema structure to build a Wall system建立Wall系统的数据库/Schema结构
【发布时间】:2011-06-17 12:28:36
【问题描述】:

我一直在研究如何用PHP搭建一个类似FB的墙系统。

我们计划使用 ODM (Mandango, MongoDB) 而不是常规的 ORM (MySQL) 来实现这一点。有朋友告诉我收件箱/发件箱系统。

  • 收件箱是朋友发布到您墙上的所有消息
  • 发件箱是您发布的所有消息

为什么?因为如果你关注一个用户会更简单,你只会关注他的“发件箱

每次我在墙上发布一些东西时,这条消息都会复制给我的每个关注者(这会产生大量数据)。 但是当一个朋友收到我的帖子时怎么办。他会在哪个实体上评论我的帖子?我的还是他的(因为内容是重复的)?

你怎么看? 你有没有想过这样的问题?你有什么答案吗? 谢谢

【问题讨论】:

  • a few potential dups这个散落在SO上(也检查数据库+社交网络)。查找与活动流、活动源以及可能的审计日志相关的问题。

标签: php database-design social-networking


【解决方案1】:

这就是您如何设置数据库的全部内容。我对 MySql 的经验有限,所以我的回答与此有关。在这种情况下,我至少会有这三个表:

-用户(每个用户都有一个唯一的 id)

-消息:这包括“收件箱”和“发件箱”消息。您可以将它们全部放在一个表中的原因是,如果您正在关注某人,它只会提取那些具有(这是曾经的列)“原始用户 ID”和(这可能是另一列)“接收用户”的消息id”或类似的东西。您如何处理数据将全部使用 php 或 asp 或您拥有的。

-Comments:这包含所有帖子的所有 cmets,并包含与其相关的消息的唯一 id 的列。

开发系统时要记住的一件事是,您永远不想复制数据。所以,当你在墙上发帖时,你不想在你的数据库中为所有关注你的人创建重复的消息,你希望 php 为你处理传播这些信息。

【讨论】:

  • 我想这比“从不重复数据”更复杂。想想当朋友删除另一个朋友状态时。使用重复数据,您只需删除原始数据而不影响其他视图。两种方法都有优点/缺点
猜你喜欢
  • 2010-11-21
  • 2012-12-03
  • 1970-01-01
  • 1970-01-01
  • 2012-07-06
  • 2012-09-02
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
相关资源
最近更新 更多