【问题标题】:Should defined numbers be stored in a table within the database?定义的数字是否应该存储在数据库中的表中?
【发布时间】:2010-12-21 21:36:28
【问题描述】:

假设你有一个表 - 让我们设计一个例子,它是 Orders - 它有一个名为 type 的字段,它可能只是几个固定值之一(比如 01QuotationOrder)。

type 的所有可能值是否应该由数据库中的另一个表表示(只有typeIDtypeName 列?),并让Orders 引用新表?
还是按原样保留这些数字并将它们记录在数据库之外是否正常?

如果这是“视情况而定”:这两种选择的重要含义是什么?

我在最近的大学作业中使用了第一个选项,但没有真正考虑为什么 - 现在回顾设计,我想知道这是否重要。
我从来没有在我的应用程序中查询参考表——因为我没有“需要”——这是否表明不需要参考表,或者这是我的应用程序中的一个缺陷,因为它应该检查参考表(什么为了?)?

【问题讨论】:

    标签: database-design


    【解决方案1】:

    我认为最大的不同在于,当​​您在数据库中包含带有“查找”数据的参考表时(即使它们永远不会被应用程序使用),它可以很好地为其他开发人员提供服务系统。与“将其记录在某处的文档中”相比的优势在于,将其保存在数据库中会迫使您在应用程序中使用新值时更新引用表。随着时间的推移,书面文档往往会变得不同步。

    另一点是,在其他团队需要在数据库级别连接到您的应用程序(即,用于某些数据挖掘、报告等)的情况下,将参考数据保存在数据库中可能会有所帮助。

    【讨论】:

    • +1 数据库是存储和引用数据的地方。枚举也是一个很好的解决方案,但是当两个以上的控制器(在 MVC 中)或两个以上的中间件块或对这些数字有不同定义的任何东西时,存储数据(包括这种类型的参考数据)最终会招致灾难。
    【解决方案2】:

    通常是带有typeIDtypeName 的第二个表,typeID 作为主键,外键位于 Orders 表中。

    这些可以稍后用于从客户端进行过滤。

    而且,稍后可能会有更多与实际类型相关的信息,然后可以将其存储在同一个表中。

    【讨论】:

      【解决方案3】:

      如果它的值仅对该表有意义,则它建议该字段的枚举类型。

      如果值在多个表中有意义,我会像你一样使用参考表。

      【讨论】:

        【解决方案4】:

        【讨论】:

          【解决方案5】:

          我的五分钱用于查找表,因为(除了其他人所说的)您可以在代码中自动生成这些表的枚举,从而使您的前端代码与数据库保持同步。

          【讨论】:

            猜你喜欢
            • 2021-09-18
            • 2011-05-27
            • 1970-01-01
            • 1970-01-01
            • 2021-06-27
            • 2021-12-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多