假设我有一张苹果表(apple_id)。对于每个苹果,我都有其重量随时间变化的历史。如何构造它,以便每次添加一个苹果时,都会创建一个与其重量历史相关的表?
在查看一个苹果的重量历史时,只有一个所有苹果的重量历史表(apple_id,age,weight)似乎会消耗性能,因为它必须查看所有其他苹果的重量历史。所以看来我需要为每个新苹果创建一个新表(并在每次删除苹果时删除它)。这该怎么做?
我的想法是使用 apple_id 并将其转换为字符串。这样表的名称是唯一的并且易于生成。
假设我有一张苹果表(apple_id)。对于每个苹果,我都有其重量随时间变化的历史。如何构造它,以便每次添加一个苹果时,都会创建一个与其重量历史相关的表?
在查看一个苹果的重量历史时,只有一个所有苹果的重量历史表(apple_id,age,weight)似乎会消耗性能,因为它必须查看所有其他苹果的重量历史。所以看来我需要为每个新苹果创建一个新表(并在每次删除苹果时删除它)。这该怎么做?
我的想法是使用 apple_id 并将其转换为字符串。这样表的名称是唯一的并且易于生成。
你刚才描述的听起来像是一场维护噩梦。您在这里拥有的是随着时间的推移苹果与其权重之间的一对多关系。你可以做:
apples table: apple_id, other apple fields
apple_weights table: aw_id, apple_id, weight, age
然后为给定的苹果拉所有的重量,只是
SELECT weight, age
FROM apple_weights
WHERE apple_id=X
ORDER BY age ASC
如果它被正确索引,性能将不是问题。关系数据库在做这样的事情时非常有效,因为它们是为此而设计的。