首页 文章

如何处理产品变化的库存?

提问于
浏览
0

我已经多次询问过这个问题,但是我还没有找到适合我的答案 .

我正在设计一个电子商务系统,我们有一个简单的库存管理系统 . 基本上,每个产品可以具有许多属性,并且每个属性变体集可以具有不同的数量 . 产品和属性之间的关系很多,并且在其他地方进行管理,库存表只是简单地处理“数量”管理 .

所以我目前的方法是将属性值id的组合存储为数据库中的字符串(以及md5并存储在另一列中以便更快地搜索) . 这种方法允许我在给定属性列表的情况下快速搜索库存数量,并且还允许我通过管理员轻松编辑 .

该表有以下列(我缩短了一点,只关注主结构)

`id` INT UNSIGNED NOT NULL ,
  `product_id` INT UNSIGNED NOT NULL ,
  `container_id` INT UNSIGNED NULL ,
  `lot_id` INT UNSIGNED NULL DEFAULT NULL ,
  `facility_id` INT UNSIGNED NULL DEFAULT NULL ,
  `inventory_item_status_type_id` INT UNSIGNED NOT NULL ,
  `feature_value_ids` TEXT NULL DEFAULT NULL ,
  `key` VARCHAR(255) NULL DEFAULT NULL ,
  `serial` VARCHAR(255) NULL ,
  `quantity_onhand` INT UNSIGNED NOT NULL DEFAULT 0

这种方法的缺点是

  • 如果产品具有以下属性:1,2,3,4,5

  • 库存定义为1,3,4和1,2,3,4,但不是1,2,3,4,5

  • 当用户选择1,2,3,4,5时,1可能的期望行为是系统应使用1,2,3,4的数量(这是它可以获得的最接近的组合) . 在这种情况下,我们可能必须使用全文匹配来获得最接近的组合

对于这个问题,您认为上述方法是否有任何问题,您将如何区别对待?

1 回答

  • 0

    如果每次产品表中都有更新时,您可以节省时间来更新包含:attribute id tuple => list of product_id的表,则可以使用动态编程快速搜索属性的子集 .

    我不确定为什么你需要md5属性值ids字符串才能搜索完全匹配 . MySQL应该能够索引任意列 .

相关问题