如何将项目列表与单行关联?

时间:2013-12-30 21:06:13

标签: sql database-design

我在这里看到了一些类似的问题,但没有人能得到我需要的答案。

我需要一种将多个项目与多对一关系中的单个条目相关联的方法。唯一的问题是这些项目也必须与其他条目相关联。想象一下作为各种配方的条目和作为零件/配料的物品。多个食谱可能需要这些部分。

最理想的解决方案是每个食谱条目都以某种方式包含一个项目ID数组,但遗憾的是,SQL数据库无法实现这一点。我能想出的唯一真正的解决方案是一个食谱表,它只存储食谱ID,名称,描述等,以及一个将食谱ID与物品ID相关联的表格。然而,这个解决方案似乎不切实际,因为我最终会在两列中都有一堆重复ID的表。

澄清一下,这就是我的意思:

recipeID | itemID
101      | 1001
101      | 1002
101      | 1012
102      | 1001
102      | 1031
103      | 1030
103      | 1031
103      | 1032

正如你所看到的,它很快就会变得混乱和重复。有没有更好的方法来解决这个问题?

此外,在这种情况下使用NoSQL面向文档的数据库会更好吗?这是我的另一个想法。

1 个答案:

答案 0 :(得分:5)

这正是你应该如何处理的。它被规范化了。它被称为联结表:http://en.wikipedia.org/wiki/Junction_table