在MySQL中存储出版物元数据的最佳实践[PHP]

时间:2016-06-15 21:28:41

标签: php mysql pdo

我有一个各种类型的出版物网站(普通,类型1,类型2),每种类型都需要特殊数据。

我的问题是:

在数据库中存储这些“特殊数据”的最佳方法是什么?

1)为每种类型的出版物创建一个表格 2)创建一个“posts_metadata”表,其中包含“post,key,value”列,并保存所有类型。
3)在“posts”表中创建“元数据”列,并使用JSON格式将“特殊数据”保存在其中。
4)在“posts”表中创建“元数据”列,并使用XML格式将“特殊数据”保存在其中。

您认为最有效和最实用的选择是什么?

编辑#1:

数据示例:

正常:without "special data"

类型1:

'trademark' => 'Volkswagen'
'model' => 'gol 1.6'
'color' => 'white'
'doors' => '3'
'kms' => '17000'
..etc..

类型2:

'color' => 'green'
'size' => '15x10'
'status' => 'new'
..etc..

...更多类型......

1 个答案:

答案 0 :(得分:1)

如果您希望能够查询这些特殊数据字段,请选择选项2。

如果您只想要数据的存储选择选项3.根据数据的可能大小,我将为它创建一个额外的表,并根据您的mysql版本为列提供json-datatype,如果您需要验证等https://dev.mysql.com/doc/refman/5.7/en/json.html

不要使用选项4,与json相比,xml会产生过多的开销,并且在这种情况下没有任何好处。