Database design 数据库设计新手,寻求建议

Database design 数据库设计新手,寻求建议,database-design,Database Design,比如说,我正在设计一个餐饮网站,客户可以在其中查看要订购的物品列表。此列表将来自数据库,表如下所示: id | name | description | course | price | cost ----------------------------------------------------------------- 1 | Pizza| Chicago style, of course! | entree | 20.00 |

比如说,我正在设计一个餐饮网站,客户可以在其中查看要订购的物品列表。此列表将来自数据库,表如下所示:

id | name | description               | course |  price  |  cost         
-----------------------------------------------------------------
1  | Pizza| Chicago style, of course! | entree |  20.00  |  10.00
id |  allergen     
-------------
1  |  wheat
2  |  eggs
3  |  dairy
4  |  soy
5  |  fish
6  |  nuts
item_id |  allergen_id
----------------------
     1  |  1
     1  |  3
现在让我们假设我想显示每个项目的过敏信息。因为每种食物都可能有多种过敏原,所以我认为单独一张桌子会更好

例如,如果我的过敏原表如下所示:

id | name | description               | course |  price  |  cost         
-----------------------------------------------------------------
1  | Pizza| Chicago style, of course! | entree |  20.00  |  10.00
id |  allergen     
-------------
1  |  wheat
2  |  eggs
3  |  dairy
4  |  soy
5  |  fish
6  |  nuts
item_id |  allergen_id
----------------------
     1  |  1
     1  |  3
我怎样才能把这两张表连接起来,显示比萨饼含有小麦和奶制品


有单独的表格是正确的方法吗?寻找建议,我以前从未设计过数据库。

根据您的示例,这将是items表和过敏原表之间的多对多关系。在这种情况下,应该有一个映射/连接表,用于映射带有过敏原的项目

假设映射表是items\u过敏原。该表将如下所示:

id | name | description               | course |  price  |  cost         
-----------------------------------------------------------------
1  | Pizza| Chicago style, of course! | entree |  20.00  |  10.00
id |  allergen     
-------------
1  |  wheat
2  |  eggs
3  |  dairy
4  |  soy
5  |  fish
6  |  nuts
item_id |  allergen_id
----------------------
     1  |  1
     1  |  3

您需要联接表以检索所需的列

关系模型不链接表进行查询。表表示关系。查询根据其他表/关系返回表/关系。它们通过关系和逻辑运算符组合表来实现这一点。结果表的关系是表关系的对应组合。了解关系数据库查询。您需要添加一个join或association表,给出包含过敏原的条目和过敏原id对。然后,在Items id=Pairs item id&allergones id=Pairs过敏原id的3个表中交叉连接,给出名称项包含过敏原的行

FKs外键被称为链接&错误的关系,但它们不是查询的一部分


查找并遵循已出版的学术信息建模与数据库设计教科书。

由于你的头衔和介绍,你可能会被否决。因此,一个问题的标题中确实需要有一个问题,有时这很棘手,因为当你对一个话题不熟悉时,很难知道该用什么词。但是,使用您当前使用的标题是不合适的,人们会蜂拥而至,对您的问题进行否决/关闭。你的问题很好,即使是重复的,向下投票可能是因为看到向下投票箭头鼠标在文本上显示的不是研究成果。对于重复性和广泛性的投票结果非常接近。在考虑发帖之前,请总是用谷歌搜索你的问题/问题/目标的许多清晰、简洁和准确的措辞,有或没有你的特定字符串/名称,并阅读许多答案。如果你发布一个问题,用一句话作为标题。足够的努力包括遵循已出版的学术信息建模和数据库设计教科书。