Sql 创建我的食物数据库的更好方法是什么?

Sql 创建我的食物数据库的更好方法是什么?,sql,normalize,Sql,Normalize,我承担了创建关系数据库的项目,该数据库将包含我们在现代烹饪中使用的所有基本成分。正如你所能想象的,将会有成千上万的物品。我没有太多的sql经验,所以我很难找到一种似乎有效的存储成分的方法。 如果你到这里,你可以看到我目前正试图放入数据库的列表 我的数据库current为每个主要和子类别的食品都提供了一个表,例如谷物表和小麦表。起初这样做似乎还可以,但后来我意识到还有几十个子类别。对于wiki列表中的每个项目,我必须创建更多的表。我觉得这么多的表格会使我的项目效率很低。有没有更好的方法来创建我的数

我承担了创建关系数据库的项目,该数据库将包含我们在现代烹饪中使用的所有基本成分。正如你所能想象的,将会有成千上万的物品。我没有太多的sql经验,所以我很难找到一种似乎有效的存储成分的方法。 如果你到这里,你可以看到我目前正试图放入数据库的列表

我的数据库current为每个主要和子类别的食品都提供了一个表,例如谷物表和小麦表。起初这样做似乎还可以,但后来我意识到还有几十个子类别。对于wiki列表中的每个项目,我必须创建更多的表。我觉得这么多的表格会使我的项目效率很低。有没有更好的方法来创建我的数据库?还是我走对了路?以下是我的表格中的列的示例:

    id INT(11),name VARCHAR(45),parent INT(11),img VARCHAR(45),desc VARCHAR(45)
父INT(11)将是父表的外键,因此我认为它们都将以这种方式连接。
任何建议都将不胜感激~谢谢

首先,我不建议将所有这些存储在单独的表中--这会让你发疯:-)

然而,我认为你有两个选择

< P>选项1(邻接表模型)——考虑使用“<代码> >食物<代码>表,用<代码> FoodWord//>代码> <代码> FoodNo> <代码>,<代码> PalpFoodDe< /C> >,您希望存储的任何其他属性。这是存储数据最容易的方法,但返回结果可能会有点麻烦,因为您需要多次在同一个表上加入以返回级别

选项2(嵌套集模型)--此选项仍将有一个
Foods
表,但不是有一个
ParentFoodId
,而是有两列,左索引和右索引。起初,这可能要复杂一些,但如果您有多个未知的嵌套父子关系,则查询起来会更容易

请看这篇文章以了解更多的解释:


祝你好运。

我觉得论坛太宽了。。。但你走错了方向。每种食物都应该有一排,而不是一张桌子。是的,有点宽泛,但我一直很难找到帮助。因此,如果我将类别放在行中,我将如何插入成分?主题是规范化。你应该研究一下。用名词来思考可能会有帮助,所以对于你的例子来说,配料、类别、菜肴都是很好的候选。然后,你将有关联表之间显示哪些成分是用在哪些菜等。这是非常聪明的!谁也猜不到这是怎么回事。我想,创建自己的索引是一条路。我将尝试嵌套模型。谢谢