首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP/MySQL -将数组数据存储为JSON,这是不好的做法?

PHP/MySQL -将数组数据存储为JSON,这是不好的做法?
EN

Stack Overflow用户
提问于 2011-08-08 13:58:58
回答 4查看 5.9K关注 0票数 6

我想知道在mysql文本字段中将数组存储为JSON字符串是否是一种好的做法。

我正在创建一个发票,允许用户添加无限数量的产品到发票。当表单提交时,它会删除所有的空白项目等,但我通常会留下2-5个项目取决于。每一项都有sku、价格、名称和描述。

对于这种情况,我的选择是(1)创建一个新的产品表,将每个项目添加为新行,将其与invoice表链接,并在访问数据时调用这两个表。或者(2)将所有产品数据作为单个JSON文本字段存储在invoice表中,这样我就不会创建或访问另一个表。

因为我对MySQL编程相当严格,所以我觉得在MySQL中使用JSON是不受欢迎的。我说的对吗?谁能解释一下这件事?

EN

回答 4

Stack Overflow用户

发布于 2011-08-08 14:01:03

如果您所需要的只是存储-那么这是一个不错的做法。

但是,如果您需要执行任何类型的处理、排序或类似的操作,则需要对其进行规范化。

票数 15
EN

Stack Overflow用户

发布于 2011-08-08 14:07:19

因为其他人已经更直接地回答了您的问题,所以我将采取边缘方法,转而讨论未来的可维护性

将数量可变的项目(SKU、Price、Name、Description)存储为JSON可能没什么问题,但这将导致大量的数据重复。

相反,按您说的做,为所有产品创建一个表。然后为invoices_have_products创建另一个表。然后,您可以从invoices_have_products中提取发票ID匹配的每一行,然后从products中提取产品ID与您从invoices_have_products中提取的行匹配的每一行。

现在可能有点单调乏味,但当所有数据都放在整齐的表中并且易于查询时,您会高兴得多。想象一下使用JSON在数百万个文本字段上运行报告的噩梦。太可怕了。

回答你的问题的一部分:不,我不认为这是good practice,老实说,它看起来有点像坏实践。

票数 6
EN

Stack Overflow用户

发布于 2011-08-08 14:02:53

我不是MySQL专家,但我认为这取决于您想要实现什么。您是否希望已保存到发票中的产品可供搜索?如果是这样的话,您最好使用关系数据库结构。

如果不需要搜索,可以将数据存储为JSON字符串,或者简单地存储为序列化数组,这样就完全不用使用JSON了。

这真的取决于你的需求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6978263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档