Lista de comprimentos padrão para campos de banco de dados

395

Estou projetando uma tabela de banco de dados e mais uma vez me perguntando a mesma pergunta estúpida: quanto tempo deve ser o campo do primeiro nome?

Alguém tem uma lista de comprimentos razoáveis ​​para os campos mais comuns , como nome, sobrenome e endereço de email?

Patrick McElhaney
fonte
11
Apenas certifique-se de permitir caracteres não alfa nos nomes! aponta hífen em seu sobrenome
Chris Marasti-Georg
3
Consulte "Comprimento máximo de um ID de email válido" para obter o tamanho máximo do endereço de email.
Out
2
Uma observação: não exija um "primeiro nome" e um "sobrenome". Algumas pessoas, como eu, só têm um nome. (Prova: web.archive.org/web/20130115074449/http://saizai.com/… )
Sai
E quanto a URL, como blog ou link para perfil?
AlikElzin-Kilaka
Dane-se se o nome for tão longo quanto este gintama.wikia.com/wiki/Jugem_Jugem
絢 瀬 絵 里

Respostas:

35

Recomendação do W3C:

Ao criar um formulário ou banco de dados que aceite nomes de pessoas com diversas origens, você deve se perguntar se realmente precisa de campos separados para o nome e o sobrenome.

… Lembre-se de que os nomes em algumas culturas podem ser muito mais longos que os seus. … Evite limitar o tamanho do campo para nomes no seu banco de dados . Em particular, não suponha que um nome japonês de quatro caracteres em UTF-8 caiba em quatro bytes - você provavelmente precisará de 12.

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

Para os campos do banco de dados, VARCHAR(255)é uma opção padrão segura, a menos que você possa encontrar um bom motivo para usar outra coisa. Para aplicativos Web típicos, o desempenho não será um problema. Não otimize prematuramente.

jrc
fonte
26
Faz dez anos desde que eu fiz essa pergunta. Com mais 10 anos de experiência, estou inclinado a concordar com você.
Patrick McElhaney
2
Como exatamente você imprimiria um nome com 255 caracteres em um envelope?
Michael Potter
316

Acabei de consultar meu banco de dados com milhões de clientes nos EUA.

  • O tamanho máximo do primeiro nome era 46. Eu concordo com 50. (É claro, apenas 500 deles tinham mais de 25 anos e eram todos os casos em que as importações de dados resultavam em lixo adicional acabando nesse campo.)

  • O sobrenome era semelhante ao primeiro nome.

  • Os endereços de email atingiram o limite máximo de 62 caracteres. A maioria dos mais longos eram na verdade listas de endereços de e-mail separados por ponto e vírgula.

  • O endereço máximo chega a 95 caracteres. Os longos eram todos válidos.

  • O comprimento máximo da cidade era 35.

Esse deve ser um spread estatístico decente para as pessoas nos EUA. Se você tiver uma localização a considerar, os números podem variar significativamente.

Eric Z Beard
fonte
4
Comparados aos seus, os bancos de dados aos quais tenho acesso são pequenos, mas mesmo lá encontrei um endereço de email de 138 caracteres. O componente localpart é obviamente algum tipo de nome distinto LDAP (ou AD?).
Bernd Jendrissek
2
E os números de telefone?
ceving 03/05/12
@EricZBeard "endereço" inclui o número da casa?
noɥʇʎԀʎzɐɹƆ
3
O tamanho médio dos endereços de email no seu banco de dados não é uma boa medida para recomendação. O tamanho máximo válido de um endereço de email é de 254 caracteres e deve ser o tamanho especificado no banco de dados. Além disso, ter listas de endereços de email em uma única coluna significa para mim que seus dados não estão normalizados e, assim, invalida sua resposta.
Mario
11
@MGOwen Primeiro, você não sabe o objetivo do banco de dados; em determinadas configurações, alguém pode ter acesso negado por causa de um problema frívolo, como o e-mail sendo "muito longo", pode ser um problema importante. Em segundo lugar, o link que você postou diz "O mais longo válido é 89", enquanto que este diz que é 62. Qual é o certo? Se você quiser apenas escolher um número arbitrário ou se tiver um motivo válido, como o nome deve ser incluído como parte do endereço, tudo bem. No entanto, ainda é razoável que, em caso de dúvida, consulte as especificações. Ainda afirmo que uma única pessoa dizendo "meu banco de dados atinge no máximo x" é anedótica.
Mario
171

O Catálogo de Padrões de Dados do Governo do Reino Unido detalha os padrões do Reino Unido para esse tipo de coisa. Ele sugere 35 caracteres para cada um dos nomes e sobrenomes, ou 70 caracteres para um único campo para conter o nome completo e 255 caracteres para um endereço de email. Entre outras coisas..

Ian Nelson
fonte
3
O link precisa ser atualizado a partir de 22 de outubro de 2010. Pesquisei no: site: *. Gov.uk Nome "35 caracteres" e encontrei este documento justice.gov.uk/guidance/docs/electoral-reg-standards.pdf
Tony R
20
Apenas um pensamento ... não deveria haver 71 caracteres para o nome e o sobrenome em um único campo, dado que precisa haver um espaço?
Joseph Redfern
8
Bem, eles antecipam claramente o nome próprio ocasional ocasional (até 35 caracteres) e o sobrenome longo ocasional (até 35 caracteres), mas não necessariamente esperam um indivíduo com uma combinação de nome e sobrenome longos. Isso seria apenas ;-) gananciosos
Ian Nelson
6
Se o Sr. El Tahir El Fadil El Siddig Abderrahman Mohammed Ahmed Abdel Karim El Mahdi realmente usar todos os seus nomes ao preencher formulários on-line, eu ficaria impressionado. Eu tenho dois nomes do meio, mas só uso um deles além dos formulários oficiais (isto é, do governo).
Leon
2
@ ian-nelson Comprimento do email de acordo com a RFC 3696: esse limite é de no máximo 64 caracteres (octetos) na "parte local" (antes de "@") e no máximo 255 caracteres (octetos) na parte do domínio (após o "@") para um comprimento total de 320 caracteres. Os sistemas que lidam com email devem estar preparados para processar endereços que são longos, mesmo que raramente sejam encontrados.
Piotr Nawrot
54

Alguns comprimentos de coluna provavelmente corretos

                            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

Um longo discurso sobre nomes pessoais

Um nome pessoal é um Polynym (um nome com vários componentes classificáveis ), um Mononym (um nome com apenas um componente) ou um Pictonym (um nome representado por uma imagem - isso existe devido a pessoas como Prince).

Uma pessoa pode ter vários nomes, desempenhando papéis, como LEGAL, MARITAL, MAIDEN, PREFERRED, SOBRIQUET, PSEUDONYM, etc. Você pode ter regras de negócios, como "uma pessoa pode ter apenas um nome legal por vez, mas vários pseudônimos de uma vez".

Alguns exemplos:

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

ou

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

ou

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

ou

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

Nomes próprios, nomes do meio e sobrenomes podem ser várias palavras como "Billy Bob" Thornton, ou Ralph "Vaughn Williams".

Neil McGuigan
fonte
5
Isso é muito informativo, mas não é uma resposta super útil. Na próxima vez que precisar de uma resposta "provavelmente correta", eu o informarei.
N8bar
16

Eu diria para errar no lado alto. Como você provavelmente estará usando varchar, qualquer espaço extra que você permitir não consumirá espaço extra a menos que alguém precise. Eu diria que para nomes (primeiro ou último), digite pelo menos 50 caracteres e, para endereço de e-mail, faça pelo menos 128. Existem alguns endereços de e-mail realmente longos por aí.

Outra coisa que gosto de fazer é ir ao Lipsum.com e pedir para gerar algum texto. Dessa forma, você pode ter uma boa idéia de como são os 100 bytes.

Kibbee
fonte
6
Oh meu Deus - a primeira pessoa a observar que campos maiores não significam necessariamente mais espaço de armazenamento, daí o "var" no varchar. O NVarchar normalmente faria mais sentido para os nomes.
Tao
Depende da implementação. Você não precisa do NVARCHAR se o VARCHAR suportar UTF-8.
dan04
2
[N]Varchartamanhos que no entanto, afectar os seus índices.
usar o seguinte código
11

Eu quase sempre uso uma potência de 2, a menos que haja um bom motivo para não usar, como uma interface voltada para o cliente em que algum outro número tenha um significado especial para o cliente.

Se você se apegar a potências de 2, ele o manterá dentro de um conjunto limitado de tamanhos comuns, o que é uma coisa boa e facilita a estimativa do tamanho de objetos desconhecidos que você pode encontrar. Vejo um bom número de outras pessoas fazendo isso, e há algo esteticamente agradável nisso. Geralmente me dá uma boa sensação quando vejo isso, significa que o designer estava pensando como um engenheiro ou matemático. Embora eu provavelmente estivesse preocupado se apenas números primos fossem usados. :)

Mike
fonte
3
É possível argumentar que 2ⁿ - 1, 2ⁿ - 2 ou mesmo 2ⁿ - 4, dois seria uma decisão de engenharia melhor, porque geralmente as strings são representadas como arays de caracteres indexados a zero e terminadas com um caractere nulo, byte ou dois bytes (UTF-8 ) Além disso, com alguns bancos de dados acima de 255 em um varchar, é necessário um byte adicional para armazenamento (consulte stackoverflow.com/questions/2340639/… ).
Pocketsand
2
+------------+---------------+---------------------------------+
|   Field    | Length (Char) |           Description           |
+------------+---------------+---------------------------------+
|firstname   | 35            |                                 |
|lastname    | 35            |                                 |
|email       | 255           |                                 |
|url         | 60+           | According to server and browser |
|city        | 45            |                                 |
|address     | 90            |                                 |
+------------+---------------+---------------------------------+

Edit : Added some espaçamento

Mouner, Micheal Youssif, Mikhail
fonte
11
Por que não usar o VARCHAR 255 para tudo o que é uma string? O VARCHAR não usa preenchimento e termina com um ou dois bytes adicionais.
Radtek 03/02
varchar pode ser um pouco lento.
Kta
1

Olhando nos meus arquivos de e-mail, há vários nomes "primeiros" bastante longos (é claro que o que se entende por primeiro é variável por cultura). Um exemplo é Krishnamurthy - com 13 letras. Um bom palpite pode ser de 20 a 25 letras com base nisso. O email deve ser muito mais longo, pois você pode ter [email protected]. Além disso, o gmail e alguns outros programas de correio permitem que você use [email protected] onde "sometag" é qualquer coisa que você queira colocar lá para poder usá-lo para classificar os e-mails recebidos. Frequentemente, encontro formulários da Web que não me permitem inserir meu endereço de e-mail completo sem considerar nenhuma tag. Portanto, se você precisar de um campo de e-mail fixo, talvez algo como [email protected] em caracteres para um total de 90 caracteres (se eu fiz minhas contas direito!).

Loren Charnley
fonte
0

Eu costumo ir com:

Nome : 30 caracteres
Sobrenome : 30 caracteres
Email : 50 caracteres
Endereço : 200 caracteres

Se estou preocupado com campos longos para os nomes, às vezes também posso usar 50 para os campos de nome, pois o espaço de armazenamento raramente é um problema nos dias de hoje.

kaybenleroll
fonte
11
50 por email? 254 é o máximo, na verdade #
Marko
0

Se você precisar considerar a localização (para aqueles de fora dos EUA!) E isso for possível no seu ambiente, sugiro:

Defina os tipos de dados para cada componente do nome - NOTA: algumas culturas têm mais de dois nomes! Em seguida, tenha um tipo para o nome completo,

Em seguida, a localização se torna simples (no que diz respeito aos nomes).

O mesmo se aplica aos endereços, BTW - formatos diferentes!

ColinYounger
fonte
-1

é varchar certo? Portanto, não importa se você usa 50 ou 25 anos, é melhor estar seguro e usar 50, que disseram que acredito que o mais longo que eu vi tenha cerca de 19 anos. Os sobrenomes são mais longos

SQLMenace
fonte