我正在尝试为我的本地主机开发一个应用程序,我可以在该应用程序上跟踪一段时间内的身体属性(ht、体重、体水、体脂等),以便与卡路里摄入量进行比较,以进行膳食计划等。这就是我所拥有的现在:
DB surname
TBL home
memberID (tiny int, 1, auto increment, primary key)
name (varchar, 30)
gender (char, 1) ->value should be m or f, but this isn't defined anywhere
birthdate (datetime)
为了随着时间的推移存储物理数据,我考虑过使用一个包含三列主键(日期、人员、测量类型)的表,每列上都有常规的单列索引,这样我就可以查找日期的所有条目或一个人或测量类型。像这样:
DB surname
TBL stats (or something to that effect)
date (datetime, PK1, index)
memberFK (tiny int, 1, PK2, index)
type (varchar, 3, PK3, index) -> possible values should be ht | wt | fat | wat maybe others will also become necessary
value (decimal, 4/1) -> store all values in nnn.n format in a particular system (ie metric) and do any conversions, add units, etc when the data is called
这似乎仍然会产生很多多余的冗余,所以我想可能将每个用户的测量值存储在他们自己数据库中的表中,如下所示:
DB user1
TBL stats
date (datetime, PK1, index)
type (varchar, 3, PK2, index)
value (decimal, 4/1)
这似乎通过从外键(以及整个表)中删除一列来稍微清理它,但也阻止我在此表和其他非用户特定的营养相关表之间使用外键。另一方面,我计划为其他家庭主题开发应用程序,其中有一般数据和用户特定数据,所以如果有像这样的数据库之间使用数据的好方法,这也许是最好的方法。
所以这些对我来说似乎都不对,但我不知道如何让它们变得更好。我倾向于第二个示例,前提是我可以找到保持数据完整性的方法。请对您认为有帮助的建议提出任何意见。谢谢!