Quais argumentos alguém deve considerar ao projetar um novo sistema e deve armazenar o nome de uma pessoa como um campo ou separadamente como nome / sobrenome?
Prós para campo único:
- UI mais simples
- Nenhuma ambiguidade ao tentar digitar o nome de uma pessoa que tem um nome muito longo (geralmente não é evidente qual é o sobrenome / primeiro nome ..)
- Menos complexidade ao lidar com títulos (por exemplo, não é necessário campo separado para inserir "MD" ou "Dr.")
Prós para campo dividido:
- Comunicação personalizada é possível "Prezado Sr. X" ou "Prezada Julie"
- Se um serviço da Web consumido precisar do nome / sobrenome separadamente, ele poderá ser fornecido facilmente.
- Melhor escolha para qualquer setor com requisitos rígidos de identificação (por exemplo, médico, governo etc.)
- Escolha mais segura, pois você sempre pode voltar para a alternativa de campo único
Você vê algum argumento adicional que não está listado acima?
Atualização: a pergunta é: quais argumentos adicionais (= não listados na pergunta) podem ser listados para cada solução. Acho que dar opiniões em vez de possíveis prós e contras direciona a discussão da maneira errada. Cada desenvolvedor deve tomar sua decisão sobre esse problema, o objetivo desta pergunta é montar uma lista de argumentos não triviais que podem ser avaliados, se necessário.
database-design
data
domain-model
data-modeling
Istvan Devai
fonte
fonte
Respostas:
Nome e sobrenome não são conceitos úteis. Os nomes funcionam de maneira diferente em diferentes países. Na maioria dos países asiáticos, o nome da família é escrito primeiro, mas ainda é usado para classificação - portanto, você pode colocá-lo em primeiro nome e a classificação estará incorreta ou em sobrenome e a exibição será. E existem países como a Islândia, onde eles não usam nomes de família, mas o nome do pai. Então eles simplesmente classificam pelo nome.
Os termos “nome próprio” e “sobrenome” (ou “sobrenome”) são melhores nesse aspecto, mas eu ainda os evitaria a menos que seja absolutamente necessário (ou seja, documentos oficiais como passaportes os possuem, então você precisa deles), porque eles apenas tornam as coisas mais complicadas.
Exceto que você não tem idéia se deve ligar para determinada pessoa pelo nome ou sobrenome ou o quê. E não me inicie nas línguas acusativas - você não pode derivar acusações de nominativas em geral. Não, é melhor se você simplesmente perguntar ao usuário como chamá-lo.
Se . Se você depende de outro serviço, está bloqueado para as más escolhas. Não é uma vantagem para seus próprios projetos.
Não, é uma escolha errada para eles. Os documentos oficiais geralmente usam os termos “nome próprio” e “sobrenome” (ou “sobrenome”), que são menos ambíguos.
Na verdade, devido à ambiguidade dos nomes asiáticos, não é tão claro que você pode.
fonte
O único argumento que importa é quais são os requisitos do seu sistema?
Você precisa lidar com apenas uma cultura? Se assim for, em conformidade com essa cultura. Caso contrário, planeje a internacionalização (como outros já apontaram).
Você precisa obter dados para lidar com formulários governamentais, assistência médica ou outros requisitos legais / do sistema? Siga o que quer que ditem. Se isso significa nome e sobrenome, faça-o. Se isso significa algo diferente, faça isso.
Você tem um requisito para uma API com nome e sobrenome (ou é razoavelmente provável, suficiente para justificar a ignorância do YAGNI)? Faça o que faz sentido lá.
Se você precisar de comunicações personalizadas, é razoável perguntar a alguém seu nome preferido e armazená-lo?
Os requisitos do seu sistema devem determinar o que você faz. Faça o que você precisa e YAGNI o resto.
fonte
Se você tiver mais de uma maneira de exibir e / ou utilizar o (s) nome (s), provavelmente precisará de campos separados. Junto com a entrada de dados, você pode fornecer feedback para mostrar ao usuário como ele será utilizado. Como você os combina, pode levar à conversão em um único campo no futuro.
Tem algumas etiquetas que mostram: Saudação ou Nome para exibição: Nome + Sobrenome Organização / Classificação: Sobrenome, Nome
Quando não tiver certeza de como isso será usado no futuro, comece com nomes divididos e, em seguida, você poderá combiná-los em um único campo quando perceber que é tudo o que realmente precisa. Não é difícil escrever um algoritmo para dividir um único campo de nome em nome e sobrenome, mas você cometerá alguns erros e as pessoas realmente não gostam de erros com seus nomes. Com campos divididos, os usuários podem ajustar a forma como inserem seu nome quando veem como ele é usado. Combiná-los em um campo permanente de nome único é menos arriscado.
fonte
Eu concordo com muito do que o @JanHudec disse, embora eu gostaria de expandir um pouco isso:
A terminologia é importante
Termos como determinado nome e sobrenome ou nome de família têm significado semântico, e seu banco de dados deve sempre refletir a semântica de seus dados. Termos como nome e sobrenome têm significado posicional, geralmente com base nas idéias inglesas e americanas de como os nomes funcionam. Use a terminologia apropriada para a semântica dos seus dados.
Quão longe você precisa quebrá-lo?
Existem conceitos de título (Sr. Dra. Sra. Etc.) ou ordinal (Jr., Sr., III, etc.) e até certificações (PhD, MS, PCAM, etc.) que podem ser importantes dependendo do contexto e propósito.
Muitas localidades têm o conceito de vários nomes de família (paternos e maternos), e algumas não. Ao preencher formulários, às vezes as pessoas precisam fazer escolhas difíceis sobre qual nome usar, por exemplo, usando o nome de família paterno para o "sobrenome" em um formulário americano ou inventando um sobrenome com base no nome do pai (Janson )
Enquanto na América é comum ter um ou mais nomes do meio, geralmente é ignorado fora da sua família.
Classificação
Ajuda a ter um campo dedicado para o nome da classificação. Dessa forma, você pode desambiguar as regras ao criar o registro. Também garante que os nomes sejam classificados na ordem correta através dos limites internacionais.
Práticas Comuns
Seus requisitos reais determinam o quão correto você precisa ser sobre nomes. Se você estiver criando um site governamental ou bancário, terá mais requisitos para armazenar e manipular nomes do que algo informal como o Facebook.
Diretrizes informais
Diretrizes Semi-Formais
Diretrizes formais
fonte
Além do que o @JanHudec apontou e com o qual eu concordo, também vale a pena notar que em muitos países as pessoas têm mais de um sobrenome, portanto, um único campo de sobrenome pode ser irrelevante. Por exemplo, na Espanha, as pessoas têm dois sobrenomes e usam apenas um ou ambos, dependendo da situação.
Além disso, você não deve personalizar as comunicações com base em suas suposições, pois em algumas culturas você pode parecer rude ao chamar as pessoas pelo sobrenome e, no caso de outras, pode ser o contrário.
Além disso, algumas culturas enfatizam formas como 'Sra' vs 'Sra' e também podem combinar essa palavra com nomes ou sobrenomes, dependendo de um caso específico.
Então, eu me inclinaria para uma solução em que você tenha um campo de nome único e talvez campos adicionais que o usuário preencha para sugerir como procurar o usuário - algo semelhante ao que muitas companhias aéreas fazem quando você compra um bilhete online. Isso também pode resolver o problema de como dividir os nomes, se você precisar dele para um serviço da web externo que você mencionou.
fonte
Para adicionar ainda mais o que @JanHudec e @KjMag apontaram, mesmo em culturas / idiomas muito próximos ao inglês, isso se torna um problema. Veja o alemão, por exemplo. Você tem o conceito de Vornamen, Nomes, Nachnamen, Sobrenomes e Rufname, o nome que você chama. Pegue meu pai, por exemplo, ele tem três nomes, na certidão de nascimento estão listados na ordem Christoph Stephan Andreas. E ele tem um sobrenome. Como você acha que o nome dele é chamado?
A resposta correta: Andreas. Esse é o seu nome Ruf, na América ele o coloca como seu primeiro nome para se encaixar no modelo americano. Então, você pode supor que na Alemanha o sobrenome é o nome que você chama, mas então você tem meu irmão: Christoph Sebastian Herbert Maria. (Agora eu doei que somos bávaros) Ou minha irmã Christine Gabriele. Na sua opinião, quais são os nomes que eles chamam? Sebastian e Christine, respectivamente.
Gostaria de terceirizar as respostas que dizem um campo para um nome completo. E eu acrescentaria a isso: talvez adicione outro campo para um sobrenome / nome de família e faça a pergunta: por qual nome você seria classificado em uma lista? E então um campo final para: como você deseja ser abordado?
fonte
Se alguém está indo para um aplicativo global, provavelmente modelaria o nome de uma pessoa como uma matriz de seqüências de caracteres. Por exemplo, considere o nome do presidente no filme Idiocracia:
Esse é o nome completo dele. O nome contém 6 elementos na matriz. Para a cultura dos EUA, o primeiro nome é o primeiro elemento da matriz (Dwayne) e o sobrenome é o último elemento da matriz (Camacho). Mas isso nem sempre é o caso.
Pode-se aplicar regras específicas de cultura para determinar o nome "primeiro" se o primeiro nome é realmente o último elemento e assim por diante, dependendo de como os nomes funcionam em diferentes culturas / localidades.
Além disso, no caso dos EUA, temos casos em que o último elemento não é o sobrenome, como:
Portanto, talvez um campo de sufixo de nome ou alguém precise analisar o último elemento procurando sufixos conhecidos com base na cultura para obter o sobrenome correto.
Portanto, é sempre melhor armazenar o nome em um elemento (O nome completo) e depois aplicar uma rotina de "padronização / saneamento" para analisar os elementos específicos conforme necessário. Uma estratégia semelhante existe para endereços. Eles geralmente são coletados como uma sequência e depois enviados para um serviço para analisar as peças.
fonte