2010-12-03 53 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,这是加入它们的方式