引用连接表中的多个(或所有)行

时间:2013-02-23 23:47:26

标签: database join relational-database

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

以啤酒食谱为例。

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

Table Grains

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

Table Grains-Styles

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

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

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

场景2:某些谷物适用于所有啤酒风格。常规谷物可用于德国啤酒,美式啤酒或任何其他风格。

场景3:所有谷物都适用于特定风格。德国谷物,普通谷物或任何其他谷物可用于Generic Beer。

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

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

1 个答案:

答案 0 :(得分:1)

那是Many-to-many relationship,我认为它根本没有效率。由于元组(style_id, grain_id)也是唯一的,因此您可以将其用作主键并删除id列。