使用查找表将导致许多外键

时间:2015-09-14 14:48:46

标签: sql sql-server database-design lookup-tables

我正在寻找有关如何最好地在SQL Server数据库中使用查找表的更多受过教育的意见。

粗略的解释是我有一个结果表,其中评级被分配给许多字段。然后我有一个这样的评级查找表:

RatingCode   RatingName
1            Poor 
2            OK
3            Satisfactory

等。
结果表有大约50列,其中包含评级代码。

这50列中的每一列都应该是外键吗?这是太多的外键,它会阻碍性能吗?还有其他方法可以达到这个目的吗?

1 个答案:

答案 0 :(得分:0)

遗憾的是,这听起来像是一张设计不佳的桌子。

为了澄清,你有一个像这样定义的表:

CREATE TABLE SomeTable
(KeyColumn, ThingWithRatingCode1, ThingWithRatingCode2 ..., ThingWithRatingCode50)

这是非规范化表的示例。这将更好地构建为规范化表:

CREATE TABLE SomeTable
(KeyColumn, ThingToBeRated, RatingCode)

而不是一个包含50列的记录,每个KeyColumn将有50条记录。因此,您只有一个外键(从SomeTable中的RatingCode列到您的查找表)。

有关这方面的进一步解释只是谷歌“第三范式”或“规范化”。我建议在设计数据库和表时,规范化几乎总是最小的最佳实践。

如果您有任何其他问题,请与我们联系。

此致