gpt4 book ai didi

mysql - 用户订阅的数据库设计

转载 作者:太空宇宙 更新时间:2023-11-03 12:30:28 43 4
gpt4 key购买 nike

因此,我是该主题范围内的数据库新手,正在寻找一些我确信非常简单的建议。首先,我使用 MySql 作为我的数据库,我目前有两个表,一个用于存储用户帐户和详细信息:

TABLE user
id | username | password | email_address | user_devices | contact_method

另一个用于存储制作人的视频内容,如下所示:

TABLE series
id | series_title | still_broadcasting | last_updated |

我想实现一个功能,用户可以选择他们希望在新版本可用时收到通知的系列,还可以选择如何收到有关这些版本的通知(电子邮件或推送通知)以及通知的频率(到达时、每小时、每天、每周)我想知道最好的方法是什么?

我自己想到了这些想法,但我正在寻找第二种意见/更好的方法:(所有想法减去 4 都涉及在用户表中存储如何通知用户以及通知用户的频率)

  1. 向名为 following 的用户表添加一个文本列,并为每个系列添加 csv
  2. 向用户表添加多个 bool 列,每个系列一个
  3. 将文本列添加到系列表中,其中包含用户 ID 号的 csv 系列
  4. 创建一个全新的通知表,但我并不真正认为这样做的目的是多余的

然后我计划只将 cron 作业添加到我的服务器以实际去定期向用户发送通知

在此先感谢您的帮助。

最佳答案

首先,阅读一些关于基本数据库设计的文章可能是值得的。一个快速的谷歌发现了这个,其中包括识别关系

http://www.datanamic.com/support/lt-dez005-introduction-db-modeling.html

最好的办法是使用链接表,即

CREATE TABLE userHasSeries (
userID INT,
seriesID INT
);

然后可以在 INNER JOIN 查询中使用它来获取用户的选择。您在这里所做的是 2 个表之间的 n:m 链接。一个示例内部联接是

SELECT
u.id AS userID,
u.username,
s.seriesID,
s.series_title,
s.still_broadcasting,
s.last_updated
FROM users AS u
INNER JOIN userHasSeries AS uhs
ON uhs.userID = u.id
INNER JOIN series AS s
ON s.id = uhs.seriesID

如果 users.user_devices 也是一个逗号分隔列表,我强烈建议您也采用类似的 n:m 方法。

关于mysql - 用户订阅的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15656496/

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