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确实为您的数据结构提供了大量的功能,您应该使用它而不是避免使用它

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...