php – json列vs多列

前端之家收集整理的这篇文章主要介绍了php – json列vs多列前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我甚至不知道是否将其称为序列化列是正确的,但我将解释自己,例如,我有一个用户表,我想存储用户的电话号码(手机,家庭,办公室等)所以,我想为每个数字类型创建一个列,但同时我想到了一个想法,如果我在一个列中保存一个json字符串,那么,我将永远不会有一个列可能将永远不会被使用,我可以在从数据库中读取数据时将该字符串转换为PHP数组,但我想听听这种做法的商品和坏处,也许这只是一个坏主意,但首先我想知道是什么其他人不得不说

谢谢

简答,多列.

答案很长:

为了爱世界上所有圣洁的人,请不要在单个文本列中存储多个数据集

我假设你将有一张桌子

+------------------------------+      +----------------------+
| User |  cell | office | home |  OR  | User | JSON String   |
+------------------------------+      +----------------------+

首先,我会说这两种解决方案都不是最好的解决方案,但如果你要从两者中选择第一种解决方案是最好的.主要有几个原因,但具体修改查询的能力非常重要.想想algrothim修改第二个选项.

SELECT `JSON` FROM `table` WHERE `User` = ?

Then you have to do a search and replace in either your server side or client side language

Finally you have to reinsert the JSON string

解决方案总计2个查询搜索和替换算法.不好!

现在想想第一个解决方案.

SELECT * FROM `table` WHERE `User` = ?

Then you can do a simple JSON encode to send it down

To modify you only need one Query.

UPDATE `table` SET `cell` = ? WHERE `User` = ?

to update more than one its again a simple single query 

UPDATE `table` SET `cell` = ?,`home` = ? WHERE `User` = ?

这显然更好,但并不是最好的

还有第三种解决方案假设您希望用户能够插入无限数量的电话号码.

让我们使用关系表,所以现在有两个表.

+-------------------------------------+
+---------+   |      Phone                          | 
| Users   |   +-------------------------------------+ 
+---------+   | user_name| phone_number | type      |
| U_name  |   +-------------------------------------+
+---------+

现在,您可以使用类似的内容查询用户的所有电话号码

现在,您可以通过连接查询

选择用户.,电话.来自电话,用户WHERE phone.user_name =? AND Users.U_name =?

插入也很简单,类型检查也很容易.

请记住,这是一个简单的示例,但sql确实为您的数据结构提供了大量的功能,您应该使用它而不是避免使用它

猜你在找的PHP相关文章