開示:私は「自然な鍵」の支持者であり、IDENTITY PKアプローチを嫌っています。しかし、私はライフスタイルの選択に対して「生きて生きる」アプローチを取っているので、ここで宗教的な議論はしないでください:)
唯一のキーが IDENTITY PK 列であるテーブルを継承しました。IDとしましょう。ID を参照するテーブルは多数あります。新しいエンティティを作成する意図されたプロセスは次のようです。
- テーブルに挿入します。
- 自動生成された ID を取得するには、scope_identity を使用します。
- 自動生成された ID を使用して、関連するテーブルに挿入します。
実際、エンティティを作成して ID を返すためのヘルパー ストアド プロシージャがあります。ただし、いくつかの問題があります。
ヘルパー ストアド プロシージャよりも先に進んで、それ自体が IDENTITY PK を持つ関連テーブルに行を作成する必要があるため、エンティティごとに途中でいくつかの自動生成された値を取得する必要があります。数百のエンティティを作成する必要があり、ヘルパー プロシージャは一度に 1 つのエンティティを処理するようにコーディングされています。
「IDENTITY PK」設計を使用してエンティティを一括製造する最良の方法は何ですか?
独自の「自然キー」設計を使用する場合、事前にキー値を生成できます。そのため、スクラッチ テーブルをロードし、外部キーが期待する順序でテーブルに INSERT するだけです。したがって、現在使用されていないことがわかっている一連の高い値の INTEGER 値 (IDENTIY 列の型と一致する) を見つけて、その時が来たら使用されないことを願っています。挿入します。これは良い考えですか?