0

私は小規模な SQL Server '08 データベースの実装について判断を下そうとしています。

フラットファイル データベースの出力テキスト ファイルを古い COBOL システムから前述の SQL Server データベースに変換しています。これは、レンダー ID (7 桁の数字)、銀行口座番号 (15 桁)、および「口座サフィックス」 (2 桁) の組み合わせによって一意に識別できる、車両および不動産ローンのデータベースです。

データベース管理に関しては、私はかなりナイーブであることを告白します (正直に言うと、現在のポジションまで実際に行ったことはありません)。他のいくつかのテーブルにインデックスを付けるキー:

1) 上記の値の 3 列のキーを使用して各ローンを識別します。または
2) 3 つの値を組み合わせた 24 文字の文字列である「キー」列を実装して、データを非正規化します。

非正規化は醜いのは当然ですが、銀行間でローンをやり取りしたり、ローンの接尾辞を変更したりすることはできないため、更新の異常が発生することは予想できません。これらの値の変更は、別のアカウントであることが保証されています。

複合キーはより洗練されていますが、それが悪いことであると示唆する論文をいくつか読んだことがあります。

では、どちらのオプションがより良い選択になる可能性が高く、さらに重要なことに、その理由は?

4

3 に答える 3

1

これが頻繁に更新されない参照データである場合は、マルチパート キーを使用しても問題ありません。

これが高トラフィックのトランザクション データである場合は、代理キー (int ID、クラスター化された主キー) を追加し、3 つの部分からなるキーを代替キーにします。

オプション 2 を実装することはまったくお勧めしません。

于 2009-09-16T18:13:02.227 に答える
0

自動インクリメントの数値代理キーを使用することをお勧めします。他の 3 つの「重要な」列をマッシュアップする必要があるのはなぜですか?

于 2009-09-16T18:12:43.173 に答える