持有数据库表的序列化数据不良做法?

时间:2013-04-28 11:16:33

标签: mysql database json

在我的Web应用程序中,我将用户配置文件信息存储在编码的JSON数组中,下面是一个示例。

{"youtube":"username","skype":"username","facebook":"username","twitter":"username","googlep":"username","steam":"username","origin":"username"}

这是不好的做法吗?

2 个答案:

答案 0 :(得分:0)

是的,请参阅:Normalizaion您必须在一个字段中存储一个值。而不是多重。

你最好选择第二张表:

user_id   |  system   | username
   1      |  youtube  | the name
 .............................

user_id是用户表的外键。并且您有一个组合的主键(user_idsystem

<强>更新 在生产中,正常化标准化水平为3级,因为实现更高的标准化非常困难。当然,由于几个原因(我在这里看不到你的),规范化表格/模型或其中的部分内容可能是件好事。

答案 1 :(得分:0)

正如Burhan Khalid在评论中所说,这取决于你想要实现的目标。如果您只是存储该数据以便稍后显示它们,这很好。因此,您不会有将数据转换为JSON的开销。顺便说一句,这种技术被称为denormalization

此类JSON字段的问题是您无法使用SQL进行查询。所以这些数据在某种程度上丢失了。但是,如果您不需要能够搜索该数据,则只需存储它们并在客户端处理数据。

但是如果你需要访问数据,你应该normalize你的数据库。因此,您将能够查询数据,并且必须将结果转换为JSON字符串。函数json_encode()非常简单。