我正在开发一个库存系统,根据以下要求,我需要帮助设计产品(项目)表。
我的问题是我该如何处理?我应该为所有这些类型的促销创建单独的表,还是在同一个表中我可以处理所有这些表?
答案 0 :(得分: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%的折扣会被存储为促销,但宁愿是发票/账单的责任。因此,是否具有多个表的决定应该基于可用的不同类型的促销以及它们是否可以在单个表中一致地建模和存储。你有更多促销活动的例子吗?我现在说单桌是完全可以接受的。