2010-12-03 57 views
1

我想知道哪一個結構很適合在MySQL中同時存儲約50個數據?如何正常化或設計我的MySQL數據庫

首先

data_id user_id  data_key data_content 
--------------------------------------------------- 
1  2   data_key1 content 1 
2  2   data_key2 content 2 
3  2   data_key3 content 3 
..  ..   ..   .. 
..  ..   ..   .. 
50  2   data_key50 content 50 

data_id user_id data_key1 data_key2 data_key3 .. .. data_key50 
------------------------------------------------------------------- 
1  2  content 1 content 2 content 3 .. .. content 50 

或者有其他解決方案? user_id將擁有超過5000個用戶。

+0

在第二種情況下,爲什麼你有一個data_id列?如果您已有50列,則不需要五十列。 – 2010-12-03 18:59:48

回答

0

您是否知道數據密鑰,是否可能更改?如果他們沿着「first_name,last_name,hair_color,eye_color,birthday,...」的行,那麼第二個模型將是可行的,因爲您經常想要同時爲用戶檢索所有這些。

第一個模型就像擁有一個持久散列表,所以你必須將所有的值存儲爲字符串,你的應用程序必須知道要查詢哪些鍵。然而,如果這些鍵是用戶定義的,這可能是有意義的。

+0

所有`data_key`固定和`data_content`由用戶。 – Blur 2010-12-03 19:10:01

0

絕對是第一個!如果需要有超過50個不同的「數據密鑰」會怎麼樣?第一種解決方案更加靈活和無污染。

0

我不認爲第二種解決方案是goeod。 如果我不認爲錯誤,並非所有的tue用戶都是2,但是你有不同的數字,你應該做的是規範化該表,將它分爲。

一個具有:

表主:在兩個表中 main_id,data_content

其中: ID,data_id邀請,USER_ID

表鍵 main_id,data_key

表數據鍵和數據main_id反饋到主表中的id,這是加入它們的方式