【问题标题】:Storing enumerated constants in the database [duplicate]在数据库中存储枚举常量[重复]
【发布时间】:2009-07-31 09:30:34
【问题描述】:

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

快速简单的问题,可能会成为讨论的素材:

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

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

请解释您的回答,以及关于坚持完整第三范式设计的倡导者。

【问题讨论】:

标签: database database-design


【解决方案1】:

我所做的是将枚举整数值存储在适当的表列中,但在数据库中还有一个表示枚举的表(具有与枚举值匹配的匹配 id)。是的,这意味着您需要保持枚举和枚举表都是最新的,但就像您说的那样,它们很少会改变,所以这没什么大不了的。好处是您可以在代码中使用枚举的真实姓名,然后在查询数据库时还可以获取该枚举值的名称。

【讨论】:

    【解决方案2】:

    简单的整数字段(无需额外的表格)就可以完成这项工作。它使一切变得简单。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        如果这个问题只发生一次,你应该使用整数字段(KISS 策略),但如果你有很多枚举值,你可以有一个带有树结构的表来存储它们。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-07
            • 2011-04-28
            • 2019-10-02
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多