【发布时间】:2019-05-22 06:57:48
【问题描述】:
我正在开发一个简单的应用程序,用户可以在其中跟踪他们的体重历史。
我有以下表格:
出于演示的目的,我将使用 5 的用户 ID。
当我想保存用户的体重历史时,我会这样做:
INSERT INTO userWeight (userID, weight) VALUES (5, 76)
这会将权重保存到数据库中。
当我想检索特定用户的体重历史记录时,我会这样做:
SELECT weight, timee FROM userWeight WHERE userID = 5
我的问题是,这似乎是一种有趣的做事方式。我可以使用更好的数据库设计吗?
通过这种设计,所有用户的权重都存储在一个表中,这是正确的方法吗?
谢谢。
【问题讨论】:
-
对我来说似乎是一个合理的方法。
-
为什么你认为这是一种有趣的做事方式?这似乎是最自然的方式。您不希望在权重表中复制用户信息,因为这将是多余的。这是第一个标准化步骤。
-
如果您正在考虑为每个用户创建一个单独的权重表,请立即将这个概念抛在脑后。变量信息应该在表数据中,而不是表或列名。
-
50K 并不大,数据库的设计目的远不止于此。您可以使用数据库分区,而日期通常是更好的分区方案(因为较旧的记录通常不太有趣)。
-
为了比较,我们将购买交易表按年份划分。每年的表格包含 1200 万行。