我正在设计一个数据库表,并再次问自己同样愚蠢的问题:名字字段应该多长?
有没有人列出最常见字段的合理长度,例如名字、姓氏和电子邮件地址?
我刚刚向美国数百万客户查询了我的数据库。
名字的最大长度是 46。我选择 50。(当然,其中只有 500 个超过 25,而且它们都是数据导入导致该字段中出现额外垃圾的情况。)
姓氏与名字相似。
电子邮件地址最多为 62 个字符。大多数较长的实际上是用分号分隔的电子邮件地址列表。
街道地址最多为 95 个字符。长的都是有效的。
最大城市长度为 35。
对于美国人来说,这应该是一个不错的统计分布。如果您要考虑本地化,则数字可能会有很大差异。
英国政府数据标准目录详细介绍了此类事物的英国标准。它建议每个名字和姓氏各使用 35 个字符,或单个字段使用 70 个字符来保存全名,以及 255 个字符用于电子邮件地址。除其他外..
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
个人名称可以是 Polynym(具有多个可排序组件的名称)、Mononym(只有一个组件的名称)或 Pictonym(由图片表示的名称 - 由于Prince这样的人而存在)。
一个人可以有多个名字,扮演角色,比如LEGAL、MARITAL、MAIDEN、PREFERRED、SOBRIQUET、PSEUDONYM等。你可能有业务规则,比如“一个人一次只能有一个法定名字,但可以有多个假名一次”。
一些例子:
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" Thornton
, 或Ralph "Vaughn Williams"
。
W3C 的建议:
如果设计一个可以接受来自不同背景的人的姓名的表单或数据库,您应该问自己是否真的需要为名字和姓氏设置单独的字段。
…请记住,某些文化中的名称可能比您自己的要长得多。…避免限制数据库中名称的字段大小。特别是,不要假设 UTF-8 中的四字符日文名称可以容纳四个字节——您实际上可能需要 12 个字节。
https://www.w3.org/International/questions/qa-personal-names
对于数据库字段,VARCHAR(255)
这是一个安全的默认选择,除非您实际上可以找到使用其他内容的充分理由。对于典型的 Web 应用程序,性能不会成为问题。不要过早优化。
我会说偏高。由于您可能会使用 varchar,因此您允许的任何额外空间实际上不会占用任何额外空间,除非有人需要它。我会说姓名(名字或姓氏)至少 50 个字符,电子邮件地址至少 128 个字符。那里有一些非常长的电子邮件地址。
我喜欢做的另一件事是访问Lipsum.com并要求它生成一些文本。这样您就可以很好地了解 100 字节的样子。
我几乎总是使用 2 的幂,除非有充分的理由不使用,例如面向客户的界面,其中一些其他数字对客户具有特殊意义。
如果你坚持 2 的幂,它会让你保持在一组有限的常见尺寸范围内,这本身就是一件好事,而且它更容易猜测你可能遇到的未知物体的大小。我看到相当多的其他人这样做,并且有一些美学上令人愉悦的东西。当我看到这个时,它通常会给我一种很好的感觉,这意味着设计师正在像工程师或数学家一样思考。虽然如果只使用素数,我可能会担心。:)
这些可能对某人有用;
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/
+------------+---------------+---------------------------------+
| Field | Length (Char) | Description |
+------------+---------------+---------------------------------+
|firstname | 35 | |
|lastname | 35 | |
|email | 255 | |
|url | 60+ | According to server and browser |
|city | 45 | |
|address | 90 | |
+------------+---------------+---------------------------------+
编辑:添加了一些间距
我想找到相同的答案,并且接受的答案中提到的英国政府数据标准听起来很理想。然而,这些似乎都不存在了——经过扩展搜索后,我在这里的档案中找到了它:http://webarchive.nationalarchives.gov.uk/+/http: //www.cabinetoffice.gov.uk/govtalk/架构标准/e-gif/datastandards.aspx。需要下载压缩包,解压,然后打开 html 文件夹中的 default.htm。
看看我的电子邮件档案,有许多很长的“名字”(当然,名字的含义因文化而异)。一个例子是 Krishnamurthy - 它有 13 个字母长。基于此,一个好的猜测可能是 20 到 25 个字母。电子邮件应该更长,因为您可能有 firstname.lastname@somedomain.com。此外,gmail 和其他一些邮件程序允许您使用 firstname.lastname+sometag@somedomain.com 其中“sometag”是您想要放在那里的任何内容,以便您可以使用它对传入的电子邮件进行排序。我经常遇到不允许我在不考虑任何标签的情况下输入完整电子邮件地址的 Web 表单。因此,如果您需要一个固定的电子邮件字段,则可能是 25.25+15@20.3 字符,总共 90 个字符(如果我的数学计算正确的话!)。
我通常会选择:
名字:30 个字符
姓氏:30个字符
电子邮件:50 个字符
地址:200 个字符
如果我担心名称的长字段,有时我可能也会选择 50 个名称字段,因为这些天存储空间很少成为问题。
如果您需要考虑本地化(对于我们这些美国以外的人!)并且在您的环境中是可能的,我建议:
为名称的每个组成部分定义数据类型 - 注意:某些文化有两个以上的名称!然后有一个全名的类型,
然后本地化变得简单(就名称而言)。
这同样适用于地址,顺便说一句 - 不同的格式!
它是 varchar 对吗?所以不管你用 50 还是 25,最好是安全地使用 50,也就是说我相信我见过的最长的时间大约是 19 左右。姓氏更长