¿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.
database-design
data
domain-model
data-modeling
Istvan Devai
fuente
fuente
Respuestas:
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.
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 . Si depende de otro servicio, está bloqueado por sus malas elecciones. No es una ventaja para sus propios diseños.
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.
En realidad, debido a la ambigüedad con los nombres asiáticos, no está tan claro que puedas.
fuente
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.
fuente
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.
fuente
Estoy de acuerdo con mucho de lo que dijo @JanHudec, aunque me gustaría ampliarlo un poco:
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
Pautas semi formales
Pautas formales
fuente
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.
fuente
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?
fuente
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:
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:
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.
fuente