2010-09-16 54 views
0

假設我有一張蘋果表(apple_id)。對於每個蘋果,我都有一段時間的重量歷史。如何構建它,以便每次添加蘋果時,都會創建一個關聯表以及其體重歷史記錄?指向SQLite中的表的指針

有重量的歷史的所有蘋果(apple_id,年齡,體重),只有一張桌子似乎是一個性能漏看,查看一個蘋果的重量歷史的時候,因爲它通過所有其他蘋果的重壓歷史看。因此,我似乎需要爲每個新蘋果創建一個新表(並且每次刪除蘋果時刪除它)。這個怎麼做?

我的想法是使用apple_id並將其轉換爲字符串。這樣,表格的名稱是獨一無二的,並且易於生成。

回答

2

剛剛描述的內容聽起來像是一場維護噩夢。你在這裏得到的是一段時間內蘋果與其權重之間的一對多關係。你可以這樣做:

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 

如果它的正確索引,性能將不會是一個問題。當做這樣的事情時,關係數據庫非常高效,因爲它們是爲它設計的。