gpt4 book ai didi

mysql - 页面订阅的表架构

转载 作者:行者123 更新时间:2023-11-30 01:12:28 26 4
gpt4 key购买 nike

我有一个类似页面订阅的应用程序,用户可以在其中订阅页面。当查看页面时,我想显示订阅该页面的用户数量和用户列表。

此外,当有人查看用户的个人资料时,应该向他们显示该用户订阅的所有页面。

我想到的是这样的:

Page
id
users (JSON format containing userIDs of all subscribed)

User
id
page_IDs (JSON format containing the IDs of the walls he is subscribed to)

我想这对于非常小的规模的应用程序来说是可以的。但是,当网站不断增长并且每个页面的订阅者超过 1000 名时,将所有 JSON 数据解码为 PHP 中的数组根本不是一个好主意。

有人有更好的架构吗?

非常感谢!

最佳答案

你的设计不是很好。这实际上有点糟糕。原则上,目标是拥有一个至少满足 first normal form 的模式。 .

您所处的情况是,一个页面可以有多个用户订阅,并且一个用户可以订阅多个页面。因此,表users 和表pages 之间存在多对多关系。

在这些情况下,最好的解决方案是使用第三个表来连接两者。通常该表仅包含 2 列:

  • 第 1 列包含表 1 中的主键(也称为外键)
  • 第 2 列包含表 2 中的主键(也称为外键)

也有异常(exception),但一般来说,这就是您设计/标准化此类内容的方式。

更具体地说明您的情况:

pages
-------------------------
page_id
<other columns>
PRIMARY KEY(page_id)

users
-------------------------
user_id
<other columns>
PRIMARY KEY(page_id)

subscriptions
-------------------------
page_id
user_id
PRIMARY KEY(page_id,user_id)

关于mysql - 页面订阅的表架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19365631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com