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

Pat*_*ney 366 database standards

我正在设计一个数据库表,并再一次问自己同样愚蠢的问题:firstname字段应该多长时间?

有没有人有最常见字段的合理长度列表,例如名字,姓氏和电子邮件地址?

Eri*_*ard 294

我刚刚在美国向数百万客户查询了我的数据库.

  • 最大名字长度是46.我跟50去了.(当然,其中只有500个超过25,而且他们都是数据导入导致该领域额外垃圾清盘的情况.)

  • 姓氏名字相似.

  • 电子邮件地址最多为62个字符.大多数较长的实际上是由分号分隔的电子邮件地址列表.

  • 街道地址最多95个字符.长的都是有效的.

  • 最大城市长度为35.

对于美国人来说,这应该是一个不错的统计传播.如果您要考虑本地化,则数字可能会有很大差异.

  • 反例(82个字符):http://en.wikipedia.org/wiki/Alexander_Siddig (10认同)
  • 与你的相比,我可以访问的数据库很小,但即使在那里我找到了138个字符的电子邮件地址.localpart组件显然是某种LDAP(或AD?)专有名称. (4认同)
  • 数据库中电子邮件地址的平均长度不适合推荐.电子邮件地址的最大有效长度为254个字符,应该是数据库中指定的长度.此外,在一列中包含电子邮件地址列表表示您的数据未正常化,从而进一步使您的答案无效. (3认同)
  • 最长的城市名称是“Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu”,共有85 个字符。https://en.wikipedia.org/wiki/List_of_long_place_names (3认同)
  • 电话号码怎么样? (2认同)
  • @Mario,如果你想一想,例如,大多数使用电子邮件登录的软件可能*不应该*允许极其不切实际的电子邮件地址。请参阅此处的讨论 /sf/ask/90809071/ (2认同)
  • @binarysubstrate 实际上,最长的城市名称是“Krung Thep Mahanakhon Amon Rattanakosin Mahinthara Yuthaya Mahadilok Phop Noppharat Ratchathani Burirom Udomratchaniwet Mahasathan Amon Piman Awatan Sathit Sakkathattiya Witsanukam Prasit”(AKA 时钟字符“Bangkok ** at18”)** . (2认同)

Ian*_*son 167

英国政府数据标准目录详细介绍了英国的此类标准.它为每个给定名称和姓氏建议35个字符,或者为单个字段保存全名70个字符,为电子邮件地址建议255个字符.除其他外......

  • 只是一个想法......鉴于需要一个空间,单个字段中的名字和姓氏不应该是71个字符吗? (17认同)
  • 反例(82个字符):http://en.wikipedia.org/wiki/Alexander_Siddig (16认同)
  • 嗯,很明显,他们预计偶尔有一个长姓(最多35个字符)和偶尔的长姓(最多35个字符),但不一定要求个人同时使用冗长的姓氏和姓氏.那只会贪婪;-) (8认同)
  • 如果El Tahir El Fadil El Siddig Abderrahman Mohammed Ahmed Abdel Karim El Mahdi先生在填写在线表格时实际上使用了他的所有名字,我会留下深刻的印象.我有两个中间名,但除了官方(即政府)表格外,我只使用其中一个. (6认同)
  • 该链接需要更新截至2010年10月22日.我google for:site:*.gov.uk名称"35个字符",发现此文档https://www.justice.gov.uk/guidance/docs/electoral -reg-standards.pdf (3认同)
  • @ ian-nelson根据RFC 3696的电子邮件长度:_限制在"本地部分"(在"@"之前)最多为64个字符(八位字节),在域部分中最多为255个字符(八位字节)(之后) "@")总长度为320个字符.处理电子邮件的系统应准备好处理那么长的地址,即使它们很少遇到._ (2认同)

Nei*_*gan 51

有些可能正确的列长度

                            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
Run Code Online (Sandbox Code Playgroud)

对个人名字的长吼

个人名称是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"
  }
]
Run Code Online (Sandbox Code Playgroud)

要么

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"
  }
]
Run Code Online (Sandbox Code Playgroud)

要么

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"
  }
]
Run Code Online (Sandbox Code Playgroud)

要么

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 */
  }
]
Run Code Online (Sandbox Code Playgroud)

给定名称,中间名,姓氏可以是多个单词,例如"Billy Bob" Thornton,或Ralph "Vaughn Williams".

  • 这是非常有用的,但不是一个非常有用的答案.下次我需要一个"可能正确"的答案时,我会告诉你. (3认同)

jrc*_*jrc 21

W3C的建议:

如果设计一个可以接受来自不同背景的人的名字的表单或数据库,你应该问问自己,你是否真的需要为给定的名字和姓氏提供单独的字段.

...请记住,某些文化中的名字可能比你自己的名字长得多.... 避免限制数据库中名称的字段大小.特别是,不要假设UTF-8中的四个字符的日文名称将适合四个字节 - 您可能实际需要12个.

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

对于数据库字段,VARCHAR(255)是一个安全的默认选择,除非您实际上可以提出使用其他内容的充分理由.对于典型的Web应用程序,性能不会成为问题.不要过早优化.

  • 我提出这个问题已经10年了.凭借另外10年的经验,我倾向于同意你的观点. (15认同)
  • 您将如何在信封上打印 255 个字符长的姓名? (3认同)

Kib*_*bee 16

我会说偏见偏高.由于您可能正在使用varchar,因此除非有人需要,否则您允许的任何额外空间实际上不会占用任何额外空间.我会说名字(第一个或最后一个),至少50个字符,对于电子邮件地址,至少要128个.有一些非常长的电子邮件地址.

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

  • 哦,我 - 第一个注意到较大字段并不一定意味着更多存储空间的人,因此varchar中的"var".NVarchar通常会对名字更有意义. (6认同)
  • `[N] Varchar`的大小* do *但是会影响您的索引。 (2认同)

Mik*_*ike 11

我几乎总是使用2的幂,除非有充分的理由不这样做,例如面向客户的界面,其他一些数字对客户有特殊意义.

如果你坚持使用2的幂,它会让你保持在一组有限的常见尺寸内,这本身就是一件好事,它可以更容易地猜出你可能遇到的未知物体的大小.我看到有很多其他人这样做,并且有一些美学上令人愉悦的东西.当我看到它时,它通常给我一种良好的感觉,这意味着设计师就像工程师或数学家一样思考.虽然我可能会担心只使用素数.:)

  • 有争议的是2ⁿ - 1,2, - 2甚至2ⁿ - 4,两个是更好的工程决策,因为通常字符串表示为零索引字符arays并以null char,byte或两个字节(UTF-8)终止).另外一些数据库在varchar上超过255需要一个额外的字节用于存储(参见http://stackoverflow.com/questions/2340639/why-historically-do-people-use-255-not-256-for-database-场幅度). (3认同)

Pod*_*.io 7

这些可能对某人有用;

youtube max channel length = 20
facebook max name length   = 50
twitter max handle length  = 15
email max length           = 255 
Run Code Online (Sandbox Code Playgroud)

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