【发布时间】:2009-09-17 05:23:31
【问题描述】:
我正在尝试在实现一个小型 SQL Server '08 数据库时做出判断。
我正在将平面文件数据库的输出文本文件从旧的 COBOL 系统转换为上述 SQL Server 数据库。它是一个车辆和房地产贷款数据库,可以通过 Lender ID(七位数)、银行帐号(15 位数)和“账户后缀”(两位数)的组合来唯一标识。
我承认我在数据库管理方面非常天真(老实说,直到我目前的职位之前我还没有真正做到这一点),我正在尝试确定两种方法中的哪一种是我的最佳选择用于实现将索引到其他几个表的键:
1) 使用上述值的三列键标识每笔贷款,或
2) 通过实现一个“key”列来反规范化数据,该列是一个由三个值组合而成的 24 个字符的字符串。
当然,非规范化很丑陋,但我无法预料会发生更新异常,因为贷款无法在银行之间来回传递或更改其贷款后缀。这些值的变化保证是不同的帐户。
复合键更优雅,但我读过一些论文表明它是一件坏事。
那么,哪个选项可能是更好的选择,更重要的是,为什么?
【问题讨论】:
标签: sql-server denormalization compound-key