【问题标题】:Database Schema for Individual and Group accounts(Like Facebook Users and Pages)个人和团体帐户的数据库模式(如 Facebook 用户和页面)
【发布时间】:2026-01-08 17:45:01
【问题描述】:

我正在尝试创建一个模式,这与 Facebook 所做的部分非常相似,因此我将以此为例进行解释,因为它会更容易。

就像 Facebook 一样,我们有用户和 Facebook 页面。两者都可以发布帖子,互相关注,并且用户有一个提要页面,他们可以在其中查看他们关注的实体(用户或页面)的帖子

该页面由一组帐户(页面版主)管理,他们发布的帖子将显示为该页面的帖子。

我该怎么做?

我想到了什么

  1. 创建用户表和页表。用户表有一个名为 group_id 的列,它将映射到版主帐户的页表 ID,因为两者有点相似,这是有道理的。

  2. 制作单独的用户和主持人表

但是,使用上述方法,我可能会为帖子制作两个单独的表,因为 author_id 会有所不同,用户将拥有 user_id 而页面将拥有 page_id。

也想为 Follow 表做这样的事情

follower-user_followed-page_followed
1-2-NULL
1-NULL-5

我知道这不是一种理想的解决方案,从 Follow 表中检索 user_id 和 page_id 会出现问题,对用户帖子表中的帖子进行查询,然后再次在品牌帖子表上进行查询,将它们全部合并并显示它在提要上,但我无法以任何其他方式解决这个问题。搜索 Facebook 架构,但无法找到其中的页面。请任何指针都会有所帮助。

【问题讨论】:

    标签: sql database-design


    【解决方案1】:

    您应该为不同的实体使用不同的表。

    1. 用户
    2. 版主(包含相应用户的 id 并由他们主持的组 id)
    3. 关注者(包含用户 ID 和他们关注的组)

    表 3 和表 4 提供了所谓的“多对多”关系(多个用户可以关注多个组),因为数据库仅支持框内的一对多或一对一关系

    【讨论】:

    • 您好,感谢您的意见,有一个问题。在 Followers 表中,用户既可以关注其他用户也可以关注群组,您建议将两者放在同一个表还是不同的表?
    • 用户可以关注用户,那么当其他用户关注时,这不是社交网络上的友谊吗?如果是这样,那么我宁愿将以下组和用户关系划分在不同的表中。
    最近更新 更多