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