通常、INTEGER データ型で十分ですが、南アフリカでは ID 番号の長さは 13 で、INTEGER データ型は 10 までしかありません。入力 ID を制限しないため、VARCHAR のような文字を使用するのは好きではありません。数値から整数値のみ。私が見る唯一の解決策(VARCHARの使用以外)は、DECIMALを使用することです。私が見る唯一の問題は、VARCHAR のように最大サイズを制限できず、データ入力に「,」と「.」が含まれる可能性があることです。コメントはありますか?
11883 次
4 に答える
4
ウィキペディアによると、常に 13 桁の南アフリカの国民 ID 番号を参照していると仮定するCHAR(13)
と、CHECK
制約を使用することになります (CLRユーザー定義データ型もオプションである可能性があります)。
主な理由は、「番号」が番号ではなく、ID であることです。値の加算、減算、乗算などはできないため、数値データ型を使用するメリットはありません。さらに、ID は独自の意味を持つコンポーネントで構成されているため、それらを解析できることはおそらく重要です (文字データ型を使用すると簡単になります)。
実際、このデータの使用方法に応じて、ID の個々のコンポーネント (生年月日、シーケンス、市民権) を計算列または実際の列として格納する列を追加することもできます。date
これは、特に DOB をまたはdatetime
列に変換した場合に、クエリとレポート作成 (およびインデックス作成) に便利です。
于 2013-05-06T19:36:35.807 に答える
4
BIGINT を使用するだけで、-9223372036854775808 から 9223372036854775807 の範囲で、アプリケーションには十分なはずです。
于 2013-05-06T17:17:30.717 に答える