基于信用的购买的数据库设计

Pet*_*ron 4 sql-server asp.net-mvc database-design online-store

我需要一种优雅的方式来为在线商店实现基于信用的购买,该商店提供少量产品,可以使用虚拟信用真实货币进行购买。或者,产品只能以积分定价。

之前的工作

Credit在使用不同的产品类型(例如、Voucher或)之前,我已经实施了基于信用的采购,Music并通过订单后处理将购买的信用以实际货币的形式分配给用户,随后可以用于折扣未来订单的费用总额。

作为一个临时解决方案,这相当有效,但没有成功地将虚拟货币与真实货币分开,这正是我想做的,因为对于客户来说,消费积分在心理上比消费真实货币更容易。

设计

我需要正确设计数据库的指导,并支持同时以折扣价批量购买积分和真实货币产品。或者,是否应该所有产品都以积分定价,并且只有积分具有实际货币价值?

现有数据库设计

部分Products表:

  • 产品编号
  • 标题
  • 类型
  • 单价
  • 销售价格

部分Orders表:

  • 订单号
  • UserId(与表相关Users,未显示)
  • 地位
  • 价值
  • 全部的

部分OrderItems表(类似于CartItems表):

  • 订单商品编号
  • OrderId(与表相关Orders
  • ProductId(与表相关Products
  • 数量
  • 单价
  • 销售价格

预期UserCredits表:

  • 信用号
  • UserId(与表相关Users,未显示)
  • (+/- 值。随时间求和以确定 saldo。)
  • 日期

我在 SQL Server 数据库上使用 ASP.NET MVC 和 LINQ-to-SQL。

APC*_*APC 6

您不会用积分向供应商付款,因此从内部会计角度来看,最好仅针对您的产品持有硬现金价值(美元、英镑等)。

向网站用户展示时,您需要一个货币换算表,将硬价格转换为优惠券。将数据模型与前端显示分离是一个关键的设计策略。无论您决定显示真实现金价格和虚拟信用价格,还是仅显示信用评估,都应该与数据在数据库中的存储方式无关。