【发布时间】:2015-05-14 13:26:06
【问题描述】:
我有一个 MySQL 数据库表,用于使用 2 位 (ISO 3166-1) 国家代码(例如美国 = 美国)标记数据库中的项目。
我正在考虑在国家代码标签列中使用 ENUM,因为国家代码变化不大,大约有 200 个左右。另外,这个表最终可能会有很多行,所以我认为使用 ENUM 将有助于它有效地运行。
我听说有人在 SO 上的其他情况下使用带有国家代码的 ENUM,但我不确定在使用 MySQL 时这样做是否合理。
您认为——在我的情况下,在 MySQL 中使用 ENUM 表示两位国家/地区代码是个好主意吗?还是我会后悔这个决定?
我正在使用 MySQL 5.6 和 PHP 5.5。
【问题讨论】:
-
我更喜欢使用单独的表格来存储国家代码。因此,将来您可以根据需要添加不同的列,例如国家/地区名称、不同语言的翻译、首都、时区或其他任何内容。但主要目标是保持简单。只有少数情况下您真的需要所有国家/地区,通常我们与其中一些国家/地区合作 1-2 用于小公司,最多 20 用于非常大的国家,但 100 个国家/地区 - 我不确定您的申请是什么,可能您真的需要它。
-
对于我的项目,我的想法是像“文章”这样的项目几乎总是应该至少有一个与文章相关联的国家标签。有些文章可能与多个国家/地区相关联。如果文章很多,那么最终这个表会有非常多的行。 DB 中的其他项目也可能被标记。
-
CHAR(2) 没问题。在您的应用程序中处理数据验证。