我需要一种优雅的方式来为在线商店实施基于信用的购买,该在线商店的产品种类很少,可以使用虚拟信用或真实货币购买。或者,产品只能以积分定价。
之前的工作
在使用不同的产品类型(例如或)之前Credit
,我已经实施了基于信用的购买,通过后订单处理将购买的信用以真实货币的形式分配给用户,随后可用于折扣未来订单的费用总额。Voucher
Music
这作为一种临时解决方案效果很好,但没有成功地将虚拟货币与真实货币断开,这正是我想做的,因为从心理上来说,消费积分对客户来说比消费真实货币更容易。
设计
我需要有关正确设计数据库的指导,并支持以折扣价同时批量购买积分以及真实货币产品。或者,是否应该所有产品都以积分定价,并且只有积分才具有实际货币价值?
现有的数据库设计
偏Products
表:
- 产品编号
- 标题
- 类型
- 单价
- 销售价格
偏Orders
表:
- 订单编号
- UserId(与
Users
表相关,未显示) - 地位
- 价值
- 全部的
分OrderItems
表(类似于CartItems
表):
- 订单项 ID
- OrderId(与
Orders
表相关) - ProductId(与
Products
表相关) - 数量
- 单价
- 销售价格
预期UserCredits
表:
- 信用ID
- UserId(与
Users
表相关,未显示) - 价值(+/- 值。随着时间的推移求和以确定萨尔多。)
- 日期
我在 SQL Server 数据库上使用 ASP.NET MVC 和 LINQ-to-SQL。