我已经多次询问过这个问题,但我还没有找到适合我的答案。
我正在设计一个电子商务系统,我们有一个简单的库存管理系统。基本上,每个产品可以具有许多属性,并且每个属性变体集可以具有不同的数量。产品和属性之间的关系很多,并且在其他地方进行管理,库存表只关注“数量”管理。
所以我当前的方法是将属性值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
这种方法的缺点是
对于这个问题,您认为上述方法是否有任何问题,您将如何区别对待?
答案 0 :(得分:0)
如果您可以节省时间来更新包含以下内容的表:属性id tuple => product_id列表每次产品表中都有更新时,可以使用动态编程快速搜索属性的子集。
我不确定为什么你需要md5属性值ids字符串才能搜索完全匹配。 MySQL应该能够索引任意列。