【发布时间】:2015-07-07 05:58:00
【问题描述】:
背景
我必须存储有关一组产品的信息。此信息将通过 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 这个短语,它在这里有用吗?
【问题讨论】:
-
存储数据的最佳方式取决于数据的使用方式。您的问题不包含任何此类相关信息。
-
添加了使用信息。
-
首先,我们必须停止使用“性能”这个词。 ¯\_(ツ)_/¯
-
产品类别如何?这有助于使事情正常化。
-
这是我正在考虑的一件事。一组至少可以部分归一化的类别。但是对于我正在使用的产品,即使是同一类别的产品也不完全正常。