我正在为我遇到的一个问题与数据库模式作斗争。
假设我拥有一家向不同公司出售每月服务(清洁)的公司。
然而,我给公司提供每月可存的“优惠券”,就像是根据用户数量减少(5美元)一样。
例子:
今天是2018年4月
XYZ公司每月要为我的业务支付1000美元的清洁服务费。
XYZ有5名员工,所以他们将有5张4月份的优惠券。
但是,由于优惠券可以保存(保存期限为2个月),XYZ公司不会仅使用4月份的优惠券,也不会使用3月份的优惠券(因为他们没有使用当月的优惠券,2月份的优惠券已经用完)。
结果:
4月份的发票上使用了10张优惠券(3月5日,4月5日):
支付总额950美元
我的问题是我想把它自动化。只要按一下按钮,我的系统就必须检查:
有多少用户
如果过去2个月有未使用的优惠券(如果存在的话,使用第一张)
在他们的发票上贴优惠券。
我想先在一个数据库中设计这个,但我正在努力:
这是我的设计
单位
公司ID
姓名
用户
用户ID
公司ID
用户ID
现在我正在努力的优惠券设计,我如何发展这个,以便我可以自动解决我的问题。
我需要每月为每家公司节省优惠券。
我的想法是这样做:
公司月票
公司ID
优惠券计数
月
我不确定我是否能在一张桌子上做到这一点,我也不太确定下面的问题:
如果我的程序用户决定取消发票,我的系统怎么知道优惠券从哪个月来?
在优惠券分享系统中,建议采用什么样的设计?
任何解决这个问题的建议都将不胜感激。
最佳答案
我同意你的想法,再有两张桌子:Invoices
和Invoices_UsedCoupons
Invoices
:
ID(主键)
公司ID
月
状态(如果不想从数据库中删除,则在发票上设置取消状态)Invoices_UsedCoupons
:
invoiceid(表的外键)
优惠券计数
月(此字段用于Invoices
表中的已用优惠券)
原因如下:
我们仍然应该保存已发放的优惠券(在您的Company_Month_Coupon
表中),因为每个月的员工数量可能会发生变化。这意味着,每当员工数量发生变化时,您必须跟踪已发放的优惠券。
使用Company_Month_Coupon
和Invoices
表,您可以轻松计算实际使用的优惠券和剩余优惠券。
如果我的程序用户决定取消发票,我的
系统知道优惠券从哪个月来?
所有信息都可以在Invoices_UsedCoupons
和Invoices
表中找到。如果你想在取消发票后收回优惠券,也很容易做到。
关于sql - 每月发放的优惠券的SQL数据库设计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49960302/