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

Php 用于构建墙系统的数据库/模式结构,php,database-design,social-networking,Php,Database Design,Social Networking,我一直在研究如何在PHP中构建一个类似FB的墙系统 我们计划使用一个ODM(,MongoDB)而不是一个常规的ORM(MySQL)来实现这一点。一些朋友告诉我收件箱/发件箱系统 收件箱是朋友发布到你墙上的所有邮件 发件箱是您发布的所有信息 为什么?因为如果你跟随一个用户会更简单,你只会跟随他的“发件箱” 每次我在我的墙上贴东西时,这条信息都会复制到我的每个追随者(这将生成大量数据)。 但是当一个朋友评论我的帖子时呢。他将对我的帖子发表评论?我的还是他的(因为内容重复) 你觉得怎么样? 你有没

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

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

  • 收件箱是朋友发布到你墙上的所有邮件
  • 发件箱是您发布的所有信息
为什么?因为如果你跟随一个用户会更简单,你只会跟随他的“发件箱”

每次我在我的墙上贴东西时,这条信息都会复制到我的每个追随者(这将生成大量数据)。 但是当一个朋友评论我的帖子时呢。他将对我的帖子发表评论?我的还是他的(因为内容重复)

你觉得怎么样? 你有没有想过这种问题?你有什么答案吗?
谢谢

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

-用户(具有与每个用户关联的唯一id)

-消息:包括“收件箱”和“发件箱”消息。之所以可以将它们全部放在一个表中,是因为如果您正在跟踪某人,它将只提取具有(这一列是“原始用户id”和(这可能是另一列)“接收用户id”或类似内容的消息。如何处理数据将全部由php或asp或您所拥有的东西来完成

-Comments:它保存所有帖子的所有评论,并包含一列,显示与之相关的消息的唯一id


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

这其中有很多是分散的(也可以查看数据库+社交网络)。寻找与活动流、活动提要以及可能的审计日志相关的问题。我想这比“从不重复数据”更复杂。想想当朋友删除另一个朋友的状态。对于重复数据,只需删除原始数据,而不会影响其他视图。这两种方法都有优点/缺点