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

时间:2010-03-30 10:47:23

标签: sql-server asp.net-mvc database-design online-store

我需要一种优雅的方式来实现针对在线商店的基于信用的购买,其中包含少量产品,可以使用虚拟信用真实购买货币即可。或者,产品只能以积分计价。

以前的工作

在使用不同的产品类型(例如CreditVoucherMusic)进行订单后处理之前,我已经实施了基于信用的购买,以便为表单中的用户分配购买的赠送金额真实货币,随后可用于贴现未来订单的费用总额。

作为一种临时解决方案,这种做法相当不错,但是没有成功地将虚拟货币与真实货币断开连接,这是我想要做的事情,因为消费信贷在客户心理上比花费真实货币更容易。 / p>

设计

我需要有关正确设计数据库的指导,支持同时批量购买折扣以及实际货币产品。或者,如果所有产品都以信用价格定价且只有信用证具有实际货币价值吗?

现有数据库设计

部分Products表:

  • 产品编号
  • 标题
  • 类型
  • 单价
  • SalePrice

部分Orders表:

  • 的OrderId
  • UserId(与Users表相关,未显示)
  • 状态

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

  • OrderItemId
  • OrderId(与Orders表相关)
  • ProductId(与Products表相关)
  • 数量
  • 单价
  • SalePrice

预期UserCredits表:

  • CreditId
  • UserId(与Users表相关,未显示)
  • (+/-值。随着时间的推移总结确定saldo。)
  • 日期

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

2 个答案:

答案 0 :(得分:3)

您不向Credits支付供应商,因此从内部会计角度来看,最好只持有针对您产品的现金价值(USD,UKP等)。

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

答案 1 :(得分:0)

与您的会计/财务人员交谈。信用,一旦给出,就像双重会计中的任何金钱一样真实,如果您没有向信贷供应商支付信用额度,但您承诺提供商品以获得您必须以现金支付的信用。它应该始终保持平衡,并且要查看您的完整财务状况,您应该能够在资产负债表中获得这些信用。

从一开始就尝试对帐户和交易进行建模 - 以后更容易连接到财务/会计软件,如果您可以双方运行报告以进行对帐,那么总是很好。