付费订阅网站的最佳表格设计是啥?

Posted

技术标签:

【中文标题】付费订阅网站的最佳表格设计是啥?【英文标题】:What would be the best table design for paid subscription site?付费订阅网站的最佳表格设计是什么? 【发布时间】:2011-10-22 23:54:22 【问题描述】:

我的网站将提供按月付费的订阅访问,我正在尝试考虑设置表格的最佳方式。如果用户希望升级到高级服务,他们可以选择通过贝宝付款。我假设如果用户选择停止使用服务,他们的帐户将被限制为有限的免费访问版本。

我在想,我可以将其作为用户详细信息保存在一个表中,即:

USERS
ID| NAME| MEMBERSHIP_TYPE| LAST_PAYMENT_DATE| ACTIVE_TILL| TRANSACTION_ID

我是否需要将它分成两个不同的表

USERS
ID| NAME

MEMBERSHIPS
USER_ID|MEMBERSHIP_TYPE|LAST_PAYMENT_DATE|ACTIVE_TILL|TRANSACTION_ID

并将付款历史存储在第三个表中。我会在这里使用定期计费。

【问题讨论】:

将其放入单独的表中将使其更具可扩展性以供将来使用,例如,如果用户想注册多个会员等级。 【参考方案1】:

您希望将付款交易与用户列表分开,因为您希望能够查看续订历史记录。您可能有用户付款、申请退款、再次付款、会员资格到期、然后续订 - 等等。如果不保留维护此活动历史记录的事务表,您可能会发现自己无法解决客户服务或会计问题。

假设您只有一种付费会员(这可能不是未来安全的假设)并假设您实施了适当的程序控制,例如使用存储的过程或触发器在事务包装器中同步数据,您可以非规范化USERS 表中的成员资格类型和有效截止日期。这种类型的冗余可能有助于您的操作性能,但如果您允许冗余数据不同步,它也可能非常危险。我建议在没有冗余的情况下尝试它,然后在使用 USERS 中的非规范化字段之前查看您是否有实际的性能问题。

【讨论】:

以上是关于付费订阅网站的最佳表格设计是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Stripe 定期/订阅计费最佳设计/实践?

管理具有不同价格的多个并发订阅的计费周期的最佳方法是啥?

使用 Django REST 框架进行批量插入的最佳设计模式是啥?

设计具有用户之间关系的表格的好方法是啥?

存储/计算用户分数的最佳方式是啥?

设计方面,设计 UIPageViewController 布局以多次重用的最佳方法是啥?