我正在寻找有关如何最好地在SQL Server数据库中使用查找表的更多受过教育的意见。
粗略的解释是我有一个结果表,其中评级被分配给许多字段。然后我有一个这样的评级查找表:
RatingCode RatingName
1 Poor
2 OK
3 Satisfactory
等。
结果表有大约50列,其中包含评级代码。
这50列中的每一列都应该是外键吗?这是太多的外键,它会阻碍性能吗?还有其他方法可以达到这个目的吗?
答案 0 :(得分:0)
遗憾的是,这听起来像是一张设计不佳的桌子。
为了澄清,你有一个像这样定义的表:
CREATE TABLE SomeTable
(KeyColumn, ThingWithRatingCode1, ThingWithRatingCode2 ..., ThingWithRatingCode50)
这是非规范化表的示例。这将更好地构建为规范化表:
CREATE TABLE SomeTable
(KeyColumn, ThingToBeRated, RatingCode)
而不是一个包含50列的记录,每个KeyColumn将有50条记录。因此,您只有一个外键(从SomeTable中的RatingCode列到您的查找表)。
有关这方面的进一步解释只是谷歌“第三范式”或“规范化”。我建议在设计数据库和表时,规范化几乎总是最小的最佳实践。
如果您有任何其他问题,请与我们联系。
此致
灰