Sql Server 2008 R2を使用して、システムのデータベースを構築したい。しかし、私はこれらの情報を保存するための最良のデータ型が何であるかを知る必要があります:-
電子メールアドレス
+44 12345 ext 123などの内線付き電話番号
ファーストネーム
リッチテキストエディター。 「職種の役割」または「主な職務」という名前のフィールドがあり、各従業員の役割の完全な説明が格納されています。
誰でもこれについて教えてくれますか?ありがとう
E-mail address:NVARCHAR(320)
を使用します-ローカル部分には64文字+ドメイン名には_@
_ + 255 。はるかに小さいINT
またはSMALLINT
でも機能する可能性がある場合に_hotmail.com
_ 500,000回を格納するのはかなり無駄なので、 ドメインを離れて正規化する を検討することもできます。 (サポートする予定のドメインの数はわかりません)。以前はNVARCHAR
に反対でしたが、標準には nicode文字をサポートするように拡張されています があるため、世界中のほとんどのメールサーバーは拒否しますが、申し訳ありません。次は検証を強制することです-あなたは読むことができます 有効なフォーマットについて知りたいすべて、そしていくつかはウィキペディアで 。
電話番号:おそらく25〜30の範囲のvarchar
(ここでは、Unicodeサポートは必要ありません)。特定の地域の電話番号のみをサポートすることが確実にわかっていない限り、選択ははるかに簡単です。 「ベスト」とは何かを判断するのが難しいです。現在サポートしているフォーマットに最適なストレージを使用しますか。それとも、サポートが遅くなった場合や、フォームデータの入力がずさんで、まだキャプチャしたい場合に備えて、より柔軟なストレージを使用しますか?彼らが入力したものは何でも。
名:完全に主観的。おそらくnvarchar(50)
ですが、私は @ kevinskyと同意する -最長のファーストネームが何であるかをビジネスの人々に尋ねます(または、別のシステムにソースデータがある場合は確認します)。それを倍増します。誰かが長さを人為的に制限するとすぐに私は約束するので、誰かがやって来てルールを破るでしょう。
Role:繰り返しますが、これはかなり主観的です。これはテキストの段落、または自叙伝であるべきですか?いくつかの有限の文字(たとえば、nvarchar(1000)
)を許可するか、標準のフォーマット(たとえば、nvarchar(max)
を超える場合は、行)。行の合計サイズも考慮する必要があります。nvarchar(4000)
を選択するのは簡単ですが、実際に使用すると、行のサイズをすぐに超えてしまい、データの一部が非効率的に格納されるようになります。役割が特定の人物ではなく肩書きに関連付けられている場合、これはおそらく他の場所に保存する必要があります。
フォームフィールドがこれらの最大長に設定されていることを確認し、入力が検証および滅菌されていることを確認し、パラメーター化された入力を使用してSQLインジェクション攻撃を回避していることを確認してください。