除了简单地为每个枚举创建一个查找表(以 Id、代码和名称作为列)(尤其是当每个表中的行很少时)?我找到了article这建议只为所有枚举创建一个查找表,并且该方法受到一些人在评论中的批评,称它违反了引用数据的完整性。如果枚举仅由一个表使用,那么使用一些预定义代码然后为它们添加约束(可能使用扩展属性)是一种好习惯吗?
最佳答案
就我个人而言,我喜欢为每个枚举定义一个查找表,因为它也是一种文档。如果有人想知道 id 代表什么,他可以很容易地在表中找到它。在列约束中查找此信息并不明显。
在表中添加新值比在约束中添加新值要容易得多。
如果您创建数据库图表,单个查找表会显得更有逻辑性。
如果需要,除了 ID 和文本之外,您还可以向各个查找表添加其他信息(例如注释、排序列、某种标志等)。
正如您所说,这对于引用完整性更好
但是;如果您使用代码优先方法的 o/r 映射器,那么使用编程语言提供的枚举感觉非常自然。这是因为您设计的不是数据库而是对象模型。 o/r-mapper 自动为您创建数据库。
关于sql - SQL Server 数据库中的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8792566/