首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PostgreSQL中设计*PROMOCODE* DB模式面临的问题

在PostgreSQL中设计*PROMOCODE* DB模式面临的问题
EN

Stack Overflow用户
提问于 2019-08-21 06:54:52
回答 2查看 127关注 0票数 0

处理新的应用程序DB架构设计。在该应用程序中,有一个针对用户的promo代码选项。我正面临着问题,或者我在设计代码表和它的工作上很困惑。我创建了具有以下属性的表。

Restricted_Promos表是仅针对特定用户的启动代码。

代码语言:javascript
复制
PromoCode:                                                         
name
description
status
valid_from
valid_til
discount
max_usage
created_at
created_by
updated_at
updated_by 

Restricted_Promos:
PromoCodeId
UserId
Count

我面临的问题是:

  • 一个推广代码如何被多个用户使用?以及如何跟踪他们,如谁使用和多少次单一的推广代码被使用?
  • 如果一个启动代码是针对特定用户和一次性使用的,那么它应该如何管理呢?
  • 这个启动代码模式是可弯曲的吗?就像在将来,如果我必须在一些局外人的公司推广的基础上,比如银行,添加推广代码。那样也行吗。
EN

回答 2

Stack Overflow用户

发布于 2019-08-21 08:51:13

我会把Restricted_Promos重命名为Assigned_Promos。然后我会创建一个新的表:

代码语言:javascript
复制
Promo_Usages:
PromoCodeId
UsedBy
UsedAt

现在你知道是谁和多少次使用了一个宣传片。

为了管理最大使用量,我建议在Promo_Usages上添加触发器,并将count(PromoCodeId)PromoCode.max_count进行比较。顺便提一下,我强烈建议您使用一个命名约定。现在你混合了几个。

这个模式足够好了。

票数 1
EN

Stack Overflow用户

发布于 2019-08-21 11:05:01

我只需将公共字段移到PromoCode并添加一个用途:

代码语言:javascript
复制
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,请在一个单独的表中跟踪它。是的,我会单独跟踪每个用户的使用情况。您可能需要这样做,以处理一个启动代码可以被身份不明的用户使用的情况,或者您希望能够删除用户,并且仍然保留代码的所有用途。

代码语言:javascript
复制
PromoCodeUsed:
PromoCodeId
UserId
Count
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57586021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档