gpt4 book ai didi

mysql - 你将如何设计这个数据库?

转载 作者:搜寻专家 更新时间:2023-10-30 20:13:30 24 4
gpt4 key购买 nike

我们正在推出一个网站(付费订阅),注册过程包括输入激活码。激活码印在刮刮卡上并通过线下 channel 销售。其中一些卡可使用 1 个月。其他的是3个月和1年。激活码是唯一的 10 位随机数。

当访问权限到期时,用户可以购买另一张激活卡并通过输入新的激活码来延长订阅。此外,如果他们要求,我们也应该能够延长他们的订阅。例如,直到某个日期(例如 1 周)。

考虑到以上信息,您将如何为 user-activation_code 关系设计 DB?你觉得这样的设计好吗?

tbl_user
----------------
id
name
status_id

tbl_user_status
----------------
id
description

tbl_activation_code
----------------
activation_code
activation_code_type_id
activation_code_status_id
user_id
activated_date
expiry_date

tbl_activation_code_type
----------------
id
description

tbl_activation_code_status
----------------
id
description

更新:仅需要激活码:

1) 初始注册时

2) 接近访问到期日(例如,7 天)时,系统会显示一个通知,其中包含输入激活码页面的链接

3) 过期后,当用户尝试登录时,会要求她提供激活码

因此,用户不应在需要时键入激活码。

最佳答案

还不错。但是,我建议您向 tbl_user 添加两个字段:

tbl_user
----------------
id
name
status_id
activated_date
expiry_date

当然,activated_date 保存它们首次激活的日期,而 expiry_date 保存它们将过期的日期。每当他们购买新卡时,您还需要一个程序来更新此 expiry_date。此过程应处理日期重叠的两张卡,因此用户不会在特定期间重复付款。例如:

  • 卡片 1 - 9 月 1 日至 9 月 30 日
  • 卡片 2 - 9 月 16 日至 10 月 15 日

那里有 15 天的重叠,因此用户的activated_date 应该是Sep 1,而他们的expiry_date 应该是Oct 30(10 月 15 日 + 15 天)。

考虑到这一点,我会更改 tbl_activation_code,因为 expiry_date 变得有点误导。相反,创建一个名为 access_days 的列,用于计算用户的 expiry_date

此外,如果您想记住已发行的卡,即使没有激活,那么我会将 tbl_activation_code 分成两个表:

tbl_activation_code
----------------
activation_code
activation_code_type_id
activation_code_status_id
access_days

tbl_activation
----------------
activation_code_id
user_id
activated_date

关于mysql - 你将如何设计这个数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1660525/

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