什么时候应该在代码中将列映射到枚举类型

时间:2009-03-12 15:59:03

标签: database enums

也许这是一个愚蠢的问题,但什么时候应该将列映射到枚举类型。例如,我们都知道数据库中表示为“M”或“F”的列“Gender”可以映射到名为Gender的枚举。由于通常有两个性别:),我们可以非常肯定这个枚举不需要更新。然而,enum为业务逻辑设置了什么?例如,假设对于region,如果您有一个代表数据库中所有区域的Enum,那么无论何时将另一个区域插入数据库,该枚举都必须更改,因此需要进行另一次促销。这是一个好习惯吗?这是最好的做法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

这实际上是一个复杂的问题:当你使用枚举时,传统上在Reed建议的DB中也有一个查找表。但这引发了同步定义的问题。

我们所做的是从枚举定义中生成表,作为构建/部署脚本的一部分,以确保两者都反映相同的合法值集。

然后我们有便利函数,它们从数据库查询返回一个DataSet,并将id列映射到具有枚举值的(新创建的)列。但是我们在检索查询结果后立即这样做。所以我的建议是尽快映射它们,最好是你的DAL。

答案 1 :(得分:0)

你最好为区域制作一个单独的表,它有自己的唯一ID。然后在主表中使用区域ID。

这样可以在将来提供更大的灵活性,因为添加区域只是添加新记录。

有关详细信息和完整说明,请参阅有关数据库规范化的任何文本。