Database design 创建一个单独的关联表应该有多严格?

Database design 创建一个单独的关联表应该有多严格?,database-design,schema,Database Design,Schema,假设我有一个表,它有一个report\u type列,而我只有两种报告类型。是否值得用它们创建一个报告类型表,然后用外键引用该表?或者在该列中以字符串形式存储报告类型是否可以接受?如果您打算继续扩展,则可以接受。我认为真正的问题是,不值得多做一张桌子吗 如果你打算在这条路上扩张的话。我认为真正的问题是,不值得多做一张桌子吗 只要有可能,您应该始终计划规范化数据库并抽象代码。然而,这样做的次数越多,系统中的“间接性”就越多。更好的问题是,在规范化表的过程中,您需要付出多少努力,以及进一步重新设计代

假设我有一个表,它有一个
report\u type
列,而我只有两种报告类型。是否值得用它们创建一个
报告类型
表,然后用外键引用该表?或者在该列中以字符串形式存储报告类型是否可以接受?

如果您打算继续扩展,则可以接受。我认为真正的问题是,不值得多做一张桌子吗

如果你打算在这条路上扩张的话。我认为真正的问题是,不值得多做一张桌子吗

只要有可能,您应该始终计划规范化数据库并抽象代码。然而,这样做的次数越多,系统中的“间接性”就越多。更好的问题是,在规范化表的过程中,您需要付出多少努力,以及进一步重新设计代码的成本


在这种情况下,我几乎可以肯定地说,花时间规范化数据库是值得的。

只要可能,您应该始终计划规范化数据库并抽象代码。然而,这样做的次数越多,系统中的“间接性”就越多。更好的问题是,在规范化表的过程中,您需要付出多少努力,以及进一步重新设计代码的成本


在这种情况下,我几乎可以肯定地说,花时间规范化数据库是值得的。

我通常会建议规范化数据,但这似乎是一个足够简单的情况,您可能不会从中看到太多好处。正如您所说,您只使用字段进行过滤,因此只需要使用数据本身中的值


如果您想让用户看到特定报告类型的记录为零,那么您就需要使用关联的表。

我通常会建议对数据进行规范化,但这似乎是一个非常简单的情况,您可能不会从中看到太多好处。正如您所说,您只使用字段进行过滤,因此只需要使用数据本身中的值

如果您想让用户看到特定报告类型的记录为零,则需要使用关联的表。

需要考虑的事项:

  • 您将来是否可能添加新的报告类型
  • 您是否可能有其他表也引用报告类型(例如用于统计数据收集或审计)
  • 您是否可能在其他上下文中使用这些值(例如GUI下拉小部件)
  • 您是否需要将其他数据(例如长描述)与报告类型关联
我知道现在建一张桌子,只放两行似乎有点过火。坦率地说,如果你决定坚持使用列和检查约束,上帝会支持你的。但是,如果您已经有一堆代码查找表来强制执行受限的值集,那么,一致性也有价值。

需要考虑的事项:

  • 您将来是否可能添加新的报告类型
  • 您是否可能有其他表也引用报告类型(例如用于统计数据收集或审计)
  • 您是否可能在其他上下文中使用这些值(例如GUI下拉小部件)
  • 您是否需要将其他数据(例如长描述)与报告类型关联

我知道现在建一张桌子,只放两行似乎有点过火。坦率地说,如果你决定坚持使用列和检查约束,上帝会支持你的。但是,如果您已经有一组代码查找表来强制执行受限制的值集,那么,一致性也有价值。

如果所有报告都有相同的列集,但您使用报告类型只是为了加快筛选,那么您可以简单地使用:

如果有一些额外的列与
ReportType
相关,如
ReportTypeDescription
,则使用:

如果每种报告类型都有不同的列集,例如,所有报告都有一些公共列(
Col1
Col2
Col3
),然后每种类型都有几个特定列(
Type1\u Col1
Type1\u Col2
)(
Type2\u Col1
Type2\u Col2
),则使用:


如果所有报告都设置了相同的列,但您使用报告类型只是为了加快筛选速度,那么您只需使用:

如果有一些额外的列与
ReportType
相关,如
ReportTypeDescription
,则使用:

如果每种报告类型都有不同的列集,例如,所有报告都有一些公共列(
Col1
Col2
Col3
),然后每种类型都有几个特定列(
Type1\u Col1
Type1\u Col2
)(
Type2\u Col1
Type2\u Col2
),则使用:


在检索字段后,您对字段值做了什么?@Joe:没什么,只是用于过滤目的。在检索字段后,您对字段值做了什么?@Joe:没什么,只是用于过滤目的。