2013-09-24 78 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