简答,多列。
长答案:
为了世界上所有神圣的事物,请不要在单个文本列中存储多个数据集
我假设你会有一张桌子,要么是
+------------------------------+ +----------------------+
| User | cell | office | home | OR | User | JSON String |
+------------------------------+ +----------------------+
首先我会说这两种解决方案都不是最好的解决方案,但如果您要从两者中选择第一个是最好的。主要有几个原因,尽管修改和查询的能力非常重要。考虑修改第二个选项的算法。
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 | +-------------------------------------+
+---------+
现在您可以使用类似的方式查询用户的所有电话号码
现在您可以通过连接查询表
选择用户。,电话。 FROM Phone,用户 WHERE phone.user_name = ? AND Users.U_name = ?
插入同样简单,类型检查也很容易。
请记住,这是一个简单的示例,但 SQL 确实为您的数据结构提供了强大的功能,您应该使用它而不是避免它