查找表太多

iim*_*ims 2 sql-server enums database-design

在数据库中包含太多查找表有什么不利影响?

我必须根据应用程序包含太多Enumerations.

专家建议什么?

Flo*_*chl 9

最初你必须问自己"有多少是太多了?".如果两个表之间存在逻辑关系,则必须有FK.

如果您不需要数据库中任何位置的相关表,则可以考虑删除它们并使用带有"IN"子句的CHECK约束来强制数据有效性.但是,这会导致使用枚举中的每个新值更改表.

我个人的建议是保留FK和桌子.这是一个明确的解决方案,如果有可用于所有这些数字的描述文本,则数据库更好地维护.


HLG*_*GEM 5

让我告诉你查找表太少是多么糟糕。我工作过的一个地方的原始设计师决定将所有查找放在一张表中,并定义查找的用途是使用 typeid。这导致几乎所有查询都命中该表以获取导致性能堵塞的查找描述值。

此外,没有单独的查找,采用 typeid 的字段不受适用于该字段的值的约束,因为外键只能在整个表上而不是块上。因此,存储 clientid 的字段可能会意外包含用户组的值。这导致了数据完整性问题,并使报告变得更加困难,因为我们必须解释在上下文中没有意义的值。使用太少的表没有什么好处,实际上它通常是数据库设计中的一种反模式。

如果您需要,请创建 1000 个查找表。