2

我承担了创建一个关系数据库的项目,该数据库将包含我们在现代烹饪中使用的所有基本成分。正如您可以想象的那样,将有数千个项目。我没有太多的 sql 经验,所以我无法找到一种看似有效的存储成分的方法。如果你去这里http://en.wikipedia.org/wiki/Outline_of_food_preparation#General_ingredients你可以看到我目前正试图放入我的数据库的列表。

我的数据库当前有一个表格,用于食品 ex 的每个主要和子类别。谷物的桌子和小麦的不同桌子。起初这样做似乎没问题,但后来我意识到还会有几十个子类别。对于该 wiki 列表中的每个项目,我必须创建更多表和更多表。我觉得过多的表格会使我的项目效率很低。有没有更好的方法来创建我的数据库?还是我走在正确的轨道上?这是我的表中列的示例:

    id INT(11),name VARCHAR(45),parent INT(11),img VARCHAR(45),desc VARCHAR(45)

parent INT(11) 将是任何父表的外键,所以我认为它们都会以这种方式连接。任何建议表示赞赏!~谢谢

4

1 回答 1

1

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

但是,我认为您有两个选择。

选项 1(邻接列表模型)- 考虑使用单个Foods表,其中包含您希望存储的FoodIdFoodName、 、 AnyOtherAttributes。ParentFoodId这是存储数据最简单的方法,但返回结果可能会有点麻烦,因为您需要多次加入同一个表才能返回级别。

选项 2(嵌套集模型)——此选项仍将具有单个Foods表,但ParentFoodId您将拥有 2 列,left_index 和 right_index,而不是 a。起初这可能有点复杂,但如果您有几个未知的嵌套父子关系,则更容易查询。

看看这篇文章以获得一些进一步的解释:

http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

祝你好运。

于 2013-01-23T18:50:22.747 回答