对我来说,就像在应用程序代码中使用硬编码值而不是常量变量一样。但那里有不同的意见。所以我无法确定。
附:对于这个问题的范围,我们假设性能不是问题。
对我来说,就像在应用程序代码中使用硬编码值而不是常量变量一样。但那里有不同的意见。所以我无法确定。
附:对于这个问题的范围,我们假设性能不是问题。
这取决于你想要实现的目标。如果你说的性能不是问题,那么它在很大程度上取决于你的理念,以及数据固有的可变性。如果您使用ENUM存储一周中的数值,以帮助人类可读性和数据的“可查询性”,那么它是完全有效的用途(在某些情况下,使用数字或其他方面更优越)表示)。但是,如果您使用它来存储产品所属的类别(可用类别集可能很容易改变),那么这是一个非常糟糕的解决方案。
这取决于你想要实现的目标。如果你说的性能不是问题,那么它在很大程度上取决于你的理念,以及数据固有的可变性。如果您使用ENUM存储一周中的数值,以帮助人类可读性和数据的“可查询性”,那么它是完全有效的用途(在某些情况下,使用数字或其他方面更优越)表示)。但是,如果您使用它来存储产品所属的类别(可用类别集可能很容易改变),那么这是一个非常糟糕的解决方案。
这在很大程度上取决于实际情况,但首先是列类型的要点是精确定义哪些值是允许的,哪些不是。如果在您的问题域中,您要考虑存储为ENUM值的属性是 固定 从某种意义上说,它不可能有其他价值,那么ENUM是一个很好的选择。一个例子是性别: ENUM('male', 'female')
是伟大的,因为第三性别的可能性确实很低。
如果要存储更有可能更改的值,则可以考虑将数据模型规范化为多对一关系。
不管怎样!它们比数字字段有几个优点:
实际上,使用数值而不是枚举就像将常量放入源代码中一样。
ENUM非常适合您知道属于静态集的数据。
如果您使用的是Mysql 5+,则存储 几乎总是更好 正如MySQL官方参考资料所示,静态集中的数据采用ENUM类型。更不用说数据是可读的,并且您有额外的验证层。
如果您想知道使用ENUM是否是我推荐使用的优化 程序分析。这将为您的列推荐正确的数据类型。