0

首先,我对数据库设计相当陌生,所以我希望我的问题是有意义的。我正在尝试设计一个关系数据库,它将一个表中的行连接到另一个表中的行。容易吧?好吧,我有点难过,因为在某些情况下,一行需要引用单独表中的每一行。

以啤酒食谱为例。

有一系列成分表(其中一个是谷物表)和一个单一的啤酒样式表谷物样式表旨在链接谷物表样式表,以显示适合每种啤酒样式的谷物。

餐桌谷物

id      name                Price
----------------------------------
0       German grain        1.20
1       Regular grain       1.00
2       Wheat               0.90
3       American grain      1.00

表格样式

id      name                 % Alcohol
--------------------------------------
0       German beer          6
1       Australian beer      4
2       American beer        3
3       Generic Beer         5

表粒样式

id      style_id             grain_id
-------------------------------------
0       0                    0
1       0                    1
2       0                    2
3       1                    1

这是我在这里看到的三种情况:

情景 1:某些谷物仅适用于某些啤酒风格。德国谷物只适用于德国啤酒。

场景 2:某些谷物适用于所有啤酒风格。普通谷物可用于德国啤酒、美国啤酒或任何其他风格。

场景 3:所有颗粒都适用于特定样式。德国谷物、普通谷物或任何其他谷物都可用于通用啤酒。

在Grains-Styles Table中创建大量行似乎效率低下。style_id AND/OR grain_id 列中是否有与通配符值等效的内容?

我该如何解决这个问题?这个概念叫什么?只是有点迷失在这里,当然在我头上。提前感谢您可能提供的任何帮助。

4

1 回答 1

1

那是多对多的关系,我不认为它是低效的。由于元组(style_id, grain_id)也是唯一的,您可以将其用作主键并删除id列。

于 2013-02-23T23:54:12.920 回答