我们当前的商店库存数据库布局包括一个表格,其中包含每个商品的记录,并包含商品属性,如价格,成本,描述,SKU等。每个商店都有一个具有SKU和数量的表格,以及根据SKU,每个商店的一些其他属性不同。
虽然这比在Items表中为每个商店的数量设置一个列更好,但似乎这也是一个有点难看的解决方案,因为当添加新商店时,您需要选择一个新表并且当一个新的添加了项目,您不仅要插入项目表,还要插入每个单独的商店表格。
有没有比我看到它更好的方法呢?感觉就像有。
答案 0 :(得分:1)
为什么没有SKU,StoreId和库存水平的库存表?
e.g。
Sku | StoreId | StockLevel
1234 | 001 | 15
1235 | 001 | 16
1234 | 002 | 8
1235 | 002 | 0
所以,商店002缺货sku 1235,但商店001有足够的。此表格布局还允许您使用类似
的内容在单个表格中获取整个组范围的库存水平视图select sku, sum(StockLevel) from stock group by sku
答案 1 :(得分:0)
通过遵循数据规范化规则,您可能希望创建如下表:
store_id | sku | quantity | other_attributes ...
---------+--------+----------+---------------------
1000 | 129832 | 234 | ...
1000 | 129833 | 334 | ...
1000 | 129834 | 23 | ...
1001 | 129832 | 0 | ...
1001 | 129833 | 12 | ...
1001 | 129834 | 10 | ...
...
基本上,它是store_inventory表。这样,您可以通过说
来过滤到给定的商店WHERE store_id = 1000
等...
答案 2 :(得分:0)
就我所见,你真的想要三张桌子:
<强>产品强>
ProductID
Price
Description
...
<强> StoreProduct 强>
ProductID
StoreID
Quantity
...
商品强>
StoreID
Address
...
这是一个完全有效且规范化的数据库设计,听起来基本上就是你现在所拥有的。
答案 3 :(得分:0)
听起来它是在正确的道路上开始的,有一个表用于项目的所有常见属性。
不是每个商店都有一个单独的表,所有商店的库存数应该在一个附加表中,使用Item的Key和Store的Key作为该表的组合主键。
例如
的ItemKey
名称
价格
SKU
StoreKey
名称
地址
StoreKey
的ItemKey
量
在Inventory表上一起使用StoreKey和ItemKey将使您的记录保持唯一。
这样您不仅可以轻松查找单个项目,还可以查找以下内容:
StoreKey在一家商店的所有商品数量
ItemKey所有商店的一件商品数量
按数量列出所有商店的商品价格低
等