首先,我对数据库设计还很陌生,所以我希望我的问题有道理。我正在尝试设计一个关系数据库,它将一个表中的行连接到另一个表中的行。容易吗?好吧,我有点难过,因为有些行需要引用一个单独的表中的每一行。
以啤酒食谱为例。
有一系列成分表(其中一个是 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列中是否存在等同于通配符值的内容?
如何解决此问题?这个概念叫什么?只是有点迷失在这里,当然在我的头上。提前感谢您提供的任何帮助。
答案 0 :(得分:1)
那是Many-to-many relationship,我认为它根本没有效率。由于元组(style_id, grain_id)
也是唯一的,因此您可以将其用作主键并删除id
列。