DB设计用于替代组件

时间:2018-01-14 20:02:23

标签: database postgresql

我试图弄清楚"最好的方式"为产品配置器设计数据库,其中有项目和组件。现在每个Item可以有多个组件,其中(可能)任何组件可以有其他组件,这些组件可以是其有效的替代品或与之不兼容。

P.S。抱歉,这是一个noob问题和我的英语不好。

2 个答案:

答案 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|          ...|
+--+-------+-------------+