我有一个 Users 表,我正在构建一个应用程序,该程序可以跟踪一个人每天吃多少水果。
当用户进入应用程序时,他们选择每天要吃的水果。该表将如下所示:
CurrentlyEating
---------------
ID
FruitID (Foreign Key)
UserID (Foreign Key)
还需要一个包含用户可能采摘的所有水果的表:
Fruits
------
ID
Name
这是实现这一目标的最佳方法吗?我一直在阅读查询表,但不确定这是否是更好的方法。另外,如果我决定在此表中添加更多水果,则需要在前端轻松进行更新。
最后,我还有一个名为Journal的最后一个表,该表记录了用户每天吃的特定水果的数量:
Journal
-------
ID
DateTime
FruitID (Foreign Key)
UserID (Foreign Key)
AmountConsumed
因此,总的来说,我只想知道我的方法是否是实现此目标的最佳方法,以及是否有更有效的方法。
谢谢
答案 0 :(得分:0)
您的总体方法看起来不错:拥有一个引用表来存储所有可能的结果,然后使用外键进行引用。创建一个单独的表以保留用户选项也是一个好主意。
这是总体设计:
表USER(您已经有):
id ...
1
桌果:所有可能的水果(可以添加更多信息,例如:每克卡路里,...)
id name ...
1 orange
2 banana
USER_FRUITS:哪个用户选择了哪种水果(此处,用户1选择了香蕉)
id user_id fruit_id
1 1 2
JOURNAL:哪个用户食用了哪个水果(用户1吃了20克香蕉)
id datetime user_id fruit_id amount
1 ... 1 2 20
基于此设计,这是一个查询,该查询返回给定用户的日志:
SELECT j.datetime, f.name, j.amount
FROM journal as j
INNER JOIN fruits as f ON f.fruit_id = j.id
WHERE j.user_id = ?
ORDER BY j.datetime
答案 1 :(得分:0)
我认为您的做法很好。这是保存此数据结构的最佳方法。