在另一个MySQL表中对来自一个MySQL表的行进行分组

问题描述:

我试图构建一个配方Web应用程序,并且希望将配方'Steps'构建到MySQL表中,然后可以将它们组合成'Stages' - 即多个脚步。 构建基表是微不足道的,因为它从以前的一部分工作都以CSV格式完成,但我想了解的是如何构建第二个表,它将由表1中的几行组成?在另一个MySQL表中对来自一个MySQL表的行进行分组

表1( '步骤'):然后

Step_#  Step_Desc  Consumable  Tool  Recipe 
-------------------------------------------------------- 
    1  Add ingredient Sugar   Bowl  n/a 
    2  Add ingredient Butter  Bowl  n/a 
    3  Mix base ings.  n/a   Mixer  FN_1 
    4  Add ingredient  Eggs   Bowl  n/a 
    5  Add ingredient Flour   Bowl  n/a 
    6  Mix ingredients n/a   Mixer  FN_1 
    7  Transfer to tray n/a   Tray  n/a 
    8  Place in oven  n/a   Oven  200C/50min 
    9  Remove to cool  n/a   Rack  30 min 
--- and so on for 400+ steps 

表2( '阶段')将是一个系列的行收集这些各种步骤为不同的组,例如:

准备海绵:Step_#1,2,3,4,5,6,7 {从表1}

烘烤和休息:Step_#8,9 {从表1}

骰子水果和冷却:Step_# 193,194,306(等 - 表1将拥抱这个例子非常有限和无聊)。

有没有人有关于如何实现这个(外键/逻辑?)在MySQL的建议?这甚至有可能吗?

干杯

编辑: 每一步都需要在多个阶段被调用。 (谢谢丹)。

+0

对于答案:请参阅Daniel对他自己的回答的评论。 – user2658194

您可以将steps表添加到名为stage_id的新表中,并保留在此阶段的id列中。

+0

我认为这会限制 - 我承认我没有说明 - 在多个阶段使用任何步骤。我会编辑来说明这一点。感谢您的答复。 – user2658194

+0

在这种情况下,您可以应用多对多关系。 让列表'steps_stages'带有列'step_id'和'stage_id'。然后,这个表格中的'stages'和'steps'之间的任何连接。你可以有一个阶段的一些阶段和一个阶段的一些步骤。 此解决方案不提供排序。要在'stage'中添加'step'的顺序,您还可以在table'steps_stages'中添加'order'列。这个关系被称为“带参数的多对多”。 – Daniel

+0

我认为这就是它!我没有听说过多对多的,所以我会研究一下。谢谢 – user2658194