2010-08-22 49 views
2

及彼我的回答後: Database issue, how to store changing data structureDB效率,PHP應用程序

我有另外一個問題。

可以說,我有一個鍛鍊:

first set: 60 push ups 
second set : 55 push ups 
third set: 50 push ups 
firth set: 45 push ups 
and so on.. 

我認爲這將是一種浪費,使每一組, 的條目,但做這樣的事情:

workout_id tabindex  repeat  quantity  quantity_unit activity 
1   1   3   60,55,50,45 pcs   pushups 
1   2   1   2   minutes  rope-jumping 

似乎簡陋。

有什麼建議嗎?

回答

1

你總是可以把數量在自己的表,那麼你最終得到的數據看起來像這樣的:

tblWorkouts: 
---------------------------- 
workout id activity etc 
---------------------------- 
1   pushups ... 


tblQuantities 
------------------------------ 
qID  workout_id quantity 
------------------------------ 
1  1    60 
2  1    55 
3  1    50 
4  1    45 

的量被鏈接在訓練表奧鋼聯workout_id正確的紀錄 - 這就是關係在關係數據庫中:-)

這使您在數據庫中處理數據後可以靈活處理數據。這種方式將其存儲爲數字,而不是逗號分隔的字符串,如果您想從中獲取任何有意義的數據,則必須對其進行解析和合並。

+1

我剛剛讀了你的其他問題;這是Pekka已經給你的完全一樣的建議,你接受了這個建議作爲你的答案。它是一種多對一的關係 - 如果你還沒有理解,那麼將這個術語看作進一步閱讀。 – Erik 2010-08-22 06:06:36

1

這不是原始的。這是正常化。如果你這樣做,你可以很容易地知道你做過多少次俯臥撐,或者每組俯臥撐的平均數量。

每個記錄一套是最靈活的方式,您可以獲得更有意義的數據。不要以逗號分隔保存。你正在破壞關係數據庫的目的。如果你想存儲這樣的數據,請使用couchdb。

0

數據庫設計中最重要的一件事是減少冗餘。你所描述的是很多我一起工作的人會解決同樣的問題。

有一件事我會建議將抽象quantity_unitactivity自己的表,因爲activity總是由同一個quantity_unit進行測量,並讓他們分開意味着你只需要存儲的活動的名稱一次在一些表中。