什么是反对使用ENUM的论据?

时间:2013-03-14 11:29:27

标签: mysql

我们有一张表products。只有三种产品类型。我的PM坚持在ENUMproduct.type上使用(free, pay, voucher),而我坚持要product.type_id

我应该使用哪些参数来反对使用ENUM

1 个答案:

答案 0 :(得分:1)

正如拉斐尔所说,这篇文章很好地概述了ENUM的优点和缺点。但是让我们分析你的具体案例。

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

那可能就足够了,但我想指出另一个弱点。您无法在其他地方链接ENUM。因此,如果您希望将系统扩展为product_groups,同样受type约束,那么您又会重新创建另一个ENUM。当你有几个单独的表并且权力决定你应该添加第四个时,你就会遇到困难。

老实说,对我来说,产品类型是一个参考表,通过其标识符链接到任何依赖于它的内容。因为迟早你必须扩展它或将它链接到其他地方。而ENUM就是为此而做的。