Database design 付费订阅网站的最佳表格设计是什么?

Database design 付费订阅网站的最佳表格设计是什么?,database-design,paypal-subscriptions,Database Design,Paypal Subscriptions,我的网站将提供每月付费订阅访问,我正试图考虑设置表格的最佳方式。如果用户希望升级到高级服务,可以选择通过paypal支付。我假设,如果用户选择停止使用这些服务,他们的帐户将被限制为有限的免费访问版本 我在想,我是否可以将其作为用户详细信息保存在一个表中,即: USERS ID| NAME| MEMBERSHIP_TYPE| LAST_PAYMENT_DATE| ACTIVE_TILL| TRANSACTION_ID 当然,我需要把它分成两个不同的表格吗 USERS ID| NAME MEMB

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

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

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

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

您希望将付款交易从用户列表中分离出来,因为您希望能够查看续订的历史记录。您可能会有用户付款、要求退款、再次付款、会员资格过期,然后续订,等等。如果没有维护此活动历史记录的事务表,您可能会发现自己无法解决客户服务或会计问题


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

将其放在单独的表中将使其在将来的使用中更具可扩展性,例如,如果用户希望注册多个成员资格层。