我已经尝试解决该系统的问题,但是我不确定如何实现这一目标
让我解释一下我想要什么:
有1个配置表,其中可以包含多个子配置,
1个子配置可以包含多个子子配置,
1个子子配置,可以包含多个子子子配置
和1个Sub-Sub-Sub-Configuration可以包含产品:
抱歉,这很令人困惑,但这是问题所在。
子配置只能包含产品。子子配置相同。
其中最棘手的部分是客户需要与所有这些子配置和产品建立连接。
所以我有一个这样的例子:
A是配置,也是唯一的配置
A1,B1和C1是配置A的子配置
A2,B2和C2是子配置A1的子子配置
A3,B3和C3是子子配置A2的子子子配置
我们将奶酪,薯条和鱼作为Sub-Sub-Sub-Configuration A3的产品。
但是在C2中也可能像牛一样。
然后,客户对奶酪和牛有真实的陈述,这意味着他选择了那些产品。
如果有任何天才可以帮助我解决这个问题,请让我知道;)
PS:我已经添加了PHP,因为这将用连接数据库的PHP代码完成。
答案 0 :(得分:2)
就像Eakethet在评论中提到的那样,一个好的解决方案是为所有配置创建一个表,然后使用parent_id列引用自身。
我会做这样的事情。
+-----------+-----------------+-----------+
| config_id | name | parent_id |
+-----------+-----------------+-----------+
| 1 | Main | null / 0 |
| 2 | Animal products | 1 |
| 3 | Cow | 2 |
| 4 | Chicken | 2 |
| 5 | Milk | 3 |
| 6 | Cheese | 3 |
| 7 | Egg | 4 |
+-----------+-----------------+-----------+
这将在每个配置之间建立清晰直接的关系。需要知道鸡蛋来自哪里吗?查找父母。需要知道您从奶牛那里得到什么产品吗?以Cow的config_id为例,找到所有将其列为其父项的项目。
编辑:
进一步解释此结构。
您具有主配置(在问题中称其为A)。 Main具有用于标识它的唯一ID(config_id = 1)。在Main下面,我们有第一个子配置,我在回答中将其命名为“动物产品”。在其parent_id列中,它引用“ Main”的config_id。基本上,这是说“ Main”是其父配置。这是“主要”的子配置。
“动物产品”下面是子配置的下一层。我将我的名字命名为“ Cow”和“ Chicken”。它们都在各自的parent_id列中引用了“动物产品”的config_id。它们是“动物产品”的子子配置。
在底部有产品或子-子-子配置。 “牛奶”和“奶酪”都以“母牛”作为父母(parent_id 3),而“蛋”则以“鸡”(parent_id 4)为代表。
此操作可以根据需要继续向下扩展。如果您发现需要特定品牌的奶酪(切达奶酪或高达奶酪),则可以将其称为“奶酪”作为其父代。如果确定需要在“动物产品”和“鸡肉”之间的级别上进行配置,则可以添加名为“ Birds”的配置。设置它的parent_id以引用“动物产品”(1)的config_id,然后设置“鸡”的parent_id以引用“鸟类”的config_id。