3
PKの目的でのみ、自動インクリメント/ IDENTITYフィールドを相互参照テーブルに追加する必要がありますか?
次の相互参照テーブルをSQL ServerがホストするDBに追加します。 company_id bigint not null (FK) org_path nvarchar (2048) not null company_idフィールドはid、別のテーブルのフィールドを参照します(そのフィールドが主キーです)。 同じを持つ複数のレコードも存在する可能性があることを考えるとcompany_id、主キーは両方のフィールドを使用する必要があります。ただし、org_pathSQL Serverには長すぎるため、両方のフィールドを使用してキーを作成できません。 に関してはorg_path、これが存在する唯一のテーブルです。このテーブルへのクエリがすべてのエントリまたはすべてのorg_pathエントリのいずれかを要求する可能性はほとんどありませんcompany_id。別の言い方をすると、このテーブルがによってクエリされることは疑わしいようorg_pathです。さらに、org_path更新される可能性は低く、おそらく挿入され、おそらく削除されることはほとんどありません。 行の総数は数千になると思います。 また、その理由nvarchar (2048)は、値がサードパーティのDBの値を模倣する必要があるためです。典型的な例は次のようになります \Translation Providers\[customer name]\[order name]\ 分音符号を含めることができます。 だから私の質問はこれです:自動インクリメントidフィールドを追加しcompany_idてそれを主キーとして使用する方が効率的ですか、それとも不必要なオーバーヘッドが追加されますか-そしてcompany_id、別のテーブルの主キーであるという事実にはここで効果?