MySQL - ENUM - ISO 3166-1 国家代码的好主意?
MySQL - ENUM - Good Idea for ISO 3166-1 Country Codes?
我有一个 MySQL 数据库 table 用于在数据库中使用 2 位 (ISO 3166-1) 国家代码(例如美国 = US)标记项目。
我正在考虑为国家代码标签列使用 ENUM,因为国家代码变化不大,大约有 200 个左右。另外,这个 table 最终可能会有很多行,所以我认为使用 ENUM 将有助于它高效运行。
我听说有人在 SO 上的其他情况下使用带国家代码的 ENUM,但我不确定在使用 MySQL 时这样做是否合理。
您认为在 MySQL 中使用 ENUM 作为 2 位国家/地区代码对我来说是个好主意吗?或者我会后悔这个决定吗?
我正在使用 MySQL 5.6 和 PHP 5.5。
ENUM 数据类型通常用于非常简单且不变的值,例如自定义布尔值(T/F、0/1、Heads/Tails)或不会改变的非常小的值子集喜欢多项选择答案(A、b、C、D、E)。
如果值会发生变化,我不会推荐 ENUM 数据类型(在我们不断变化的边界世界中就是这种情况)。它要求您在需要添加或更糟时更新 table 模式 - 从 ENUM 值列表中删除一个值。 ENUM 数据类型非常适合那些需要确保它只是已定义字段中的值之一的字段,并且在尝试使用列表之外的值时需要进行错误检查。
我建议根据您表示国家代码的方式,一个非常简单的变量两个字符字段(A2 ISO 或 A3 UN),一个小整数(NUM UN)。
使用单独的查找 table(加入查询)来执行代码扩展和其他相关国家/地区数据(货币汇率、居住大陆等)
我有一个 MySQL 数据库 table 用于在数据库中使用 2 位 (ISO 3166-1) 国家代码(例如美国 = US)标记项目。
我正在考虑为国家代码标签列使用 ENUM,因为国家代码变化不大,大约有 200 个左右。另外,这个 table 最终可能会有很多行,所以我认为使用 ENUM 将有助于它高效运行。
我听说有人在 SO 上的其他情况下使用带国家代码的 ENUM,但我不确定在使用 MySQL 时这样做是否合理。
您认为在 MySQL 中使用 ENUM 作为 2 位国家/地区代码对我来说是个好主意吗?或者我会后悔这个决定吗?
我正在使用 MySQL 5.6 和 PHP 5.5。
ENUM 数据类型通常用于非常简单且不变的值,例如自定义布尔值(T/F、0/1、Heads/Tails)或不会改变的非常小的值子集喜欢多项选择答案(A、b、C、D、E)。
如果值会发生变化,我不会推荐 ENUM 数据类型(在我们不断变化的边界世界中就是这种情况)。它要求您在需要添加或更糟时更新 table 模式 - 从 ENUM 值列表中删除一个值。 ENUM 数据类型非常适合那些需要确保它只是已定义字段中的值之一的字段,并且在尝试使用列表之外的值时需要进行错误检查。
我建议根据您表示国家代码的方式,一个非常简单的变量两个字符字段(A2 ISO 或 A3 UN),一个小整数(NUM UN)。
使用单独的查找 table(加入查询)来执行代码扩展和其他相关国家/地区数据(货币汇率、居住大陆等)