Qual é um limite de comprimento razoável nos campos de "Nome" da pessoa?


138

Eu tenho um formulário da web simples que permitirá que usuários não autenticados insiram suas informações, incluindo o nome. Dei ao campo de nome um limite de 50 caracteres para coincidir com minha tabela de banco de dados, onde o campo é varchar (50), mas comecei a pensar.

É mais apropriado usar algo como o tipo de coluna Texto ou devo limitar o tamanho do nome a algo razoável?

Estou usando o SQL Server 2005, caso isso importe em sua resposta.

Edição: Eu não vi essa pergunta mais ampla sobre questões semelhantes.


1
Verifique esta questão relacionada para muita discussão sobre o assunto.
Chris Marasti-Georg

2
Algo a se notar, nesta era da globalização, o varchar NÃO costuma ser o tipo de dados correto, é provável que você esteja usando o nvarchar.
Tao

@ Tao: Como ele está usando o MS SQL Server, eu concordo. Mas o VARCHAR é o tipo de dados correto em outras implementações SQL que oferecem melhor suporte ao UTF-8.
dan04

Respostas:


142

O Catálogo de padrões de dados do governo do Reino Unido sugere 35 caracteres para cada um dos nomes e sobrenomes, ou 70 caracteres para um único campo para conter o nome completo.


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

Seus links parecem estar realmente ruins ... a partir de 8/2012: webarchive.nationalarchives.gov.uk/+/http://…
Thomas B

6
O nome completo mais "razoável" que encontrei é "Gisele Marie-Louise Marguerite LaFleche" (39 bytes de comprimento).
precisa saber é o seguinte

Um pouco maior 54 caracteres: gw.geneanet.org/…
mestachs

3
A Nova Zelândia limita os nomes completos: eles devem ter menos de 100 caracteres, incluindo espaços, e não podem conter símbolos ou números. Eu acho que hífens são permitidos em nomes de família, no entanto.
Glutnix 26/05

27

Sei que estou atrasado neste, mas adicionarei esse comentário de qualquer maneira, pois outros poderão vir aqui no futuro com perguntas semelhantes.

Cuidado com o ajuste dos tamanhos das colunas, dependendo da localidade. Para começar, ele cria um pesadelo para a manutenção, deixando de lado o fato de as pessoas migrarem e levarem seus nomes com elas.

Por exemplo, os espanhóis com esses sobrenomes extras podem se mudar para um país de língua inglesa e viver com razoabilidade e esperar razoavelmente que seu nome completo seja usado. Os russos têm patronímicos, além de seus sobrenomes, alguns nomes africanos podem ser consideravelmente maiores que a maioria dos nomes europeus.

Continue criando cada coluna o mais amplo possível, levando em consideração a contagem potencial de linhas. Uso 40 caracteres para o primeiro nome, outros nomes e sobrenomes e nunca encontrei nenhum problema.


Obrigado pela resposta, mesmo que tenha sido um tempo.
EndangeredMassa

9

Eu costumo ir com varchar (255) (255 sendo o tamanho máximo de um tipo varchar no MySQL).


30
E você também reserva 255 caracteres de espaço em suas GUIs e outras mídias em que o nome / sobrenome é exibido? ;-)
AndrewBourgeois 12/11

2
Eu costumava pensar: "Por que nem sempre usar varchar (255)?" Agora percebo que as restrições de comprimento são principalmente para a interface do usuário, e as restrições das quais os designers podem depender ao projetar sua interface do usuário; trata-se de usar muito espaço no banco de dados.
Juízes

6

Se é o nome completo em um campo, geralmente eu uso 128 - 64/64 para o primeiro e o último em campos separados - você nunca sabe.


6

@ Ian Nelson: Gostaria de saber se outros vêem o problema lá.

Digamos que você tenha campos divididos. São 70 caracteres no total, 35 para o primeiro nome e 35 para o sobrenome. No entanto, se você tiver um campo, negligenciará o espaço que separa o nome e o sobrenome, alterando rapidamente por 1 caractere. Claro, é "apenas" um personagem, mas isso pode fazer a diferença entre alguém digitando seu nome completo e alguém não. Portanto, eu alteraria essa sugestão para "35 caracteres para cada um dos nomes e sobrenomes ou 71 caracteres para um único campo para conter o nome completo".


2
O ponto de seguir esse documento é para que você seja interoperável com outros sistemas governamentais do Reino Unido, para que você não possa aumentar individualmente os 70 a 71 e chamá-lo por dia, caso contrário, sistemas com um limite de 70 caracteres cortarão seu texto. (Você não deve armazenar os dados nos dois formulários em seu próprio sistema.) Na verdade, fica pior, pois o Nome completo inclui não apenas Família / Dado, mas também Título e Sufixo, que também têm um limite de 35 caracteres cada, por um máximo de 143 caracteres divertidos nos campos anexados. É péssimo ser o desenvolvedor que precisa trocar dados com as duas formas de armazenamento de nomes.
mmitchell

3
Claramente, as orientações foram escritas a partir da expectativa de que um indivíduo possa ter um Nome Completo (até 35 caracteres) ou um Nome de Família longo (até 35 caracteres), mas é improvável que DUAS partes do nome sejam tão longas.
Ian Nelson

3

No Reino Unido, existem alguns padrões governamentais que lidam com sucesso com a maior parte da população do Reino Unido - o Passport Office, a Agência de Licenciamento de Veículos e Motoristas, o escritório da Deed Poll e o NHS. Eles usam padrões diferentes, obviamente.

Alterar seu nome por Deed Poll permite 300 caracteres ;

Não há limite legal para o tamanho do seu nome, mas impomos um limite de 300 caracteres (incluindo espaços) para o seu nome completo.

O NHS usa 70 caracteres para nomes de pacientes

NOME DO PACIENTE
Formato / comprimento: max an70

O Passport Office permite 30 + 30 primeiro / último e a Carta de Condução (DVLA) é 30 no total.

Observe que outras organizações terão suas próprias restrições sobre o que serão exibidas nos documentos que produzem - para o HM Passport Office, o limite é de 30 caracteres cada para seu nome e sobrenome, e para o DVLA, o limite é de 30 caracteres no total para o seu nome completo.



2

O que você realmente está perguntando é uma pergunta relacionada, mas substancialmente diferente: com que frequência desejo truncar nomes para encaixá-los no banco de dados? A resposta depende tanto da frequência de diferentes comprimentos de nomes quanto dos comprimentos máximos escolhidos. Essa preocupação é equilibrada pelas preocupações sobre os recursos usados ​​pelo banco de dados. Considerando a pouca diferença de sobrecarga entre os diferentes comprimentos máximos de um campo varchar, eu geralmente erraria por nunca ser forçada a truncar um nome e tornar o campo tão grande quanto eu ousava.


1

Observe que muitas culturas têm 'sobrenomes' geralmente chamados de nomes de família. Por exemplo, se você estiver lidando com espanhóis, eles apreciarão ter um nome de família separado do sobrenome.

A melhor opção é definir um tipo de dados para os componentes do nome, use-os para um tipo de dados para o sobrenome e ajustar dependendo do local.


Não há vantagem em diminuir os limites em locais com valores estatisticamente menores - o tamanho do campo não afeta o espaço ocupado, a menos que alguns valores ocupem esses caracteres extras permitidos (e isso significa que você fez a escolha certa) !
Tao

0

O primeiro nome médio tem cerca de 6 letras. Isso deixa 43 como sobrenome. :) Parece que você provavelmente poderia reduzi-lo, se quiser.

A questão principal é quantas linhas você acha que terá? Eu não acho que o varchar (50) vai te matar até você conseguir vários milhões de linhas.


6
Se você tiver 50 milhões de valores entre 10 e 15 caracteres em uma coluna varchar (20) e os mesmos 50 milhões de valores em uma coluna varchar (50), eles ocuparão exatamente o mesmo espaço. Esse é o ponto principal do varchar, em oposição ao char.
Tao


0

dependendo de quem usará seu banco de dados, por exemplo, nomes africanos farão com varchar (20) para o sobrenome e o nome separados. no entanto, é diferente de país para país, mas, por uma questão de economia de recursos e memória do banco de dados, separe os campos de sobrenome e nome e use varchar (30) e pense que isso funcionará.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.