致力于新的应用程序数据库架构设计。在该应用程序中,有一个供用户使用的促销代码选项。我遇到了问题,或者我可能对设计促销代码表及其工作感到困惑。我创建了具有以下属性的表。
Restricted_Promos 表是仅针对特定用户的促销代码。
PromoCode:
name
description
status
valid_from
valid_til
discount
max_usage
created_at
created_by
updated_at
updated_by
Restricted_Promos:
PromoCodeId
UserId
Count
我遇到问题的场景是:
- 多个用户如何使用一个促销代码?以及如何追踪 他们喜欢谁使用过以及使用了多少次单一促销代码?
如果促销代码是针对特定用户且仅供一次性使用的,如何 应该在那管理?
此促销代码架构是否灵活?就像将来如果我必须 添加基于某些外部公司促销(如银行)的促销代码。 它也适用于此吗?
最佳答案
我会将 Restricted_Promos
重命名为 Assigned_Promos
。然后我会创建一个新表:
Promo_Usages:
PromoCodeId
UsedBy
UsedAt
现在您知道谁以及多少次使用了促销。
要管理最大使用次数,我建议在 Promo_Usages
上添加触发器并将 count(PromoCodeId)
与 PromoCode.max_count
进行比较。顺便说一句,我强烈建议您使用一种命名约定。现在你正在混合几种。
这个模式已经足够好了。
关于postgresql - 在 PostgreSQL 中设计 *PROMOCODE* 数据库模式时面临的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57586021/