在我的 Web 应用程序中,我将用户个人资料信息存储在一个编码的 JSON 数组中,下面是一个示例。
{"youtube":"username","skype":"username","facebook":"username","twitter":"username","googlep":"username","steam":"username","origin":"username"}
这是不好的做法吗?
是的,请参阅:规范化您必须在一个字段中存储一个值。而不是多个。
您最好使用第二张桌子,例如:
user_id | system | username
1 | youtube | the name
.............................
whileuser_id
是用户表的外键。并且您有一个组合的主键 ( user_id
, system
)
更新 在生产中,正常的标准化水平是 3 级。因为实现更高的标准化非常困难。当然,由于几个原因(我在这里看不到你的),最好不要规范化表/模型或其中的一部分。
正如 Burhan Khalid 在他的评论中所说,这取决于你想要实现什么。如果您只是存储该数据以便稍后显示它们,这很好。因此,您不会有将数据转换为 JSON 的开销。顺便说一下,这种技术称为非规范化。
这种 JSON 字段的问题是您无法使用 SQL 查询它。所以这些数据以某种方式丢失了。但是,如果您不需要能够搜索该数据,您可以简单地存储它们并在客户端处理数据。
但是,如果您需要访问数据,您应该规范化您的数据库。因此,您将能够查询数据,并且必须将结果转换为 JSON 字符串。这对于函数来说非常简单json_encode()
。