我正在为一个处理商店库存管理的项目设计一个数据库。
基本上,每个Product
可以包含变体Color
和Size
,显然,每种可能变体的产品(库存)数量会有所不同。
示例:
[
{
"product": "Plain T-Shirt",
"color": "Red",
"size": "Medium",
"stock": 10,
},
{
"product": "Plain T-Shirt",
"color": "Red",
"size": "Large",
"stock": 2,
},
]
在这里,同一产品(普通T恤衫)有不同的库存用于不同的变化。您可以想象,我需要能够独立更新每个股票。
那么,设计这样一个数据库最有效的方法是什么?我正在使用PostgreSQL,因此设计需要是关系型的,但我也可以访问JSON字段。
现在,我目前的设计看起来像这样:
产品
颜色
尺寸
用户可以动态添加颜色和大小,因此系统必须对此进行补偿。
关于数量字段,假设产品P1的颜色为“红色”和“绿色”,尺寸为“S”和“M”。我试图让数量字段像这样:所有可能组合的4个键:(红色,S),(红色,M),(绿色,S),(绿色,M),其值代表股票的变化目前有库存。
所以,我的问题是:我走在正确的道路上吗?这种设计有效还是有更好的方法来做到这一点?感谢。
答案 0 :(得分:1)
我在设计中看到的问题是,对于每个颜色为“红色”的产品,您都会在颜色表中记录“红色”。与尺寸相同。然后使用JSON定义数量会产生很多不一致的机会(例如,如果从颜色表中删除颜色然后忘记删除数量,那么它就不是'关系')。
你的表看起来像这样:
PRODUCTS(id,name,...)
COLORS(id,name,...)
SIZES(id,size_label,...)
STOCKS(id,product_id,color_id,size_id,quantity)
STOCKS表代表了trenary关系。
通过这种方式,您可以将事物分开,并且可以使用单个查询更轻松地跟踪您的库存。
答案 1 :(得分:0)
您可以动态使用变体。库存表包含您的variation_ids 和product_ids。因此,您可以轻松跟踪您的库存。