首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每月发行优惠券的SQL数据库设计

每月发行优惠券的SQL数据库设计
EN

Stack Overflow用户
提问于 2018-04-21 21:18:48
回答 2查看 715关注 0票数 2

我正在为我遇到的一个问题而挣扎于一个数据库模式。

比方说,我拥有一家向不同公司销售月度服务(清洁)的公司。然而,我给公司每月节省的“优惠券”,相当于根据用户数量减少(5美元)。

示例:

2018年4月,XYZ公司不得不为我的公司每月清洁服务支付1.000美元。XYZ有5名员工,所以他们将有5张4月份的优惠券。

然而,由于优惠券可以保存(为期2个月),XYZ公司将不再使用四月的优惠券,而是使用三月的优惠券(因为他们没有使用当月的优惠券,二月的优惠券已经用完了)。

结果:四月份发票上使用10张优惠券(3月5号,4月5日):总共支付950美元。

我的问题是我想让这一切自动化。只要点击一下按钮,我的系统就必须检查:

  • 有多少用户有
    • 如果过去两个月有任何未使用的优惠券(如果它们存在的话,先使用这些优惠券)
    • 在发票上使用优惠券。

我想先在数据库中设计这个,但我在挣扎:

这是我的设计

  • 公司
代码语言:javascript
运行
复制
- CompanyID 
- Name

  • 用户
代码语言:javascript
运行
复制
- UserID
- CompanyID
- UserID

现在我在与优惠券的设计斗争,我如何开发它,以便我可以自动化我的问题。我将需要每个公司每月节省优惠券。

我的想法是这样做:

  • Company_Month_Coupon
    • CompanyID
    • Coupon_Count
    • 月份

我不确定能否在一张桌子上完成这个任务,我也不太确定下面的问题是什么:

  • 如果我的程序用户决定取消发票,我的系统如何知道优惠券是哪一个月来的?

在优惠券分享系统中会提出什么设计建议?

任何解决这一问题的建议都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-26 05:19:53

我同意你的想法,还有两个表:InvoicesInvoices_UsedCoupons

Invoices

  • ID (主键)
  • CompanyID
  • 月份
  • 状态(如果不想从DB中删除,则在发票上设置已取消的状态)

Invoices_UsedCoupons

  • InvoiceId ( Invoices表的外键)
  • Coupon_Count
  • 月份(此字段用于Company_Month_Coupon表中使用的优惠券)

其原因是:

  • 我们仍然应该存储已发行的优惠券(在您的Company_Month_Coupon表中),因为对于每个月,员工的数量可能会发生变化。这意味着,当员工数量发生变化时,您必须跟踪已发行的优惠券。
  • 使用InvoicesInvoices_UsedCoupons表,您可以轻松地计算实际使用的优惠券&剩余的优惠券。

如果我的程序用户决定取消发票,我的系统如何知道优惠券是哪一个月来的?

所有信息都可以在InvoicesInvoices_UsedCoupons表中获得。如果您想在取消发票后收回优惠券,这也很容易做到。

票数 2
EN

Stack Overflow用户

发布于 2018-04-21 21:54:01

“我需要每月节省每家公司的优惠券。”

也许你可以做相反的事。在数据库中不存储可以使用的优惠券,而只存储实际使用的优惠券,例如在表"used_coupons“中。

这个想法是,优惠券是默认放弃的,所以储存它们是没有意义的。只需要保存使用过的优惠券。

在结账时,您需要了解公司中有多少用户,以及在过去两个月中节省了多少“使用过的优惠券”。

如果返回X优惠券,则需要从"used_coupons“表中删除最新的X优惠券。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49960302

复制
相关文章

相似问题

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