【发布时间】:2021-06-29 23:11:09
【问题描述】:
我正在为一个处理商店库存管理的项目设计一个数据库。
基本上,每个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 字段。
现在,我目前的设计看起来像这样:
产品
- 名称(字符字段)
- 数量(JSON 字段)
颜色
- 名称(字符字段)
- 产品(多对一关系的外键)
尺寸
- 名称(字符字段)
- 产品(多对一关系的外键)
颜色和尺寸可以由用户动态添加,因此系统必须对此进行补偿。
关于数量字段,假设产品 P1 的颜色为“红色”和“绿色”,尺寸为“S”和“M”。我正在尝试使 Quantities 字段如下所示:所有可能组合的 4 个键:(Red,S),(Red,M),(Green,S),(Green,M),其值代表股票这些变化目前有库存。
所以,我的问题是:我是否走在正确的道路上?这种设计有效还是有更好的方法来做到这一点?谢谢。
【问题讨论】:
-
除了颜色/尺寸/库存还有其他属性吗?
标签: mysql database postgresql database-design relational-database