我的网站将提供每月付费订阅访问权限,而我正在尝试考虑设置表格的最佳方式。如果用户希望升级到高级服务,则可以选择通过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
并将付款历史存储在第三个表格中。我会在这里使用定期结算。
答案 0 :(得分:2)
您希望将付款交易与用户列表分开,因为您希望能够查看续订历史记录。您可能有用户付费,请求退款,再次付款,会员资格到期,然后续订等等。如果不保留维护此活动历史记录的事务表,您可能会发现自己无法解开客户服务或会计问题。
假设您只有一种付费成员资格(这可能不是一个未来安全的假设),并且假设您使用了适当的程序控制,例如使用存储过程或触发器来同步事务包装器中的数据,您可以进行非规范化会员类型并在您的USERS表中一直有效。这种类型的冗余可能有助于您的操作性能,但如果您允许冗余数据不同步,则可能存在非常大的风险。我建议在没有冗余的情况下尝试它,然后在使用USERS中的非规范化字段之前查看是否存在实际的性能问题。