处理新的应用程序DB架构设计。在该应用程序中,有一个针对用户的promo代码选项。我正面临着问题,或者我在设计代码表和它的工作上很困惑。我创建了具有以下属性的表。
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我面临的问题是:
发布于 2019-08-21 08:51:13
我会把Restricted_Promos重命名为Assigned_Promos。然后我会创建一个新的表:
Promo_Usages:
PromoCodeId
UsedBy
UsedAt现在你知道是谁和多少次使用了一个宣传片。
为了管理最大使用量,我建议在Promo_Usages上添加触发器,并将count(PromoCodeId)与PromoCode.max_count进行比较。顺便提一下,我强烈建议您使用一个命名约定。现在你混合了几个。
这个模式足够好了。
发布于 2019-08-21 11:05:01
我只需将公共字段移到PromoCode并添加一个用途:
PromoCode:
name
description
status
valid_from
valid_til
discount
created_at
created_by
updated_at
updated_by
Purpose
MaxUsageCount
UsedCount
PromoCode2User:
PromoCodeId
UserId现在您可以处理个人代码了(“加入PromoCode2User on PromoCodeId.”)和多个人可用的代码(“不在从PromoCodeId选择PromoCode2User.”中使用)。所有代码都有一个MaxUsageCount和一个当前的UsedCount。使用“目的”字段,您可以存储促销活动的名称或定义内部类别,以便以后可以轻松地在大容量上撤消或更改代码。
至于PromoCodeUsed,请在一个单独的表中跟踪它。是的,我会单独跟踪每个用户的使用情况。您可能需要这样做,以处理一个启动代码可以被身份不明的用户使用的情况,或者您希望能够删除用户,并且仍然保留代码的所有用途。
PromoCodeUsed:
PromoCodeId
UserId
Counthttps://stackoverflow.com/questions/57586021
复制相似问题