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