Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 基于多表查询的数据库规范化_Mysql_Database_Normalization - Fatal编程技术网

Mysql 基于多表查询的数据库规范化

Mysql 基于多表查询的数据库规范化,mysql,database,normalization,Mysql,Database,Normalization,我正在尝试创建一个与食谱相关的网站,用户可以在其中添加自定义膳食,在膳食中,他们可以添加食物,然后列出食物的成分。例如: Meal = Dinner Food = Hamburger Ingredient = Tomato 用户可以从预先填充的食品数据库中选择食品。他们还可以从中央配料数据库添加配料。因此,该网站的任何用户都可以使用相同的食品和配料ID 我面临的挑战是确保食物配料表以某种方式链接到用户。在下图中,膳食与用户关联。由于食品和配料ID可以被多个用户重复使用,我不能依靠这些ID来确定

我正在尝试创建一个与食谱相关的网站,用户可以在其中添加自定义膳食,在膳食中,他们可以添加食物,然后列出食物的成分。例如:

Meal = Dinner
Food = Hamburger
Ingredient = Tomato
用户可以从预先填充的食品数据库中选择食品。他们还可以从中央配料数据库添加配料。因此,该网站的任何用户都可以使用相同的食品和配料ID

我面临的挑战是确保食物配料表以某种方式链接到用户。在下图中,膳食与用户关联。由于食品和配料ID可以被多个用户重复使用,我不能依靠这些ID来确定哪个用户向食品添加配料

举个例子:

User 1 adds the food "hamburger" (id 10) to the meal_has_food table, then associates the ingredients "ketchup" (id 20) to the food_has_ingredients table.
User 2 adds the food "hamburger" (id 10) to the meal_has_food table, then associates the ingredients "pickles" (id 21) to the food_has_ingredients table.
如果有人进行搜索,从餐点汉堡包(10)中获取所有配料,并将其限制为一行,它将始终提供第一个人的条目。因此,我将餐id关联为一个外键,这样我就可以说获取属于餐id X的汉堡配料

我想知道这是否合理,或者是否有更好的方法

下面是一个粗略的数据库模式:

这不是更好吗?您想要的功能有哪些?据我所知,这正是你想要的。Woz不确定,可能吧?我从未访问过那个网站。伊格纳西奥,据我所知,似乎还不错。然而,我一直在和其他编程朋友交谈,他们似乎很困惑,为什么食物会出现在食物配料表中。他们觉得这不是必需的。要么我遗漏了一些明显的东西,要么我对结构的假设是正确的。所以我想我会对这件事有更多的意见。如果两顿饭可以用两种不同的配料吃同一种食物,那么你需要一些方法来表达这一点。你所做的只是这样做的一种方式。表名可能有点误导,但我想不出另外一个显而易见的方法来做到这一点。