我们有一张表products
。只有三种产品类型。我的PM坚持在ENUM
列product.type
上使用(free, pay, voucher)
,而我坚持要product.type_id
。
我应该使用哪些参数来反对使用ENUM
?
答案 0 :(得分:1)
正如拉斐尔所说,这篇文章很好地概述了ENUM
的优点和缺点。但是让我们分析你的具体案例。
您正在尝试为产品添加数据,特别是其type
。现在您有三种产品类型。但你能说肯定会有第四种产品吗?由于这在ENUM
中非常昂贵,我会说这是对使用它们的明确投票。你只应该在小的,离散的选项集中考虑它们,这些选项定义明确且不变。产品类型只是有关您产品的另一条信息。因此,它在列定义中没有位置。
那可能就足够了,但我想指出另一个弱点。您无法在其他地方链接ENUM
。因此,如果您希望将系统扩展为product_groups
,同样受type
约束,那么您又会重新创建另一个ENUM
。当你有几个单独的表并且权力决定你应该添加第四个时,你就会遇到困难。
老实说,对我来说,产品类型是一个参考表,通过其标识符链接到任何依赖于它的内容。因为迟早你必须扩展它或将它链接到其他地方。而ENUM
就是为此而做的。