我试图弄清楚"最好的方式"为产品配置器设计数据库,其中有项目和组件。现在每个Item可以有多个组件,其中(可能)任何组件可以有其他组件,这些组件可以是其有效的替代品或与之不兼容。
P.S。抱歉,这是一个noob问题和我的英语不好。
答案 0 :(得分:0)
项目和组件关系可以通过一对多的方法完成。您可以通过将主键和外键相互连接来设计表。
我对你的另一个问题的建议是使用" parent_id"做法。组件表可以具有" parent_id"列,因此您可以设置实际组件及其替代品。
以下是示例组件表:
+----+---------+-----------+
| id | item_id | parent_id |
+----+---------+-----------+
| 1 | 1 | null |
| 2 | 1 | 1 |
| 3 | 1 | 1 |
+----+---------+-----------+
上表,item_id = 1有三个组件,其中id为1,2和3. id = 1的组件有两个替换,分别为2和3.
更新
+----+---------+-----------+
| id | item_id | parent_id |
+----+---------+-----------+
| 1 | 1 | null |
| 2 | 1 | 1 |
| 3 | 1 | 2 |
+----+---------+-----------+
上表中,component_id 3是component_id 2的替代品(查看其parent_id),component_id 2是component_id 1的替代品。
答案 1 :(得分:0)
项目 - 组件表如下:
+--+------------+---------+-----------+
|id|component_id|parent_id|parent_type|
+--+------------+---------+-----------+
| 1| 1| 1| i|
| 2| 2| 1| c|
+--+------------+---------+-----------+
其中,parent_type
的值显示父级为item
列(包含i
)或component
列(包含c
)
这样的项目表:
+--+-------+
|id|content|
+--+-------+
| 1| xxx|
+--+-------+
这样的组件表:
+--+-------+-------------+
|id|content|other_columns|
+--+-------+-------------+
| 1| xxx| ...|
| 2| xxx| ...|
+--+-------+-------------+