Mysql 反对使用枚举的理由有哪些?

Mysql 反对使用枚举的理由有哪些?,mysql,Mysql,我们有一个表产品。将只有三种产品类型。我的PM坚持对产品使用ENUM。键入列(免费、付费、凭单),而我坚持使用产品。键入id 我应该用什么论据来反对使用ENUM。但让我们分析一下你的具体案例 您正在尝试为产品添加数据,特别是其类型。现在有三种产品类型。但你能肯定地说永远不会有第四种产品吗?因为这在ENUMs中非常昂贵,所以我要说,这显然是对使用它们的反对票。你只应该在小的、离散的选项中考虑它们,这些选项是明确的和不变的。产品类型只是关于产品的另一条信息。因此,它在列定义中没有位置 这可能就足够了

我们有一个表
产品
。将只有三种产品类型。我的PM坚持对
产品使用
ENUM
。键入
(免费、付费、凭单)
,而我坚持使用
产品。键入id


我应该用什么论据来反对使用
ENUM
。但让我们分析一下你的具体案例

您正在尝试为产品添加数据,特别是其
类型
。现在有三种产品类型。但你能肯定地说永远不会有第四种产品吗?因为这在
ENUM
s中非常昂贵,所以我要说,这显然是对使用它们的反对票。你只应该在小的、离散的选项中考虑它们,这些选项是明确的和不变的。产品类型只是关于产品的另一条信息。因此,它在列定义中没有位置

这可能就足够了,但我想指出另一个弱点。您不能将
ENUM
s链接到其他任何地方。因此,如果您想将您的系统扩展到(比如)同样受
类型限制的
产品组
,您必须重新创建另一个
枚举
。当你有几个单独的表和权力决定你应该添加第四个表时,你就有麻烦了

老实说,对我来说,产品类型是一个参考表,通过其标识符链接到依赖于它的任何东西。因为你迟早要把它扩展或者链接到别的地方。而
ENUM
s并不是为此而设计的。

请参见此处: