gpt4 book ai didi

php - json 列与多列

转载 作者:可可西里 更新时间:2023-11-01 06:40:54 24 4
gpt4 key购买 nike

我什至不知道称它为序列化列是否正确,但我要解释一下,例如,我有一个用户表,我想存储用户电话数字(手机、家庭、办公室等),所以,我想为每种数字类型创建一个列,但同时我想到了一个想法,如果我保存一个 json 单个列中的字符串,因此,我永远不会有可能永远不会使用的列,并且在从数据库读取数据时我可以将该字符串转换为 php 数组,但我想听听它的优点和缺点实践,也许这只是一个坏主意,但首先我想知道其他人对此有何看法

谢谢

最佳答案

简答题,多列。

长答案:

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

我假设你会有一张 table ,要么是

+------------------------------+      +----------------------+
| 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 个查询和一个搜索替换算法。不好!<​​/p>

现在考虑第一个解决方案。

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 | +-------------------------------------+
+---------+

现在你可以像这样查询一个用户的所有电话号码

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

SELECT Users., phone. FROM Phone, Users WHERE phone.user_name = ? AND Users.U_name = ?

插入同样容易,类型检查也很容易。

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

关于php - json 列与多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5986745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com