数据库字段的标准长度列表

我正在设计一个数据库表,并问自己这个问题:名字字段应该多长?

谁有最常见的字段(如名字、姓氏和电子邮件地址)的合理长度的列表?

299766 次浏览

看看我的电子邮件档案,有很多相当长的“第一个”名字(当然,第一个的含义因文化而异)。一个例子是Krishnamurthy,它有13个字母长。一个好的猜测可能是20到25个字母。Email应该是< em > < / em >多,因为你可能有firstname.lastname@somedomain.com。此外,gmail和其他一些邮件程序允许您使用firstname.lastname+sometag@somedomain.com,其中“sometag”是您想放在那里的任何东西,以便您可以使用它来对传入的电子邮件进行排序。我经常碰到一些网页表单,它们不允许我在不考虑任何标签的情况下输入完整的电子邮件地址。所以,如果你需要一个固定的电子邮件字段,比如25.25+15@20.3,总共90个字符(如果我没算错的话!)。

是varchar,对吧?所以不管你用50个还是25个,为了安全起见,最好用50个,我认为我见过的最长的是19个左右。姓更长

我刚刚查询了美国数百万客户的数据库。

  • 最大名字长度为46。我猜是50个。(当然,其中超过25岁的只有500个,而且都是数据导入导致该领域出现额外垃圾的情况。)

  • Last name类似first name。

  • 电子邮件地址 max out at 62 字符。大部分是较长的 实际上是电子邮件列表吗

  • .使用分号分隔
  • 街道地址的最大值为95 字符。长点的都是 李有效。< / p > < / >

  • Max city长度为35。

对于美国人来说,这应该是一个不错的统计分布。如果你需要考虑本土化问题,数值可能会有很大差异。

我通常会选择:

Firstname: 30 chars
: 30 chars
电子邮件: 50 chars
地址: 200个字符

如果我担心名称字段太长,我有时也会将名称字段设置为50,因为现在存储空间很少成为问题。

我想说的是,宁可走偏高的那条路。因为您可能会使用varchar,所以您允许的任何额外空间实际上都不会占用任何额外空间,除非有人需要它。我会说,对于名字(名或名),至少要有50个字符,对于电子邮件地址,至少要有128个字符。有一些很长的电子邮件地址。

我喜欢做的另一件事是去Lipsum.com并要求它生成一些文本。这样,您就可以很好地了解100个字节是什么样子。

我几乎总是使用2的幂,除非有很好的理由不这样做,比如在面向客户的界面上,其他一些数字对客户有特殊的意义。

如果你坚持使用2的幂,那么你就可以在一个有限的常见大小范围内,这本身就是一件好事,它可以让你更容易猜测你可能遇到的未知物体的大小。我看到很多人都在这么做,而且这种做法也很有美感。当我看到这些时,我通常会有一种良好的感觉,这意味着设计师像工程师或数学家一样思考。不过如果只用质数,我可能会担心。:)

如果你需要考虑本土化,并且这在你的环境中是可行的,我建议:

为名称的每个组件定义数据类型——注意:某些区域性有两个以上的名称!然后为全名设置一个类型,

然后本地化就变得简单了(就名称而言)。

同样适用于地址,顺便说一句-不同的格式!

英国政府数据标准目录详细说明了这类事情的英国标准。 它建议“名”和“姓”各有35个字符,“全名”为70个字符,“电子邮件地址”为255个字符。在其他事情中..

+------------+---------------+---------------------------------+
|   Field    | Length (Char) |           Description           |
+------------+---------------+---------------------------------+
|firstname   | 35            |                                 |
|lastname    | 35            |                                 |
|email       | 255           |                                 |
|url         | 60+           | According to server and browser |
|city        | 45            |                                 |
|address     | 90            |                                 |
+------------+---------------+---------------------------------+

< em >编辑< / em >:增加了一些空格

我想找到同样的答案,在公认的答案中提到的英国政府数据标准听起来很理想。然而,这些似乎都不存在了——经过广泛的搜索,我在这里的存档中找到了它:http://webarchive.nationalarchives.gov.uk/+/http://www.cabinetoffice.gov.uk/govtalk/schemasstandards/e-gif/datastandards.aspx。需要下载zip,解压,然后在html文件夹中打开default.htm。

一些几乎肯定正确的列长度

                            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

对个人名字的长篇大论

个人名字可以是多名(包含多个可分类的组件的名字)、单名(只有一个组件的名字)或图画名(由图片表示的名字——这是因为像王子这样的人而存在的)。

一个人可以有多个名字,扮演不同的角色,比如法定的、已婚的、未婚的、首选的、绰号、笔名等。您可能有业务规则,例如“一个人一次只能有一个合法名称,但一次只能有多个笔名”。

一些例子:

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"
}
]

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"
}
]

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"
}
]

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 */
}
]

名字、中间名、姓氏可以是多个单词,如"Billy Bob" ThorntonRalph "Vaughn Williams"

这些可能对某人有用;

youtube max channel length = 20
facebook max name length   = 50
twitter max handle length  = 15
email max length           = 255

http://www.interoadvisory.com/2015/08/6-areas-inside-of-linkedin-with-character-limits/

W3C推荐:

如果设计一个表单或数据库将接受人名 有了各种各样的背景,你应该问问自己是否适合 名字和姓需要有单独的字段

请记住,在某些文化中,名字可能要长得多 而不是你自己。中避免限制名称的字段大小 数据库> < /强。特别是,不要假定四个字符 UTF-8格式的日文名称可以容纳4个字节——你可能会

https://www.w3.org/International/questions/qa-personal-names

对于数据库字段,VARCHAR(255)是一个安全的默认选择,除非你真的能想出一个很好的理由来使用其他字段。对于典型的web应用程序,性能不是问题。不要过早地优化。