我想在实现一个小型的SQL Server '08数据库时作出判断呼叫。非规范化数据或多列键?
我正在将平面文件数据库的输出文本文件从旧COBOL系统转换为上述SQL Server数据库。它是一个车辆和房地产贷款数据库,可以通过贷方ID(七位数字),银行帐号(15位数字)和“账户后缀”(两位数字)的组合来唯一标识。
我承认在数据库管理方面我非常天真(说实话,直到我现在的位置我还没有真正完成),并且我试图确定哪种方法是我最好的选项用于实现键,这将索引到其它几个表:使用上述值的三列键
1)确定每个贷款,或
2)通过实施“键”列,其是进行非标准化的数据一个包含三个值的24个字符的字符串。
反常规是丑陋的,但我不能预料会发生更新异常,因为贷款不能在银行之间来回传递或更改其贷款后缀。这些值的变化保证是不同的账户。
一个复合键更优雅,但我读过一些论文暗示这是一件坏事。
那么,哪个选项可能是更好的选择,更重要的是,为什么?
而不是自动递增密钥,您也可以使该列成为GUID。这应该允许您保持唯一性,而不必担心关键字段包含的内容,因为它会自动为新记录生成。 – 2009-09-16 18:25:51
如果您选择使用GUID,请使用NEWSEQUENTIALID()填充而不使用NEWID()。 – 2009-09-16 20:22:09