我正在设计一个数据库表,问自己这个问题:名字字段应该多长?
谁有最常见的字段(如名字、姓氏和电子邮件地址)的合理长度的列表?
我正在设计一个数据库表,问自己这个问题:名字字段应该多长?
谁有最常见的字段(如名字、姓氏和电子邮件地址)的合理长度的列表?
当前回答
我通常会选择:
名字:30个字符 姓氏:30个字符 电子邮件:50个字符 地址:200个字符
如果我担心名称字段太长,我有时也会将名称字段设置为50,因为现在存储空间很少成为问题。
其他回答
我想说的是,宁可走偏高的那条路。因为您可能会使用varchar,所以您允许的任何额外空间实际上都不会占用任何额外空间,除非有人需要它。我会说,对于名字(名或名),至少要有50个字符,对于电子邮件地址,至少要有128个字符。有一些很长的电子邮件地址。
我喜欢做的另一件事是访问Lipsum.com,让它生成一些文本。这样,您就可以很好地了解100个字节是什么样子。
W3C推荐:
If designing a form or database that will accept names from people with a variety of backgrounds, you should ask yourself whether you really need to have separate fields for given name and family name. … Bear in mind that names in some cultures can be quite a lot longer than your own. … Avoid limiting the field size for names in your database. In particular, do not assume that a four-character Japanese name in UTF-8 will fit in four bytes – you are likely to actually need 12. https://www.w3.org/International/questions/qa-personal-names
对于数据库字段,VARCHAR(255)是一个安全的默认选择,除非您确实有充分的理由使用其他选项。对于典型的web应用程序,性能不是问题。不要过早地优化。
如果你需要考虑本土化,并且这在你的环境中是可行的,我建议:
为名称的每个组件定义数据类型——注意:某些区域性有两个以上的名称!然后为全名设置一个类型,
然后本地化就变得简单了(就名称而言)。
同样适用于地址,顺便说一句-不同的格式!
一些几乎肯定正确的列长度
Min Max
Hostname 1 255
Domain Name 4 253
Email Address 7 254
Email Address [1] 3 254
Telephone Number 10 15
Telephone Number [2] 3 26
HTTP(S) URL w domain name 11 2083
URL [3] 6 2083
Postal Code [4] 2 11
IP Address (incl ipv6) 7 45
Longitude numeric 9,6
Latitude numeric 8,6
Money[5] numeric 19,4
[1] Allow local domains or TLD-only domains
[2] Allow short numbers like 911 and extensions like 16045551212x12345
[3] Allow local domains, tv:// scheme
[4] http://en.wikipedia.org/wiki/List_of_postal_codes. Use max 12 if storing dash or space
[5] http://stackoverflow.com/questions/224462/storing-money-in-a-decimal-column-what-precision-and-scale
对个人名字的长篇大论
一个人的名字要么是多名(一个名字有多个可排序的组件),要么是单名(一个名字只有一个组件),要么是图画名(一个名字由一张图片表示——这是因为像Prince这样的人)。
一个人可以有多个名字,扮演不同的角色,比如法定的、已婚的、未婚的、首选的、绰号、笔名等。您可能有业务规则,例如“一个人一次只能有一个合法名称,但一次只能有多个笔名”。
一些例子:
names: [
{
type:"POLYNYM",
role:"LEGAL",
given:"George",
middle:"Herman",
moniker:"Babe",
surname:"Ruth",
generation:"JUNIOR"
},
{
type:"MONONYM",
role:"SOBRIQUET",
mononym:"The Bambino" /* mononyms can be more than one word, but only one component */
},
{
type:"MONONYM",
role:"SOBRIQUET",
mononym:"The Sultan of Swat"
}
]
or
names: [
{
type:"POLYNYM",
role:"PREFERRED",
given:"Malcolm",
surname:"X"
},
{
type:"POLYNYM",
role:"BIRTH",
given:"Malcolm",
surname:"Little"
},
{
type:"POLYNYM",
role:"LEGAL",
given:"Malik",
surname:"El-Shabazz"
}
]
or
names:[
{
type:"POLYNYM",
role:"LEGAL",
given:"Prince",
middle:"Rogers",
surname:"Nelson"
},
{
type:"MONONYM",
role:"SOBRIQUET",
mononym:"Prince"
},
{
type:"PICTONYM",
role:"LEGAL",
url:"http://upload.wikimedia.org/wikipedia/en/thumb/a/af/Prince_logo.svg/130px-Prince_logo.svg.png"
}
]
or
names:[
{
type:"POLYNYM",
role:"LEGAL",
given:"Juan Pablo",
surname:"Fernández de Calderón",
secondarySurname:"García-Iglesias" /* hispanic people often have two surnames. it can be impolite to use the wrong one. Portuguese and Spaniards differ as to which surname is important */
}
]
名字、中间名、姓氏可以是多个单词,如“比利·鲍勃·桑顿”或“拉尔夫·沃恩·威廉姆斯”。
我通常会选择:
名字:30个字符 姓氏:30个字符 电子邮件:50个字符 地址:200个字符
如果我担心名称字段太长,我有时也会将名称字段设置为50,因为现在存储空间很少成为问题。