firstName、lastName、Email、password などの一般的なデータベース フィールドに使用するサイズは? これらの一般的なフィールドは、ブログ、フォーラム、電子商取引などの多くのデータベースで見られます。しかし、その一般的なフィールドのサイズの参照またはデフォルトがあるかどうかはわかりません。それで、共通フィールドのサイズを選択するために使用する方法/参照/根拠を知りたいです。
5 に答える
部分的に、それはあなたのDBMSに依存します。MySQL 5のように、無制限の長さのTEXT列ではなく、VARCHAR(n)列の長さを気にするものもあります。PostgreSQLのような他のものは、長さがVARCHAR(n)列でチェックされることを除いて、TEXTとVARCHAR(n)を内部的に同一であると見なします。PostgreSQLでVARCHAR(65536)のようなものを書くのはばかげています。無制限の長さの列が必要な場合は、TEXTを選択してそれで完了します。
もちろん、あまりにも長い値を格納しようとすると、レイアウトが壊れたり、スペースのない長い名前を選択してシステムを悪用したりすることがあります(たとえば)。通常、そのようなユーザー名フィールドに対して私が行うことは、より長いユーザー名が必要な人が問題を引き起こそうとするように、より長い長さを選択することです。64文字は適切なラウンド値であり、うまく機能しているようです。本名と住所(ユーザー名のようにユーザーに頻繁に表示されることはありません)の場合は、もっと長いものを使用することをお勧めします。有効な入力を受け入れるのに十分な大きさの値が必要ですが、システムを攻撃するためだけにギガバイト長の文字列をフィールドに詰め込むほどの大きさではありません。1024文字はかなり合理的です。1kは、簡単に操作できる十分な量のテキストであり、丸い数字であり、適切な住所の行や名前よりも大きくなります。
電子メールアドレスは、関連するRFCによると、現在検索するのが面倒な番号であるため、320文字を超えることはできません。つまり、メールフィールドの長さがあります。SMTPはフィールドの長さを256文字に制限していることがわかりました。電子メールアドレスは括弧で囲む必要があるため、有効な最長の電子メールアドレスは実際には254文字です。(このページで詳しく説明します。)つまり、電子メールフィールドの長さがあります。
パスワードはプレーンテキストで保存しないでください。そのため、パスワードフィールドは、使用しているハッシュ関数(または使用中の暗号化グループの最大要素)の出力を保存するのに十分な長さのバイト配列またはBLOBタイプである必要があります。 SRP-6a)。
私は16、32、64、128、または256が好きです
見積もりを2倍にします。そして、それらを2倍にして、Unicodeに対応します。
varchars(ほとんどすべて)を持つデータベースは、より長い値を保持するように設計されているが保持しないフィールドに対して非常に小さなペナルティを被ります。あなたはそれをあなたの利益のために使うことができます。
私がしがちなのは、フィールドの値がどれくらいの長さになる可能性があるかを考え、それを2倍にして安全にすることです。
例:名前:varchar(70)メール:varchar(200)
これを逆に考えてみてください。私は既存のデータを使用して、妥当なフィールド長を取得しました。実際のデータで満たされた適切なサイズのデータベースにアクセスできると仮定すると、次のような簡単なクエリが実行されます。
SELECT MAX(LEN(lastname)) FROM dbo.MyDatabase
あなたが必要とするすべてをあなたに与えるでしょう。
更新:正確に取得した番号を使用しないでください。明らかに、非常に大きなサンプルセットがない限り、不確実性に応じて少し埋めてください。