1

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

我在想我可以在一个表中维护它作为用户详细信息,即:

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

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

4

1 回答 1

2

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

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

于 2011-08-09T16:38:22.043 回答