我正在一个数据库上工作,该产品将具有多个到期日期,多个成本价格,因此同一产品将有多个库存条目,为此我进行了初始数据库设计,我想问一下你们这是否是一个好习惯如果没有,请告诉我如何正确执行操作。
这是我到目前为止所想的。
创建3个表(1. Product_info-2.Product_Stock-3.units) 下面是详细结构:
Units Table
--------------------------
id Name
|------|
1 |Piece |
2 |Pack |
3 |Kilos |
在这里,我将列出所有将用作基本产品单位的单位。
Product Information Table
-----------------------------------------------------------------------------------------------------------------------
id Name AvgCostPrice AvgPrice AvgPackCostPrice AvgPackPrice totalQuantity BaseUnitID multiplier PackBarcode Barcode
|------|------------|--------|----------------|------------|-------------|----------|----------|------------|--------|
1 |Soda | | | | | 108 | 1 | 12 | 111111 | 111222 |
2 |Water | | | | | 50 | 1 | 6 | 222222 | 222111 |
Product Stock Table
---------------------------------------------------------------------------------------------------------------------------
id ProdID UnitID CustomBarcode Quantity PackQTY CostPrice Price PackCostPrice PackPrice expDate Enabled
|------|-------|--------------|-------------|-------|----------|-------|--------------|---------|--------------|---------
1 |1 | 1 | | 84 | 7 | 2.0 | 2.4 | 24.0 | 29 | 20/may/2019 | 1
2 |1 | 1 | | 24 | 2 | 1.5 | 1.9 | 18.0 | 23 | 10/aug/2019 | 1
2 |2 | 3 | | 50 | 0 | 3.0 | 5.0 | 0.0 | 0 | 10/Feb/2019 | 1
1。enabled列将用作(布尔值)确定是否在出售时使用此库存。 例如:如果我想出售一个汽水罐,我有两个库存。如果第一个库存为0,则enable列为false,因此它将仅从第二个库存中减去已售出的数量,并在(SalesDetails表)中使用其价格和成本价
我还考虑了将(库存表)中每种产品库存的不同单位分开
因此,当我要出售24件苏打水和3包苏打水时,它将根据其(启用列值= True)选择最旧的库存,并从中减去该数量,如果数量达到零,则(启用列) )值将变为false。
此后它将再次执行相同的操作,但是这次它将PackQtY的值从7更改为4,并且数量列值将通过此[Product_Stock.Quantity = Product_Stock.Quantity-(QtySold * Prodcut_info .multiplier Column Value)],它将为84-(3 * 12)= 48
销售明细结构输出如下:
Sale Details Table
----------------------------------------------------------
id ProdID UnitID Quantity CostPrice Price total CostTotal
|------|-------|-----------|-------------|-------|------|---------|
1 |1 | 1 | 24 | 2.0 | 2.4 | 57.6 | 48.0 |
2 |1 | 2 | 3 | 18.0 | 23.0 | 69.0 | 54.0 |
Product Stock Table (After Selling 24 pieces of Soda and 3 packs of Soda)
---------------------------------------------------------------------------------------------------------------------------
id ProdID UnitID CustomBarcode Quantity PackQTY CostPrice Price PackCostPrice PackPrice expDate Enabled
|------|-------|--------------|-------------|-------|----------|-------|--------------|---------|--------------|---------
1 |1 | 1 | | 48 | 4 | 2.0 | 2.4 | 24.0 | 29 | 20/may/2019 | 1
2 |1 | 1 | | 0 | 0 | 1.5 | 1.9 | 18.0 | 23 | 10/aug/2019 | 0
对不起,如果我不能很好地解释它。 预先非常感谢。
答案 0 :(得分:1)
首先,您需要谨慎使用名词。 例如:“价格”与“成本”的含义不同,“成本价格”听起来像是矛盾的词。我建议您限制自己使用“成本”或“价格”。
吴万杰(Van Ng)询问您是否完成了实体关系图。好吧,在您似乎处在的阶段,从ER图开始可能是不明智的,因为ER图作为您已经定义的模型的摘要很有用-而且您还没有进入该阶段。 / p>
平均值:如果正确设计数据库模式,则可以计算平均值。您不需要将平均值作为基本表。
我建议您考虑使用称为“ object-role modeling”(ORM)的基于事实的建模方法,因为在考虑绘制ER图之前,您可以从“事实”开始。
示例: 我使用NORMA ORM工具创建了以下示例:
首先,我阅读了您的文字,提取了事实,然后使用这些事实来设计对象角色模型。 然后,我使用NORMA工具生成了对象角色模型的“逻辑视图”。 (以毫秒为单位)
我没有添加您提到的所有内容,但我希望这足以帮助您取得进步。
该示例包含两个伪像:
1:由NORMA工具 生成 的逻辑模型。
2:生成逻辑模型的事实。
[