2013-03-14 26 views
0

我们有一个表products。将只有三种产品类型。我的PM坚持使用ENUM作为product.type(free, pay, voucher),而我坚持要使它product.type_id什么是反对使用ENUM的争论?

我应该使用什么参数ENUM

+0

请看这里:[MySQL ENUM DataType](http://dev.mysql.com/doc/refman/5.6/en/enum.html) – 2013-03-14 11:30:26

+1

http://komlenic.com/244/8-reasons-why -mysqls-枚举数据类型是恶/ – 2013-03-14 11:31:00

回答

1

正如拉斐尔连接,该文章是对ENUM的长处和短处的很好的概述。但让我们分析一下你的具体情况。

您正在为产品添加数据,特别是其type。现在你有三种产品类型。但你能否肯定地说,从来没有第四种产品?由于这在ENUM s是非常昂贵的,我想说这是明确的反对使用它们的投票。你只应该把它们放在小的,离散的选项集中,这些选项是明确的,不变的。产品类型只是有关您的产品的另一个信息。因此,它在列定义中没有地位。

这可能够了,但我想指出另一个弱点。您无法在其他地方连接ENUM。因此,如果您想将系统扩展到product_groups,并且这些系统也受到type的约束,则您会被重新创建另一个ENUM。当你有几个单独的表格和权力,这是决定你应该添加第四个。

老实说,产品类型,对我来说,是一个参考表,通过它的标识符链接到任何依赖它的地方。因为迟早你必须扩展它或将它链接到别的地方。而ENUM只是没有为此而制造。