私は小規模な SQL Server '08 データベースの実装について判断を下そうとしています。
フラットファイル データベースの出力テキスト ファイルを古い COBOL システムから前述の SQL Server データベースに変換しています。これは、レンダー ID (7 桁の数字)、銀行口座番号 (15 桁)、および「口座サフィックス」 (2 桁) の組み合わせによって一意に識別できる、車両および不動産ローンのデータベースです。
データベース管理に関しては、私はかなりナイーブであることを告白します (正直に言うと、現在のポジションまで実際に行ったことはありません)。他のいくつかのテーブルにインデックスを付けるキー:
1) 上記の値の 3 列のキーを使用して各ローンを識別します。または
2) 3 つの値を組み合わせた 24 文字の文字列である「キー」列を実装して、データを非正規化します。
非正規化は醜いのは当然ですが、銀行間でローンをやり取りしたり、ローンの接尾辞を変更したりすることはできないため、更新の異常が発生することは予想できません。これらの値の変更は、別のアカウントであることが保証されています。
複合キーはより洗練されていますが、それが悪いことであると示唆する論文をいくつか読んだことがあります。
では、どちらのオプションがより良い選択になる可能性が高く、さらに重要なことに、その理由は?