gpt4 book ai didi

php - 如何设计数据库让用户输入和保存食谱

转载 作者:行者123 更新时间:2023-11-30 22:02:32 25 4
gpt4 key购买 nike

对于大学项目,我需要执行以下操作:

  1. 让用户通过 HTML 表单输入成分,通过 PHP 将其处理到我的 MySQL 数据库中。例如:用户输入鸡蛋、数量和卡路里。
  2. 让用户根据这些成分制作食谱。所以另一种形式有配方名称和配料。

现在我的问题是:如何以正确的方式连接这些表?那么带有 recipename 的 tablerecipe 知道 repiceid 1 由 3 个鸡蛋、100g 牛肉和 300g 奶酪组成?

我读到了查找表,但我不理解它们。任何帮助将不胜感激。

到目前为止,我的表结构如下所示:

Database diagram

最佳答案

如果每个食谱都有多种成分,并且每种成分只属于一个食谱,那么您就有一个一对多关系。你应该像这样定义你的表:

+----------------+                                 +------------------+
| recipes | | ingredients |
+----------------+ +------------------+
| recipe_id <----------------+ | ingredient_id |
| recipe_name | | | ingredient_name |
| | +----------------+ recipe_id |
| | | |
| | | |
| | | |
| | | |
| | | |
+----------------+ +------------------+

注意 ingredients 表如何有一个 recipe_id 指向 recipes 表中的配方。当你想查询属于一个食谱的所有成分时,你可以这样查询:

SELECT 
*
FROM
recipes r
INNER JOIN ingredients i WHERE i.recipe_id = r.recipe_id

但是,这可能不是您想要的,因为您可能想多次使用一种成分。在这种情况下,每种成分可以属于多个食谱,每个食谱可以有多个成分。这是一个多对多关系。你应该像这样定义你的表:

+----------------+                                 +------------------+
| recipes | | ingredients |
+----------------+ +------------------+
| recipe_id <---+ +--> ingredient_id |
| recipe_name | | | | ingredient_name |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
+----------------+ | | +------------------+
| |
| +--------------------+ |
| | recipe_ingredients | |
| +--------------------+ |
| | id | |
+--+ recipe_id | |
| ingredient_id +--+
| quantity |
| type |
| |
| |
| |
| |
+--------------------+

注意额外的表格。这有时称为 bridge 表,它将 recipe_idingredient_id 相关联。这样,不止一种配料可以与一个食谱相关联,并且不止一种食谱可以与一种配料相关联。我还在桥接表中添加了两个额外的列,为关系添加了更多信息。我添加了一个 quantity,它是要使用的配料的数量,还有一个 type 可以用来定义测量类型(即杯子、克、茶匙等) ).在这种情况下,当你想查询属于一个食谱的所有成分时,你可以这样查询:

SELECT 
*
FROM
recipes r
INNER JOIN ingredients_recipes ir ON ir.recipe_id=r.recipe_id
INNER JOIN ingredients i ON i.ingredient_id=ir.ingredient_id

关于php - 如何设计数据库让用户输入和保存食谱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42933962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com