私はデータベースの主キーとしてのGUIDの使用を調査しています。これまでのところ、賛否両論は短所を上回るようです。しかし、私はGUIDが私が望むものではないかもしれない1つのポイントを見ます。GUIDと自動インクリメント整数の両方を使用する
私のアプリケーションでは、ユーザーはユーザーフレンドリーなIDに基づいてオブジェクトを識別できる必要があります。たとえば、フルネームを入力せずに特定の製品を取得する場合は、製品のIDを使用できます。 GUIDはそのようなことを覚えておくのは簡単ではありません。
私が考えていた解決策は、GUIDと自動インクリメント整数の両方を使用することです。 GUIDは行の主キーになりますが、自動インクリメント整数はアプリケーションのフィルタリング関数で使用されるインデックスになります。ただし、すべてのSQL SELECT、UPDATE、DELETEステートメントはGUIDを使用します。
GUIDを使用したい主な理由は、2つのデータベースをマージする際の衝突を防ぐためです。データベース#1とデータベース#2の両方にProduct#2がある場合、インポータスクリプトはIDとそれを参照するすべての外部キーを変更する必要があります。 GUIDを使用すると、テーブル自体のユーザーフレンドリーなIDを変更するだけで済みますが、外部キーはインポートされた各レコードに固有のGUIDを使用するため、変更することなく動作します。
私の質問は、自動増分整数インデックスとGUID主キーを持つと大きな問題(GUIDフィールドのサイズと簡単なページの断片化に加えて)がありますか?
申し訳ありませんが、私はSQL Server 2008を使用していることを忘れています。 –