在学中(約4年前)のデータベース講座で、主キーのデータ型に文字列を使うのは避けたほうがいいと考えていました。
SQL の主キーに文字可変データ型を選択することの長所と短所は何か、また上記の前提がどの程度当てはまるか教えてもらえますか?
NB: ( PostgreSQLデータベースを使用しています)。また、そのようなテーブルを別のテーブルから参照する必要がある状況にも対処しているため、文字のさまざまなデータ型に外部キーを配置します。ということも考慮してください。
在学中(約4年前)のデータベース講座で、主キーのデータ型に文字列を使うのは避けたほうがいいと考えていました。
SQL の主キーに文字可変データ型を選択することの長所と短所は何か、また上記の前提がどの程度当てはまるか教えてもらえますか?
NB: ( PostgreSQLデータベースを使用しています)。また、そのようなテーブルを別のテーブルから参照する必要がある状況にも対処しているため、文字のさまざまなデータ型に外部キーを配置します。ということも考慮してください。
文字データ型を主キー フィールドとして選択する利点は、表示できるデータを選択できることです。たとえば、電子メール アドレスを users テーブルのキー フィールドとして使用できます。これにより、列を追加する必要がなくなります。もう 1 つの利点は、他の複数のテーブルのインデックスを保持する共通のデータ テーブル (FINANCE、CONTACT、および ADMIN テーブルへの外部参照を持つ NOTES テーブルを考えてください) がある場合、これがどのテーブルから来たか (たとえば、FINANCE テーブル) を簡単に知ることができることです。 F00001 のインデックス、CONTACT テーブルのインデックスは C00001 など)。私はそのようなアプローチに反対しているので、この回答ではデメリットが大きくなると思います。
欠点は次のとおりです。
あなたの場合、数値インデックスに外部キーを置くことができるので、なぜ強制的に varchar 型にする必要があるのか わかりません。数値フィールドでの検索とフィルタリングは、サーバーが最初にデータを変換するように強制されるため、理論的にはテキスト フィールドよりも高速です。一般的に言えば、クラスター化されていない数値の主キーがあり、データ列にクラスター化されたキーを作成して、多くのフィルター処理を行います。
これらは SQL を作成する際の一般的な基準ですが、ベンチマークに関しては、varchar 列は結合とフィルタリングで整数列よりも少し遅いことがわかります。主キーがまったく変更されていない限り、問題ありません。