gpt4 book ai didi

php - 存储非标准数据的最佳性能方式

转载 作者:行者123 更新时间:2023-11-29 22:15:18 27 4
gpt4 key购买 nike

背景

我必须存储有关一组产品的信息。该信息将通过 PHP 提取到网站上,可能与 WordPress 结合使用,也可能使用原始 PHP。问题是这些产品的属性不一致。示例:

产品A

  • 宽度 => 6 英寸
  • 高度 => 5 英寸
  • 重量 => 2 磅
  • 颜色 => 黑色

产品B

  • 重量 => 3 磅
  • 制造商 => 微软
  • 日期 => 2015-02-01

简单的答案是 SQL 中的单个表,其列数不断增加,其中大部分是空的,以涵盖每个可能的属性。考虑到可能的属性数量和可扩展性的需求,我认为这不是可行的方法。

<小时/>

想法 1

我的一个想法是建立一个表,每一行都是一个产品,并有一个 ID。第二个表的每一行都是一个属性,通过产品 ID 链接。

表1

Product | ID
Phone | 0001
Table | 0002

表2

Product ID | ID   | Attribute Label | Attribute Value
0001 | 0001 | Height | 2"
0001 | 0002 | Width | 3"
0001 | 0003 | Weight | 2lb
0002 | 0004 | Company | Apple
0002 | 0005 | Color | Black
0002 | 0006 | Weight | 2lb

我看到的问题是表 2 的行数很大。

<小时/>

想法 2

嵌套数组,以某种方式存储

表格

Product | Attributes | ID
Phone | ARRAY | 0001
Table | ARRAY | 0002

我的ARRAY是一个键值对数组。也许序列化并存储?我认为我可以拥有无​​限的键值对集。

<小时/>

我的问题

实现存储此类数据的最高效方法是什么?有最佳实践吗?是否存在完全不同类型的数据库?我听说过 JSON 这个短语,它在这里有用吗?

最佳答案

JSON 就是您正在寻找的内容,但前提是您不想通过这些“额外”属性之一来搜索或排序数据库。使用方法极其简单,内置json_encodejson_decode PHP 函数。 json_encode 将结构数据(例如参数数组)转换为字符串表示形式,然后可以将其保存在 MySQL 的 TEXT 列中。如果您使用的是 postgres,还有 JSON 和 JSONB 类型。 json 解码执行完全相反的操作,并将文本转换回参数数组。

JSON 序列化绝对可以在您的场景中为您提供尽可能高的性能。

如果需要按这些属性进行搜索或排序,那么 attribute-table 可能更适合您的需求。

关于php - 存储非标准数据的最佳性能方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31254811/

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