在数据库中存储枚举常量

时间:2009-07-31 09:30:35

标签: database database-design

  

可能重复:
  Should I store Enum ID/values in the db or a C# enumeration?
  Persisting Enums in database tables

快速简单的问题可能是讨论的基础:

假设我的应用程序有一个包含2-3个值的枚举,这些值基本上永远不会改变。

你认为那些应该在他们自己的表中的数据库中表示,然后通过外键关系从其他表中引用?或者它们是否应该作为包含枚举值的简单整数字段存储在适当的表中?

请解释您的答案,以及对完整的第三范式设计的倡导者。

5 个答案:

答案 0 :(得分:1)

简单的整数字段(没有附加表)可以完成工作。它让一切变得简单。

答案 1 :(得分:1)

将它们存储为简单的整数字段,但也有一个包含整数和描述的枚举表。这可以在必要时加入或引用。

答案 2 :(得分:1)

我所做的是将enum整数值存储在相应的表列中,但在数据库中还有一个表来表示枚举(具有与枚举值匹配的匹配ID)。是的,这意味着你需要保持枚举和枚举表的最新状态,但就像你说他们很少会改变所以这不是什么大不了的事。好处是您可以在代码中使用enum中的实名,然后在查询数据库时获取该枚举值的名称。

答案 3 :(得分:0)

如果此问题只发生一次,则应使用整数字段(KISS策略),但如果您有大量枚举值,则可以使用具有树结构的表来存储它们。

答案 4 :(得分:0)

我将它们存储为包含相应表中枚举值的简单整数字段。您可以参考,有一个查找表,其中列出了每个枚举值以及相应的描述。我之所以提出这个意见,是因为你不想引入一个额外的不必要的连接,如果你没有将枚举值存储在表本身中,你必须这样做。