2011-12-10 8 views
0

私は非常に重要な州立機関のデータベースを構築しています。これまでのところ、主キー列では、数値、特にint32またはint64を使用していましたが、時にはcharを使用していましたが、数値文字のみを格納しました。これは非常に重要な作業なので、パフォーマンスと快適性の両方を効率的にする必要があります。 charカラムの値がまだ数字であることを考慮して、PKカラムにnumberまたはcharを使用することに違いがあるかどうかを知りたい。主キー列の番号または文字

P.S.私がとにかく数字を格納する場合、charを使用することが何であるか疑問に思うかもしれません。その理由は、PK列が国の場合は3文字、州の場合は3文字、市の場合は3文字、人の場合は6文字のように多くの部分で構成されているからです。また、明示的な変換について心配することなく、それらの列で文字列操作を行うことができます(私は暗黙の変換がOracleにあることを知っていますが、それに頼ることはお勧めしません)。

+2

なぜ数値を格納するためにcharカラムを使用するのですか?数値列を使用する方がはるかに効率的で柔軟性があります。 – Joe

答えて

6

どちらもそうではありません。 プライマリキーはサロゲートである必要があります。 Intまたはbig int、スケーリングが問題になる場合は、Guid。 次に、国、州、市、人をユニークな複合キーとして使用する必要があります。 「インテリジェントな」ナンバーはめったに良い考えではありません。

+0

ありがとう、トニー。私はあなたが提案したようにサロゲートを使用すると思います。 –

2

整数データ型は、 varcharよりもデータ索引付けのパフォーマンスが向上します。文字の組み合わせのような別のユニークキーが必要な場合は、ユニークキーとマークされたプライマリキーの横に追加することができます。

整数またはGUIDのようなプライマリキーに汎用データを使用するもう一つの重要な理由は、柔軟性のためです。たとえば、電子メールアドレスをユーザーテーブルの主キーとして使用できます。数日後に、1人のユーザーが複数の電子メールアドレスを持つことができるアプリケーションルールを変更する必要が生じた場合です。データ構造を変更するのが難しくなります。

関連する問題