web-dev-qa-db-ja.com

メールアドレス、電話番号、名、リッチテキストエディターなどの標準的なデータタイプ

Sql Server 2008 R2を使用して、システムのデータベースを構築したい。しかし、私はこれらの情報を保存するための最良のデータ型が何であるかを知る必要があります:-

  • 電子メールアドレス

  • +44 12345 ext 123などの内線付き電話番号

  • ファーストネーム

  • リッチテキストエディター。 「職種の役割」または「主な職務」という名前のフィールドがあり、各従業員の役割の完全な説明が格納されています。

誰でもこれについて教えてくれますか?ありがとう

4
john Gu
  • E-mail addressNVARCHAR(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インジェクション攻撃を回避していることを確認してください。

11
Aaron Bertrand