我正在设计一个数据库表,并再一次问自己同样愚蠢的问题:firstname字段应该多长时间?
有没有人有最常见字段的合理长度列表,例如名字,姓氏和电子邮件地址?
我刚刚在美国向数百万客户查询了我的数据库.
最大名字长度是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这样的人而存在).
一个人可以有多个名字,扮演角色,如法律,婚姻,女性,首选,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的幂,它会让你保持在一组有限的常见尺寸内,这本身就是一件好事,它可以更容易地猜出你可能遇到的未知物体的大小.我看到有很多其他人这样做,并且有一些美学上令人愉悦的东西.当我看到它时,它通常给我一种良好的感觉,这意味着设计师就像工程师或数学家一样思考.虽然我可能会担心只使用素数.:)