用于构建Wall系统的数据库/模式结构

时间:2011-06-17 12:28:36

标签: php database-design social-networking

我一直在研究如何在PHP中构建类似于FB的墙系统。

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

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

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

每次我将某些内容发布到我的墙上时,此消息将被复制到我的每个关注者(这将生成大量数据)。 但是当朋友评论我的帖子时呢。他要在哪个实体上评论我的帖子?我或他(因为内容重复)?

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

1 个答案:

答案 0 :(得分:1)

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

-Users(具有与每个ID相关联的唯一ID)

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

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

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