【问题标题】:POS Database LayoutPOS 数据库布局
【发布时间】:2011-01-04 17:23:45
【问题描述】:

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

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

有没有比我看到的更好的方法来解决这个问题?感觉好像有。

【问题讨论】:

    标签: sql database-design layout inventory


    【解决方案1】:

    为什么没有包含 SKU、StoreId 和 Stock 级别的 stock 表?

    例如

    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
    

    【讨论】:

      【解决方案2】:

      通过遵循数据规范化规则,您可能希望创建一个这样的表:

      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 
      

      等等……

      【讨论】:

        【解决方案3】:

        据我所知,你真的想要三张桌子:

        产品

        ProductID
        Price
        Description
        ...
        

        商店产品

        ProductID
        StoreID
        Quantity
        ...
        

        商店

        StoreID
        Address
        ...
        

        这是一个完全有效且规范化的数据库设计,听起来基本上就是您现在所拥有的。

        【讨论】:

          【解决方案4】:

          听起来好像是从正确的路径开始,为项目的所有常见属性提供一个表。

          所有商店的库存盘点应该在一个单独的附加表中,而不是每个商店都有一个单独的表,使用 Item's Key 和 Store's Key 作为该表上的组合主键。

          举例

          项目

          物品钥匙
          名称
          价格
          货号

          商店

          存储密钥
          名称
          地址

          库存

          存储密钥
          物品钥匙
          数量

          在 Inventory 表上同时使用 StoreKey 和 ItemKey 将使您的记录保持唯一性。

          这将使您不仅可以轻松查找单个项目,还可以查找以下内容:
          StoreKey 在一个商店的所有商品的数量
          通过 ItemKey 在所有商店中的一件商品的数量
          哪些商品在所有商店中的数量都很少
          等等

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-01-25
            • 2015-05-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-12-09
            • 1970-01-01
            相关资源
            最近更新 更多