POS数据库布局

时间:2010-01-13 16:22:21

标签: sql database-design layout inventory

我们当前的商店库存数据库布局包括一个表格,其中包含每个商品的记录,并包含商品属性,如价格,成本,描述,SKU等。每个商店都有一个具有SKU和数量的表格,以及根据SKU,每个商店的一些其他属性不同。

虽然这比在Items表中为每个商店的数量设置一个列更好,但似乎这也是一个有点难看的解决方案,因为当添加新商店时,您需要选择一个新表并且当一个新的添加了项目,您不仅要插入项目表,还要插入每个单独的商店表格。

有没有比我看到它更好的方法呢?感觉就像有。

4 个答案:

答案 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所有商店的一件商品数量
按数量列出所有商店的商品价格低 等