Como modelar mais de um 'sobrenome'?

11

Nos países de língua espanhola, usamos mais de um sobrenome, como:

Nome ↘ ↙ Sobrenome
                Pedro Arturo Rodríguez Loyola
        Nome do meio ↗ ↖ (?)

Estou tentando modelar dados para o nome do paciente. Em nosso país, é importante, portanto não posso negligenciar o segundo sobrenome, mas gostaria de criar um aplicativo que faça sentido para outros desenvolvedores, especialmente de países de língua inglesa.


Eu criei uma pergunta semelhante no English.SE , ele tem algumas idéias sobre por que é importante manter os dois valores.

Pablo Olmos de Aguilera C.
fonte
15
Existe a menor razão pela qual um valor de "sobrenome" não deve conter espaços? Deseja realmente usar um sobrenome em alguns casos de uso e todos os sobrenomes em outros? Caso contrário, não vejo o problema. Deixe o "sobrenome" exatamente como o usuário digitou e você é bom.
precisa
3
em holandês, o nome do tipo "van de Iets" é bastante comum. basta deixar o último campo de nome conter espaços
aberração catraca
2
Existe uma razão para você não poder apenas ter um único namecampo?
asfallows
2
@asfallows: porque, se imprimirmos uma lista de pacientes, precisamos classificá-las pelo sobrenome. Por exemplo, se seu nome é "José Carlos Fernando Almodóvar Soto", como devo saber com antecedência que "Almodóvar" é o primeiro sobrenome?
Pablo Olmos de Aguilera C.
2
@FedericoPoloni: Qualquer pessoa que procure um paciente pelo sobrenome provavelmente sabe o sobrenome do paciente.
Mooing Duck

Respostas:

19

P: Como um DBA conta?

A: 0, 1, muitos

Um indivíduo tem 1 ou mais nomes próprios e 1 ou mais nomes de família e, possivelmente, um título. Esses nomes têm uma ordem para eles. Cabe à localização e à cultura determinar como se referir a um indivíduo.

ContactId
NamePart {"John", "Smith", ...}
NameType {título, nome, família, ???}
Encomenda {1, 2, 3, ...}

Para Pedro Arturo Rodríguez Loyola(contato nº 1), você teria quatro linhas:

1 / Pedro / dado / 1
1 / Arturo / dado / 2
1 / Rodríguez / família / 3
1 / Loyola / família / 4

Dessa forma, não se limita a nenhuma estrutura, mas ainda faz sentido para um determinado contato lá. O que você faz quando tem alguém com 3 ou 4 nomes ou sobrenomes? ou um nome de solteira?

Observe que mudei a ordem de uma revisão anterior desta resposta - a ordem é uma ordem sobre o nome inteiro e não apenas uma ordem dentro do tipo de nome, porque em algumas culturas, o nome da família vem primeiro, você pode ter dividido partes do título "Sir John Smith II".

Leitura Adicional

Dave Jarvis
fonte
2
+1 Mas esse programador trabalhou com muitos membros da equipe offshore, mas o nome mais longo que já vi ainda é "Pablo Diego José Francisco de Paula Juan Nepomuceno Maria dos Remédios Crispinianos da Santíssima Trindade Ruiz e Picasso". Abuso infantil ou não?
Elliott Frisch
O @Darkhogg utnapistim o tem como o primeiro link 'Este' em sua resposta. É um daqueles 'guias definitivos'.
Gosto da ideia como conceito, mas não é um pouco difícil apresentá-la ao usuário que ele escreverá o nome real? A única coisa que posso encontrar é algo como os campos de contato "GMail", que permitem "adicionar" partes do nome. Você já pensou em como realmente pode usar esse tipo de modelo de dados?
Pablo Olmos de Aguilera C.
1
@ Peter muitas vezes em aplicações médicas (a pergunta original menciona 'paciente'), você precisa passar um nome estruturado para integração com outros sistemas. Ter dados não estruturados significa que você terá uma dificuldade significativa na integração com outros sistemas, inclusive em transferir um paciente de um hospital para outro ou preencher campos de formulário para reivindicações de seguro. E, portanto, o problema de como estruturar os dados de uma maneira que permita manipulá-los de todas as formas necessárias.
1
@Ben um campo de texto livre não funciona bem quando o aplicativo solicita a classificação por nome de família ou ao tentar fazer interface com um sistema EDI antigo para transferir um paciente de uma ambulância para o hospital (ou vice-versa) ou preencher o campos apropriados em vários formulários de solicitação de seguro. Todas essas são áreas-chave nas quais é mais fácil ter um pouco de dados que designa cada parte do nome do que tentar atribuir o significado após o fato. Um campo de texto livre é bom, mas às vezes simplesmente não é uma opção para trabalhar com outros sistemas.
10

Isso pode ajudar. O post é bem-humorado, mas perspicaz.

[Nome] [Sobrenome] não é uma regra universal para nomes. É comum onde você mora. Se você impuser regras, mais cedo ou mais tarde você terá pessoas que não poderão ser adicionadas ao seu sistema.

Basicamente, imponha o mínimo de restrições possível e permita flexibilidade entre o nome armazenado real e quaisquer outros extras.

Eu iria com algo assim:

  • Nome de exibição (para nomes consistentes ao exibir formulários / dados): (deve ser [primeiro] [último]).
  • Outros nomes / nome completo (para pesquisa, correspondência mais precisa, etc.). Aqui, permita ao usuário escrever qualquer coisa, até um determinado comprimento; o comprimento deve ser maior do que você acha que deveria ser suficiente - por exemplo, se você acha que 40 caracteres devem ser suficientes, coloque 500 :)).
  • Endereçamento (Mr, Mrs, Ms, Jr, Sr, -san, valor personalizado (como Tov.) Etc).
  • ID interno (esse ID deve identificar exclusivamente todas as pessoas em seu aplicativo, evitando colisões de nomes).

Por exemplo, meu nome não é gravável corretamente na maioria dos idiomas europeus, devido a sinais diacríticos específicos para o romeno (portanto, sempre que escrevo meu nome fora do meu país de origem, tecnicamente o escrevo incorretamente - para que as pessoas possam ler e pronunciar).

Alguns exemplos e links interessantes de nomes:

http://en.wikipedia.org/wiki/Nicholas_Barbon

http://en.wikipedia.org/wiki/Prince_%28musician%29

http://en.wikipedia.org/wiki/P_diddy

http://en.wikipedia.org/wiki/Burmese_name

utnapistim
fonte
Mais uma coisa a considerar é a classificação. Muitas vezes, é desejável poder classificar uma lista de pessoas pelo sobrenome (ou apenas pelo nome, ou pela primeira palavra no sobrenome, etc.). Se o aplicativo precisar fazer isso, precisamos de uma maneira de identificar seu "nome de classificação".
BenM 26/03/14
Mas eu gosto dessa idéia em geral. Em vez de representar nomes com base em premissas culturais, nós os representamos com base nas funções que eles precisam executar no sistema.
BenM 26/03
Eu gosto da sua resposta. Não entendo como isso pode me ajudar a colocar nomes. Eu preciso classificá-los, por exemplo, normalmente usamos sobrenome. Como colocá-los em um campo / coluna chamado "outros nomes" ou "nome para exibição" poderia me ajudar com isso, por exemplo? Parabéns pelo nome birmanês, no entanto. Impressionante.
Pablo Olmos de Aguilera C.
@ pablox, meu argumento foi que, conceitualmente, você não deve tratar o nome de uma pessoa como uma identidade, mas como metadados para a identidade (e o id deve ser um código único). Você pode considerar esses metadados como organizados, de acordo com as necessidades do seu aplicativo. Por exemplo, você pode escolher a função de "nome da classificação" para o segundo nome (se houver) em "o grupo de tokens de nome", a função de "nome para exibição" como o primeiro token e a função de "nome de endereçamento" como "Dr. | Sr. | Sra. | etc" + "nome para exibição".
26414 utnapistim
A classificação dos nomes geralmente será "classificação da lista telefônica", onde você ignora vários anexos ao nome e classifica a parte importante. Por exemplo, "van de Bogart" seria classificado em "Bogart", não em "van". Como um nome hispânico multipart é tratado vai ser culturalmente dependentes - onde está sendo usado e como seus acessos de uso no.
Phil Perry
0

Não é uma coisa complicada ..... ou estou perdendo alguma coisa.

Tenha estes campos: name(varchar), lastname(varchar).

Em seguida, um formulário para preencher o nome completo, exemplo: Jorge Patricioe o sobrenome Pèrez Gonzáles.

Na pesquisa, você tem muitos operadores de comparação, por exemplo no MySQL, como os likeque o ajudarão a procurar.

Principalmente os sobrenomes compostos estão sempre em ordem. Pérez Gonzálezprincipalmente diz seu sobrenome dessa maneira, e não em ordem inversa.

Você estará projetando demais o seu banco de dados de outra maneira.

JorgeeFG
fonte
1
E se o nome da família for indicado primeiro? link
1
@MichaelT, e quanto a isso? Exploda o campo e procure na tabela de nome e sobrenome qualquer ocorrência do valor. Sempre supondo que você tem um Google-like campo de pesquisa, otherway você poderia apenas ter uma forma como "Name:" e "Last Name:"
JorgeeFG
0

Existem três tipos de nomes pessoais: Polinmos (nomes com vários componentes), Monônimos (nomes com apenas um componente, ex "Cher") e Pictônimos (nomes representados por fotos, ex O Artista ).

Uma pessoa pode ter vários nomes, desempenhando papéis , por exemplo, Nome Legal e Nome Preferido.

Um polynym possui vários componentes, dos quais o nome e o sobrenome devem ser necessários. Existem alguns tipos de sobrenomes:

  1. Sobrenomes regulares (Jones)
  2. Sobrenomes de cano duplo ("Vaughn Williams" ou "Louis-Dreyfus")
  3. Sobrenomes compostos verdadeiros {nameName: "Juan Pablo" sobrenome: "Fernández de Calderón", secundário Sobrenome: "García-Iglesias"}

3 é importante porque se espera que ele seja chamado de Sr. Fernández de Calderón , não Sr. Fernández de Calderón García-Iglesias.

Então, basicamente, tenha um campo de sobrenome obrigatório e um campo de sobrenome secundário anulável.

user118920
fonte
0

Como você modela os vários componentes do nome de alguém? Você não . Em vez de modelar campos separados para todos os componentes do nome legal de alguém, além da saudação, apelação, nome informal, nome de usuário, apelido e manuseio preferidos, modele apenas o que lhe interessa.

As probabilidades são de que seu sistema realmente se preocupa com no máximo quatro "nomes" para alguém:

  1. Um Nome de exibição que permite que eles saibam que estão conectados ao sistema.
  2. Um nome informal pelo qual você os abordaria em uma chamada telefônica.
  3. Um nome formal com o qual você se referiria a eles por correspondência.
  4. Um nome de classificação que expressa o número 2 de uma maneira que seria ordenada em uma lista.

Muitos sistemas simplesmente usariam o nome formal de alguém para os nºs 1 e 2, deixando os únicos nomes de que você gosta como "uma sequência que representa o nome do usuário" e "uma sequência que representa como a primeira deve ser classificada".

Da perspectiva da modelagem de dados, defina apenas os valores que você realmente precisa. A melhor forma de otimizar o armazenamento desses valores é um detalhe de implementação - que você só causará dores de cabeça se otimizar demais. (Claro, você "poderia" apenas armazenar um nome e sobrenome, mas o que você faria por alguém que tenha apenas um único nome?)

DougM
fonte
-1

Vamos considerar isso de outra maneira.

Seu sistema precisa se conectar a outros sistemas, não importa o quão flexível você seja, se eles não o forem. Então, o que os sistemas com os quais você tem que transferir dados fazem?

Quando ligo para o meu médico para uma consulta, eles me pedem minha data de nascimento, os sistemas mostram uma lista de pessoas correspondentes, depois me pedem meu nome e, por fim, pedem meu endereço para confirmar que selecionaram a pessoa correta.

O médico precisa saber o nome do meu endereço ao falar comigo; eles também precisam saber o nome para escrever uma carta se escreverem para mim.

Portanto, não apenas um único campo de texto que permite espaços. Não há motivo para separar o primeiro do sobrenome, a menos que você os processe da mesma maneira.

Ian
fonte
3
Você está preenchendo um formulário em uma reivindicação de seguro. Tem "Sobrenome". A pessoa é do Japão. Enquanto você tiver a versão transliterada, precisará colocar o nome de família adequado no campo. Qual palavra é essa?
@ MichaelT, o que dizer que todo mundo tem um nome de família?
26414 Ian Ian
2
Obtendo um nome de uma pessoa do Japão (ou de muitos outros países de nomes do leste), o nome de família é atribuído primeiro. É assim que é endereçado. No entanto, ao preencher um formulário médico, pode ser necessário que o nome de família e o nome de usuário estejam em diferentes fields - como você escolhe um campo e corresponde ao campo apropriado? O outro exemplo é se você estiver classificando o nome da família e receber "José Carlos Fernando Almodóvar Soto", que você precisará classificar em Almodóvarvez de Fernando.
@ MichaelT, portanto, é necessário processar o Nome da Família separadamente, portanto, forneça seu próprio campo e espere que a pessoa que digita os detalhes entenda a denominação oriental.
26414 Ian Ian