個人の「名前」フィールドの適切な長さ制限は何ですか?


138

認証されていないユーザーが名前などの情報を入力できるようにする簡単なWebフォームがあります。名前フィールドに50文字の制限を付けて、フィールドがvarchar(50)であるデータベーステーブルと一致させましたが、疑問に思い始めました。

テキスト列タイプなどを使用する方が適切ですか、または名前の長さを適切なものに制限する必要がありますか?

私はSQL Server 2005を使用していますが、これはあなたの応答で重要です。

編集:私は同様の問題に関するこの幅広い質問を見ませんでした。


1
この問題に関する多くの議論については、この関連質問をチェックしてください。
Chris Marasti-Georg

2
グローバリゼーションのこの時代では、varcharは通常適切なデータ型ではありません。nvarcharを使用する必要がある可能性があります。
Tao

@タオ:彼はMS SQL Serverを使用しているので、私は同意します。しかし、VARCHAR 、UTF-8をより適切にサポートする他のSQL実装では適切なデータ型です。
dan04 2010

回答:


142

英国政府データ標準カタログは、名と姓のそれぞれに35文字、またはフルネームを保持する単一のフィールドに70文字を推奨しています。


3
サイト:リンクは、私はGoogleで、2010年、10月22日のように更新する必要があります。* gov.uk名「35文字」とこのdocたjustice.gov.uk/guidance/docs/electoral-reg-standards.pdfを
Tony R

彼らのリンクは本当に悪いようです... 2012
Thomas B

6
私が見つけた最も長い「合理的な」フルネームは「ジゼル・マリー・ルイーズ・マルグリット・ラフレッシュ」(39バイト長)です。
user1154664

:Aは、より大きな54文字ビット gw.geneanet.org/...
mestachsを

3
ニュージーランドではフルネームが制限されています。スペースを含めて100文字未満にする必要があり、記号や数字を含めることはできません。しかし、ハイフンは姓に使用できると思います。
Glutnix、2015年

27

私はこれに遅れていることを知っていますが、とにかくこのコメントを追加します。他の人も同様の質問で将来ここに来る可能性があるからです。

ロケールに応じて列サイズを微調整することに注意してください。初めに、それはあなたがメンテナンスの悪夢にあなたを設定します、人々が移住するという事実を脇に置いて、彼らと彼らの名前を持ちます。

たとえば、これらの追加の姓を持つスペインの人々は、英語圏の国に移動して住むことができ、フルネームが使用されることを合理的に期待できます。ロシア人は姓に加えて愛称を持っています、いくつかのアフリカの名前はほとんどのヨーロッパの名前よりもかなり長い場合があります。

潜在的な行数を考慮して、各列をできる限り広くすることを検討してください。私は名、姓、名にそれぞれ40文字を使用しており、問題を発見したことはありません。


長い間、答えてくれてありがとう。
EndangeredMassa

9

通常、varchar(255)を使用します(255はMySQLのvarchar型の最大長です)。


30
また、姓名が表示されるGUIおよびその他のメディアに255文字のスペースを予約していますか?;-)
AndrewBourgeois 2014年

2
「なぜvarchar(255)を使用しないのか」と以前は思っていました。長さの制約は主にUIに対するものであり、UIを設計するときにデザイナーが依存できる制約であることがわかりました。それは、データベースのスペースを使いすぎることです。
jdg 2018年

6

それが1つのフィールドのフルネームである場合、私は通常、最初のフィールドと最後のフィールドが128-64/64で別々のフィールドに進みます。


6

@Ian Nelson:他の人がそこで問題を見ているのではないかと思っています。

分割フィールドがあるとしましょう。これは合計70文字で、35名、35名です。ただし、フィールドが1つの場合は、姓と名を区切るスペースを無視して、1文字だけ短く変更します。確かに、これは「1文字のみ」ですが、フルネームを入力する人と入力しない人とで違いが生じる可能性があります。したがって、私はその提案を「名と姓のそれぞれに35文字、またはフルネームを保持する単一のフィールドに71文字」に変更します。


2
このドキュメントに従うことのポイントは、他の英国政府のシステムと相互運用できるようにするためです。そのため、70から71に個別に上げて1日で呼び出すことはできません。そうしないと、70文字の制限があるシステムはテキストを切り捨てます。(自分のシステム内の両方の形式でデータを保存することは想定されていません。)フルネームには、ファミリ/ギブナンだけでなく、タイトルとサフィックスも含まれるため、それぞれ35文字の制限があるため、実際にはさらに悪化します。追加されたフィールドには、最大143文字の楽しい文字が入力されます。両方の形式の名前ストレージとデータを交換しなければならない開発者であることを吸います。
mmitchell 2013年

3
明らかに、ガイダンスは、個人が長いギブネーム(最大35文字)または長い姓(最大35文字)を持っている可能性があるという期待から書かれていますが、名前の両方の部分がそれほど長いとは考えられません。
Ian Nelson

3

英国では、英国の人口の大部分を首尾よく処理するいくつかの政府基準があります-パスポート事務所、運転免許局、運転免許局、およびNHS。彼らは明らかに異なる基準を使用しています。

Deed Pollで名前を変更すると、300文字が許可されます。

名前の長さに法的な制限はありませんが、フルネームには300文字(スペースを含む)の制限があります。

NHSは、患者名の70個の文字を使用しています

患者名
形式/長さ:最大an70

パスポートオフィスでは最初/最後の30 + 30が許可されており、運転免許証(DVLA)は合計30です。

他の組織には、作成するドキュメントに表示する内容について独自の制限があることに注意してください。HMパスポートオフィスの場合、姓と名はそれぞれ30文字、DVLAの場合は合計で30文字です。フルネーム。



2

あなたが実際に求めているのは関連していますが、かなり異なる質問です。データベースに収めるために、どのくらいの頻度で名前を切り捨てたいですか?答えは、名前の長さが異なる頻度と選択された最大長の両方に依存します。この懸念は、データベースが使用するリソースに関する懸念とバランスが取れています。varcharフィールドの異なる最大長の間のオーバーヘッドの違いがどれほど小さいかを考えると、名前を切り捨ててフィールドをあえて同じ大きさにすることを強制されることはないという面で、私は通常エラーになります。


1

多くの文化では、しばしば「姓」と呼ばれる「第二姓」があることに注意してください。たとえば、スペインの人々を扱っている場合、彼らは「姓」から分離された姓を持っていることを高く評価します。

最善の策は、名前コンポーネントのデータ型を定義し、姓のデータ型にそれらを使用し、ロケールに応じて微調整することです。


統計的に値が小さいロケールで制限を小さくしても利点はありません。フィールドのサイズは、一部の値が実際に許可された余分な文字を使用しない限り、使用されるスペースに影響しません(つまり、とにかく正しい選択をしたことを意味します)。 !
Tao

0

平均的な名は約6文字です。これは、姓に43を残します。:)必要に応じて、おそらく短くすることができるようです。

主な質問は、いくつの行があると思いますか?varchar(50)が数百万行を取得するまであなたを殺そうとは思わない。


6
varchar(20)列に10〜15文字の5,000万の値があり、varchar(50)列に同じ5,000万の値がある場合、それらはまったく同じスペースを占めます。これが、charとは対照的に、varcharの重要な点です。
Tao


0

データベースを誰が使用するかによって異なります。たとえば、アフリカの名前は、姓と名を区切ったvarchar(20)を使用します。ただし、国によって異なりますが、データベースのリソースとメモリを節約するために、姓と名のフィールドを分離し、varchar(30)を使用するとうまくいくと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.