我们有一个表products
。将只有三种产品类型。我的PM坚持使用ENUM
作为product.type
列(free, pay, voucher)
,而我坚持要使它product.type_id
。什么是反对使用ENUM的争论?
我应该使用什么参数ENUM
?
我们有一个表products
。将只有三种产品类型。我的PM坚持使用ENUM
作为product.type
列(free, pay, voucher)
,而我坚持要使它product.type_id
。什么是反对使用ENUM的争论?
我应该使用什么参数ENUM
?
正如拉斐尔连接,该文章是对ENUM
的长处和短处的很好的概述。但让我们分析一下你的具体情况。
您正在为产品添加数据,特别是其type
。现在你有三种产品类型。但你能否肯定地说,从来没有第四种产品?由于这在ENUM
s是非常昂贵的,我想说这是明确的反对使用它们的投票。你只应该把它们放在小的,离散的选项集中,这些选项是明确的,不变的。产品类型只是有关您的产品的另一个信息。因此,它在列定义中没有地位。
这可能够了,但我想指出另一个弱点。您无法在其他地方连接ENUM
。因此,如果您想将系统扩展到product_groups
,并且这些系统也受到type
的约束,则您会被重新创建另一个ENUM
。当你有几个单独的表格和权力,这是决定你应该添加第四个。
老实说,产品类型,对我来说,是一个参考表,通过它的标识符链接到任何依赖它的地方。因为迟早你必须扩展它或将它链接到别的地方。而ENUM
只是没有为此而制造。
请看这里:[MySQL ENUM DataType](http://dev.mysql.com/doc/refman/5.6/en/enum.html) – 2013-03-14 11:30:26
http://komlenic.com/244/8-reasons-why -mysqls-枚举数据类型是恶/ – 2013-03-14 11:31:00