个人帐户和组帐户的数据库架构(例如Facebook用户和页面)

时间:2019-04-21 18:05:18

标签: sql database-design

我正在尝试创建一个架构,该架构与Facebook的一部分非常相似,因此我将以它为例进行说明,因为这样会更容易。

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

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

我该如何处理?

我的想法

  1. 创建用户表和页面表。用户表有一个名为group_id的列,该列将映射到主持人帐户的页面表ID,因为这两者很相似。

  2. 分别创建用户表和主持人表

但是,采用上述方法,由于author_id会有所不同,用户可能会有两个user_id,页面会有page_id。

还考虑对“关注”表进行类似的操作

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

我知道这不是理想的解决方案,从“关注”表中检索user_id和page_id,对用户发布表中的帖子进行查询,然后再对品牌发布表进行查询,将它们合并并显示都会有问题它在供稿上,但是我无法以其他任何方式来解决这个问题。搜索了Facebook模式,但无法在其中找到Pages。请任何指点会有所帮助。

1 个答案:

答案 0 :(得分:0)

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

  1. 用户
  2. 主持人(包含相应用户的ID,并由他们主持的组ID)
  3. 跟随者(包含用户ID,然后是用户组)

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