【发布时间】:2011-12-08 13:07:03
【问题描述】:
我正在解析美国农业部的食品数据库并将其存储在 SQLite 中以供查询。每种食物都含有相同的 162 种营养素。似乎营养素列表(名称和单位)已经有一段时间没有改变了,因为这是一个爱好项目,我不希望出现任何突然的变化。但每种食物都有与每种营养素相关的独特数量。
那么,如何合理地存储此类信息。我的优先事项是多编程语言友好(Python 和 C++ 优先),作为编码人员的我的理智,以及随着时间的推移轻松检索营养集以求和或绘图。
到目前为止,我想到的两件事是 162 列(我不是特别喜欢,但它确实使查询更简单),或者一个食物表,它有一个指向 nutrition_list 表的链接,然后链接到带有营养名称和单位的静态表。如果我的期望是错误的,第二个似乎更灵活,但我什至不知道从哪里开始编写求和和时间序列的查询。
谢谢
【问题讨论】:
-
第二种方法是明智的。
-
Magnus Lie Hetland 的“Python 入门:从新手到专业人士”有一节展示了如何使用 Python 和 sqlite 创建数据库应用程序。幸运的是,he uses the USDA nutrient database for the example.
-
两个(当前)答案都是正确的恕我直言,但我要补充一点,您应该在 Food 和 Nutrient 外键列的“FoodNutrients”表上放置一个唯一索引。该索引不仅可以加快您的查询速度,还可以防止您为相同类型的食物插入相同的营养素。