Modelado de nombre y apellido por separado

32

¿Qué argumentos debería considerar alguien al diseñar un nuevo sistema y tiene que almacenar el nombre de una persona como un campo o por separado como nombre / apellido?

Ventajas para un solo campo:

  • IU más simple
  • No hay ambigüedad al intentar ingresar el nombre de una persona que tiene un nombre muy largo (a menudo no es evidente cuál es el apellido / nombre ..)
  • Menos complejidad al manejar títulos (por ejemplo, no es necesario un campo separado para ingresar "MD" o "Dr.")

Ventajas para el campo dividido:

  • Es posible una comunicación personalizada "Estimado Sr. X" o "Estimado Julie"
  • Si un servicio web consumido necesita el nombre / apellido por separado, se puede proporcionar fácilmente.
  • Mejor opción para cualquier industria con requisitos estrictos de identificación (por ejemplo, médicos, gubernamentales, etc.)
  • Opción más segura, ya que siempre puede volver a la alternativa de campo único

¿Ves algún argumento adicional que no esté en la lista anterior?

Actualización: la pregunta es qué argumentos adicionales (= no enumerados en la pregunta) se pueden enumerar para cada solución. Creo que dar opiniones en lugar de posibles pros y contras conduce la discusión de la manera incorrecta. Cada desarrollador tiene que tomar su decisión sobre este problema, el objetivo de esta pregunta es reunir una lista de argumentos no triviales que se puedan evaluar si es necesario.

Istvan Devai
fuente
11
¿Qué intentas hacer con esos nombres? ¿Tienes requisitos legales? ¿Hay alguna otra consecuencia que no sea mostrar para el nombre del usuario?
Darkhogg
9
La discreción de nombre / apellido no es compatible con personas con un solo nombre como "Cher".
JacquesB
77
Te aconsejo que leas el siguiente artículo: kalzumeus.com/2010/06/17/… es una verdadera revelación cuando piensas en nombres.
Pieter B
10
Puede considerar hacer esta pregunta en Experiencia de usuario , la comunidad allí podría ofrecer una perspectiva diferente sobre este problema de interfaz de usuario esencialmente.
11684
9
@PieterB Algunos de los puntos en ese artículo son cuestionables y a veces hay que hacer suposiciones para hacer las cosas. Ese artículo no proporciona consejos útiles sobre cómo manejar los nombres. Si un nombre contiene caracteres no unicode, ¿qué debe hacer para permitir que el usuario cargue una imagen? ¿Qué sucede si hay aspectos no visuales: permitir un video con sonido? ¿Qué pasa si un nombre es performance y solo se puede realizar a medianoche en Hong Kong? En algún momento, debe ser real y resolver problemas en lugar de deleitarse con casos teóricos que su base de usuarios nunca encontrará.
Restablece a Mónica el

Respuestas:

50

Nombre y apellido no son conceptos útiles. Los nombres funcionan de manera diferente en diferentes países. En la mayoría de los países asiáticos, el apellido se escribe primero, pero todavía se usa para ordenar, por lo que puede ponerlo en el nombre, y la ordenación será incorrecta, o en apellido, y se mostrará. Y luego hay países como Islandia donde no usan nombres de familia, sino el nombre de pila del padre. Entonces simplemente clasifican por nombre de pila.

Los términos "nombre de pila" y "apellido" (o "apellido") son mejores a este respecto, pero aún así los evitaría a menos que sea absolutamente necesario (es decir, los documentos oficiales como los pasaportes los tienen, entonces los necesita), porque solo hacen las cosas más complicadas.

  • Es posible una comunicación personalizada "Estimado Sr. X" o "Estimado Julie"

Excepto que no tienes idea si llamar a la persona dada por su nombre, apellido o qué. Y no me hagas empezar con los idiomas que tienen acusativo: no puedes derivar acusativo de nominativo en general. No, es mejor si simplemente le preguntas al usuario cómo llamarlos.

  • Si un servicio web consumido necesita el nombre / apellido por separado, se puede proporcionar fácilmente.

Si . Si depende de otro servicio, está bloqueado por sus malas elecciones. No es una ventaja para sus propios diseños.

  • Mejor opción para cualquier industria con requisitos estrictos de identificación (por ejemplo, médicos, gubernamentales, etc.)

No, es una elección incorrecta para estos. Los documentos oficiales generalmente usan los términos "nombre de pila" y "apellido" (o "apellido"), que son menos ambiguos.

  • Opción más segura, ya que siempre puede volver a la alternativa de campo único

En realidad, debido a la ambigüedad con los nombres asiáticos, no está tan claro que puedas.

Jan Hudec
fuente
2
Si la aplicación se usa en diferentes partes del mundo, las etiquetas de campo deberían localizarse junto con la forma en que se combinan / usan.
JeffO
55
@JeffO, el problema real es que en estos días es probable que tengas personas de diferentes países en el mismo sistema, por lo que debes crear un sistema y encontrar una forma de insertar nombres de diferentes culturas en él para que funcione de manera razonablemente consistente . No ingrese a esa madriguera de conejo a menos que realmente la necesite.
Jan Hudec
44
@IstvanDevai hubo un caso legal en California donde un contrato fue declarado nulo porque las leyes de crédito requerían "apellido". La persona tenía un apellido hispano dual, pero cuando se le preguntó su apellido, se le dio el primer apellido (paterno), que es común. La otra parte perdió su caso de cobro porque el nombre en el contrato no era su "apellido", es decir, el que estaba al final de su nombre completo. Un ejemplo de cómo first / last invita a la confusión, y no es completamente sinónimo de nombres de pila / apellidos.
66
@Casey: los segundos nombres deben incluirse en el campo de nombres de pila, porque eso es lo que son: nombres de pila secundarios. Si tuviera un dólar por cada vez que he visto a una persona hispana que no tiene segundo nombre, pero un apellido doble recibe su primer apellido (y el más importante) en un campo de segundo nombre, ya estaría retirado. Si desea saber cómo llamar a una persona, tenga un campo para eso, separado del nombre. Entonces Bartholomew Frank Edward Smith Wellington puede decirte que los llames Bart. Podemos hablar inglés, pero aquí hay personas de lugares que no hablan inglés, y sus nombres también se ingresan.
44
-1. Si bien la respuesta en sí no es totalmente incorrecta, no tiene mucho sentido para la pregunta en cuestión. El OP busca más argumentos para usar uno o dos campos para nombres humanos. Si se llama "primero / último" o "dado / sur" no es el foco, son solo las etiquetas que el OP tenía en mente. Todos los demás puntos me parecen muy obstinados, y en mi experiencia personal con la creación e implementación de aplicaciones para grandes clientes, los supuestos del OP son completamente normales y simplemente suceden de esa manera. Esta respuesta solo intenta alejar los parámetros de la pregunta.
AnoE
31

El único argumento que importa es cuáles son los requisitos de su sistema.

¿Necesitas lidiar con una sola cultura? Si es así, conforme a esa cultura. De lo contrario, planifique la internacionalización (como otros han señalado).

¿Necesita obtener datos para lidiar con formularios gubernamentales, atención médica u otros requisitos legales / del sistema? Sigue lo que dicten. Si eso significa nombre y apellido, hazlo. Si significa algo diferente, hazlo.

¿Tiene un requisito para una API con nombre y apellido (o es razonablemente probable, suficiente para justificar ignorar YAGNI)? Haz lo que tenga sentido allí.

Si necesita comunicaciones personalizadas, ¿es razonable preguntarle a alguien su nombre preferido y guardarlo?

Los requisitos de su sistema deben determinar lo que hace. Haz lo que tengas que hacer y YAGNI el resto.

Becuzz
fuente
77
Ya no existe tal cosa como "una cultura". Incluso las comunidades más pequeñas tienen normas culturales e idiomas mixtos.
BobDalgleish
77
@BobDalgleish True, pero a veces no importa. A veces, el costo de apoyar múltiples culturas hace que los empresarios simplemente digan que no.
Becuzz
9
@BobDalgleish Presumiblemente, ¿cuál es la cultura dominante en el mercado para el que se está desarrollando la aplicación? No creo que esto sea realmente tan misterioso o raro.
Casey
3
@BobDalgleish - "cultura" es irrelevante. Nadie le pregunta acerca de su cultura cuando se le emiten documentos. Si tuviera que apoyar solo a Serbia (donde estoy en este momento) incluiría el nombre y el apellido tal como están definidos en cada documento emitido en este país, y eso es todo. No importa cuál sea tu cultura. Su pasaporte, licencia de conducir, etc. tendrá nombre y apellido, punto.
Davor Ždralo
2
@icirellik ¿Incorrecto en qué sentido? ¿Están mal esas cosas (límites de longitud, etc.) si estás tratando de modelar perfectamente el universo? Ciertamente. Pero nunca me han pedido que modele perfectamente el universo y de todas las formas posibles en que alguien quiera elegir un nombre. ¿Tengo en cuenta los nombres klingon? No. ¿Pero por qué no? Alguien podría hacer eso algún día (sinceramente, no me sorprendería si alguien hiciera eso ahora). Pero llega un momento en el que sabes que habrá algunas cosas que simplemente no funcionarán con tu modelo. Y el tiempo de desarrollo adicional para manejar todas las posibilidades simplemente no vale la pena. (cont ...)
Becuzz
5

Si tiene más de una forma de mostrar y / o utilizar los nombres, entonces probablemente necesitará campos separados. Junto con la entrada de datos, puede proporcionar comentarios para mostrar al usuario cómo se utilizará. La forma de combinarlos podría llevar a la conversión a un solo campo en el futuro.

Tenga algunas etiquetas que muestren: Saludo o Nombre para mostrar: Nombre + Apellido Organización / Clasificación: Apellido, Nombre

Cuando no esté seguro de cómo se usará esto en el futuro, comience con nombres divididos y luego puede combinarlos en un solo campo cuando se dé cuenta de que eso es todo lo que realmente necesita. No es que sea difícil escribir un algoritmo para dividir un solo campo de nombre en nombre y apellido, pero cometerá un error en algunos y a la gente realmente no le gustan los errores con sus nombres. Con los campos divididos, los usuarios pueden ajustar cómo ingresan su nombre cuando ven cómo se usa. Combinarlos en un campo de nombre único permanente es menos arriesgado.

JeffO
fuente
5

Estoy de acuerdo con mucho de lo que dijo @JanHudec, aunque me gustaría ampliarlo un poco:

  • Necesita saber cuáles son sus requisitos reales, pero es más fácil combinar información que dividirla una vez que se vuelve a combinar.
  • La clasificación siempre será un desafío, ya que las reglas pueden diferir entre las localidades y culturas.
  • Muchas culturas no coinciden con las suyas, lo que lleva a malas suposiciones. (Este es el mayor punto de Jan)

La terminología es importante

Los términos como nombre de pila y apellido o apellido tienen un significado semántico, y su base de datos siempre debe reflejar la semántica de sus datos. Términos como nombre y apellido tienen un significado posicional, generalmente basado en ideas inglesas y estadounidenses de cómo funcionan los nombres. Use la terminología adecuada para la semántica de sus datos.

¿Qué tan lejos necesitas desglosarlo?

Hay conceptos de título (Sr. Dr. Sra. Etc.) u ordinales (Jr., Sr., III, etc.), e incluso certificaciones (PhD, MS, PCAM, etc.) que pueden ser importantes dependiendo del contexto y propósito.

Muchos locales tienen el concepto de múltiples apellidos (paterno y materno), y algunos no tienen ninguno. Al completar los formularios, a veces las personas tienen que tomar decisiones difíciles sobre qué nombre usar, por ejemplo, usar el apellido paterno para el "apellido" en un formulario estadounidense, o encontrar un apellido basado en el nombre del padre (Janson )

Si bien en Estados Unidos es común tener uno o más segundos nombres, a menudo se ignora fuera de su familia.

Clasificación

Ayuda a tener un campo dedicado para el nombre de clasificación. De esa manera puede desambiguar las reglas cuando cree el registro. También asegura que tenga los nombres ordenados en el orden correcto a través de las fronteras internacionales.

Practicas Comunes

Sus requisitos reales dictan qué tan correcto debe ser sobre los nombres. Si está creando un sitio web gubernamental o bancario, entonces tiene más requisitos para almacenar y manejar nombres que algo informal como Facebook.

Pautas informales

  • Tener un campo que describa cómo quiere ser conocido el usuario
  • Ordenar y mostrar utiliza ese nombre

Pautas semi formales

  • Tener un campo para un apodo o cómo quiere que se dirija el usuario
  • Tiene dos campos, uno para el nombre de pila y otro para el apellido (el apellido debe ser opcional)
  • Calcule un campo de clasificación basado en la configuración regional y el combo dado / apellido
  • Use el apodo cuando se dirija directamente al usuario
  • Use el nombre formal al enumerar personas

Pautas formales

  • Estos están dictados por las políticas y procedimientos existentes para la entidad que está apoyando.
  • Necesita tantos campos como la cantidad máxima de partes de nombre que admitirá, nombradas semánticamente por lo que son.
  • Incluya un campo de clasificación que maneje la clasificación como lo haría en el caso semiformal
  • La visualización también suele estar dictada por las políticas y procedimientos existentes. Necesitas familiarizarte con ellos.
Berin Loritsch
fuente
¿Al votante le gustaría elaborar? Tal vez me perdí algo?
Berin Loritsch
Esto me parece completo y el consejo más pragmático dado aquí.
Jesse Clark el
4

Además de lo que @JanHudec ha señalado y con lo que estoy de acuerdo, también vale la pena señalar que en muchos países las personas tienen más de un apellido, por lo que el campo de apellido único podría ser irrelevante. Por ejemplo, en España las personas tienen dos apellidos, y usan solo uno o ambos según la situación.

Además, no debe personalizar las comunicaciones en función de sus suposiciones, ya que en algunas culturas puede parecer grosero al llamar a las personas por sus apellidos y, en el caso de otras, podría ser lo contrario.

Además, algunas culturas ponen énfasis en formas como 'Sra.' Vs 'Ms', y también pueden combinar esta palabra con nombres o apellidos dependiendo de un caso particular.

Por lo tanto, me inclinaría hacia una solución en la que tenga un solo campo de nombre y tal vez campos adicionales que el usuario complete que sugiera cómo recurrir al usuario, algo similar a lo que hacen muchas aerolíneas cuando compra un boleto en línea. Esto también puede resolver el problema de cómo dividir los nombres si lo necesita para un servicio web externo que ha mencionado.

KjMag
fuente
1
Presumiblemente, si realmente está localizando, puede usar una plantilla diferente para diferentes idiomas
Casey
4

Para agregar aún más a lo que @JanHudec y @KjMag han señalado, incluso en culturas / idiomas muy cercanos al inglés, esto se convierte en un problema. Tome alemán por ejemplo. Tiene el concepto de Vornamen, Nombres, Nachnamen, Apellidos y Rufname, el nombre que le llaman. Tomemos a mi padre, por ejemplo, tiene 3 nombres de pila, en su certificado de nacimiento figuran en el orden Christoph Stephan Andreas. Y tiene un apellido. ¿Cómo crees que se llama el nombre?

La respuesta correcta: Andreas. Ese es su nombre Ruf, en Estados Unidos lo pone como su primer nombre para adaptarse a la plantilla estadounidense. Entonces puede suponer en Alemania que el último de sus nombres es el nombre que le llaman, pero luego tiene a mi hermano: Christoph Sebastian Herbert Maria. (Ahora he regalado que somos bávaros) O mi hermana Christine Gabriele. ¿Cuáles crees que son los nombres que se llaman? Sebastian y Christine respectivamente.

Tercero, las respuestas que dicen un campo para un nombre completo. Y agregaría a eso: tal vez agregue otro campo para un apellido / apellido y plantee la pregunta: ¿por qué nombre se ordenaría en una lista? Y luego un campo final para: ¿cómo quieres que te aborden?

Ahorcado4358
fuente
1
"Apellido" es solo otro nombre para "apellido", no literalmente la palabra que aparece en último lugar. El apellido de Nakayama Taro es "Nakayama".
Casey
2
Para agregar otro caso: Mi abuelo se llamaba "Antoon Leendert van Ingen Schenau" => nombre (s) dado (s): "Antoon Leendert"; llamado: "Leen"; apellido: "van Ingen Schenau" se clasificará en "Ingen". Ni el nombre de llamada ni la clasificación correcta se pueden derivar fácilmente de una entrada de nombre / apellido.
Bart van Ingen Schenau
1
@Casey según quien? en Japón es "nombre superior", por ejemplo, no "apellido".
EIS
1
@eis En Japón es 名字. Pero aquí, en el mundo de habla inglesa, "apellido" es sinónimo de "apellido" y no literalmente "la última palabra en la secuencia de nombres de alguien".
Casey
1
@eis No estoy seguro de qué punto quieres hacer. Los usuarios no sabrán la diferencia si llama al campo de la base de datos apellido_en lugar de apellido; uno es solo un sinónimo del otro. Si su preocupación es presentar el software a personas que no hablan inglés, entonces es irrelevante porque "apellido" y "apellido" son términos en inglés y debe usar el término en el idioma en el que quiera localizar la página. Si la preocupación es que desea que las personas que no saben inglés puedan usar la página en inglés, bueno, esa parece ser una manera poco entusiasta de abordar el problema real.
Casey
-2

Si uno va por una aplicación global, probablemente modelaría el nombre de una persona como un conjunto de cadenas. Por ejemplo, considere el nombre del presidente en la película Idiocracia:

  • Dwayne Elzondo Mountain Dew Herbert Camacho

Ese es su nombre completo. El nombre contiene 6 elementos en la matriz. Para la cultura estadounidense, el primer nombre es el primer elemento de la matriz (Dwayne) y el apellido es el último elemento de la matriz (Camacho). Pero ese no es siempre el caso.

Se podrían aplicar reglas específicas de cultura para determinar el "primer" nombre si el primer nombre es en realidad el último elemento y así sucesivamente, dependiendo de cómo funcionan los nombres en diferentes culturas / localidades.

Además, en el caso de EE. UU., Tenemos casos en los que el último elemento no es el apellido, como:

  • Dwayne Elzondo Mountain Dew Herbert Camacho Jr.

Entonces, tal vez un campo de sufijo de nombre o uno tendría que analizar el último elemento buscando sufijos conocidos basados ​​en la cultura para obtener el apellido correcto.

Por lo tanto, siempre es mejor almacenar el nombre en un elemento (El nombre completo) y luego aplicar una rutina de "estandarización / saneamiento" para analizar los elementos específicos según sea necesario. Existe una estrategia similar para las direcciones. Por lo general, se recopilan como una cadena y luego se envían a un servicio para analizar las partes.

Jon Raynor
fuente
3
Un solo campo y luego "analizar" es una muy mala idea. Considere a una persona cuyo apellido es "Senior": ¿cómo analiza eso? ¿Qué pasa con "de la Jolla" como apellido?
BobDalgleish
Mencioné el análisis o un campo de sufijo de nombre. Si se necesita una solución genérica, se necesitaría un analizador de nombres para poder manejar cada caso como "Senior" y "de la Jolla". Se podría usar IA y entrenarla para reconocer nombres. Apuesto a que si se le proporciona un conjunto de datos lo suficientemente grande, sería capaz de reconocer el "de la Jollas" del mundo. Pero esa es una posible solución. Ciertamente, también es posible recolectar partes discretas, pero eso tiene sus desventajas.
Jon Raynor