2013-09-24 46 views
0

我正在开发一个库存系统,我需要帮助设计一个产品(物品)表,按照以下要求。库存促销/折扣表结构

  1. 一些项目有促销活动,如采取两项并获得一个免费。
  2. 该公司给单一帐单100美元以上的销售提供2%的折扣。
  3. 促销活动:如果有人购买10包,公司会提供1包,包括一些单位。另外,如果有人购买了10箱香烟(含10盒香烟),那么该公司提供1箱和5箱香烟。

我的问题是我该如何处理?我应该为所有这些类型的促销创建单独的表格,还是在同一张表格中,我可以处理所有这些类型的表格?

+0

在数据模型资源手册中使用Silverston的定价模型第1卷。 –

回答

0

首先你在这里描述的是行为而不是数据存储。所以,虽然,如何将它存储在数据库中,这一点非常重要,您应该首先关注如何为此编写代码。

,以便在C#示例

public class Product { 
    public string Name { get; set; } 
    public decimal UnitCost { get; set; } 
    public List<IPromotion> { get; set; } 
} 

public interface IPromotion { 
    decimal CalculateTotalDiscount(Product p, int quantity); 
} 

public class BuyAndGetFreePromotion : IPromotion { 
    public int QuantityRequiredToGetPromotion { get; set; } 
    public int NumberOfUnitsFree { get; set; } 

    public decimal CalculateTotalDiscount(Product p, int quantity) { 
     if (QuantityRequiredToGetPromotion == quantity) { 
      return (p.UnitCost * quantity) - (p.UnitCost * NumberOfUnitsFree); 
     } 
     return 0; 
} 

现在你可以做任何每个类表类层次结构或表。这很大程度上取决于你使用的ORM,如果有的话。

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/inheritance.html http://my.safaribooksonline.com/book/web-development/ruby/9780132480345/advanced-active-record/ch09lev1sec5#title-ID0EBYHK

至于问题。我不相信2%的折扣将作为促销存储,而是发票/账单的责任。因此,是否有多个表的决定应该基于不同类型的可用促销,以及它们是否可以一致地建模和存储在单个表中。你是否有更多促销活动的例子,因为目前我会说一张桌子是完全可以接受的。

+0

感谢Alistair实际上我需要从以下两个网站http://docs.oracle.com/cd/B40099_02/books/PriceAdm/PriceAdm_ProductPromo5.html http ://www.databaseanswers.org/data_models/但我也从上面的例子中得到了很多的建议,非常感谢 – user2812500

+0

databaseanswers网站很可怕,我也不确定Seibel文档页面如何帮助你...除了通过给你额外的领域放在桌子上? – Alistair