在 MySQL [PHP] 中存储出版物元数据的最佳实践
Best practices for storing the metadata of publications in MySQL [PHP]
我有一个包含各种类型(普通、类型 1、类型 2)的出版物的网站,每种类型都需要特殊数据。
我的问题是:
将这些 "special data" 存储在数据库中的最佳方法是什么?
1)为每种类型的出版物创建一个table。
2) 使用列 "post, key, value" 创建一个 table "posts_metadata" 并在其中保存所有类型。
3) 在 "posts" table 中创建一个 "metadata" 列,并使用 JSON 格式将 "specials data" 保存在其中。
4) 在 "posts" table 中创建一个 "metadata" 列,并使用 XML 格式将 "specials data" 保存在其中。
您认为最有效、最实用的选择是什么?
编辑#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..
...更多类型...
如果您希望能够查询那些特殊数据字段,请选择选项 2。
如果您只想存储数据,请选择选项 3。根据数据的可能大小,我会为其创建一个额外的 table,并根据您的 mysql 版本给出json 数据类型的列,如果您需要验证等 https://dev.mysql.com/doc/refman/5.7/en/json.html.
不要使用选项 4,与 json 相比,xml 会产生过多的开销并且在这种情况下没有任何好处。
我有一个包含各种类型(普通、类型 1、类型 2)的出版物的网站,每种类型都需要特殊数据。
我的问题是:
将这些 "special data" 存储在数据库中的最佳方法是什么?
1)为每种类型的出版物创建一个table。
2) 使用列 "post, key, value" 创建一个 table "posts_metadata" 并在其中保存所有类型。
3) 在 "posts" table 中创建一个 "metadata" 列,并使用 JSON 格式将 "specials data" 保存在其中。
4) 在 "posts" table 中创建一个 "metadata" 列,并使用 XML 格式将 "specials data" 保存在其中。
您认为最有效、最实用的选择是什么?
编辑#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..
...更多类型...
如果您希望能够查询那些特殊数据字段,请选择选项 2。
如果您只想存储数据,请选择选项 3。根据数据的可能大小,我会为其创建一个额外的 table,并根据您的 mysql 版本给出json 数据类型的列,如果您需要验证等 https://dev.mysql.com/doc/refman/5.7/en/json.html.
不要使用选项 4,与 json 相比,xml 会产生过多的开销并且在这种情况下没有任何好处。