如何规范化或设计我的MySQL数据库

时间:2010-12-03 18:55:36

标签: mysql database-design

我想知道在MySQL中同时存储大约50个数据的哪个结构很好?

首先

 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个用户。

3 个答案:

答案 0 :(得分:0)

绝对是第一个!如果需要具有超过50个不同的“数据密钥”,该怎么办?第一种解决方案更灵活,更无污染。

答案 1 :(得分:0)

您是否知道数据密钥并且可能会更改?如果它们沿着“first_name,last_name,hair_color,eye_color,birthday,......”的方向排列,那么第二个模型将是可行的,因为您经常希望同时为用户检索所有这些模型。 / p>

第一个模型就像拥有持久哈希表一样,因此您必须将所有值存储为字符串,并且您的应用必须知道要查询的键。但是,如果键是用户定义的,则这是有意义的。

答案 2 :(得分:0)

我认为第二种解决方案不是一种方法。 如果我不认为错误并非所有tue用户都是2,但你有不同的数字,你应该做的是将该表标准化,将其除以。

有一个:

表主: id,data_id,user_id

表键 main_id,data_key

表数据: main_id,data_content

其中两个表中的key和data main_id都是表main中的id,这是加入它们的方式