¿Cómo modelar más de un 'apellido'?

11

En los países de habla hispana usamos más de un apellido, como:

Nombre ↘ ↙ Apellido
                Pedro Arturo Rodríguez Loyola Segundo
        nombre ↗ ↖ (?)

Estoy tratando de modelar datos para el nombre del paciente. En nuestro país es importante, por lo que no puedo descuidar el segundo apellido, pero me gustaría crear una aplicación que tenga sentido para otros desarrolladores, especialmente de países de habla inglesa.


Creé una pregunta similar en inglés . SE , tiene algunas ideas sobre por qué es importante persistir ambos valores.

Pablo Olmos de Aguilera C.
fuente
15
¿Existe la menor razón por la cual un valor de "apellido" no debe contener espacios? ¿Realmente desea utilizar un apellido en algunos casos de uso y todos los apellidos en otros? Si no, entonces no veo el problema. Deje el "apellido" exactamente como lo ingresó el usuario y estará bien.
Kilian Foth
3
en holandés, un nombre de tipo "van de Iets" es bastante común. simplemente deje que el campo de apellido contenga espacios
ratchet freak
2
¿Hay alguna razón por la que no podrías tener un solo namecampo?
asfallows
2
@asfallows: porque si imprimimos una lista de pacientes, debemos ordenarlos por apellido. Por ejemplo, si su nombre es "José Carlos Fernando Almodóvar Soto", ¿cómo se supone que debo saber de antemano que "Almodóvar" es el primer apellido?
Pablo Olmos de Aguilera C.
2
@FedericoPoloni: cualquiera que busque a un paciente por el apellido probablemente sepa el apellido del paciente.
Mooing Duck

Respuestas:

19

P: ¿Cómo cuenta un DBA?

A: 0, 1, muchos

Un individuo tiene 1 o más nombres de pila y 1 o más apellidos, y posiblemente un título. Estos nombres tienen un orden para ellos. Depende de la localización y la cultura determinar cómo referirse a un individuo.

ContactId
NamePart {"John", "Smith", ...}
NameType {título, dado, familia, ???}
Orden {1, 2, 3, ...}

Para Pedro Arturo Rodríguez Loyola(contacto # 1), tendría cuatro filas:

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

De esta manera, no se limita a ninguna estructura dada, pero aún tiene sentido para un contacto dado allí. ¿Qué haces cuando tienes a alguien con 3 o 4 nombres o apellidos? o un apellido de soltera?

Tenga en cuenta que he cambiado el orden de una revisión anterior de esta respuesta: el orden es un orden sobre el nombre completo en lugar de solo un orden dentro del tipo de nombre porque en algunas culturas, el apellido es lo primero, es posible que se haya dividido partes del título "Sir John Smith II".

Lectura adicional

Dave Jarvis
fuente
2
+1 Pero este programador ha trabajado con muchos miembros del equipo offshore, pero el nombre más largo que he visto todavía es "Pablo Diego José Francisco de Paula Juan Nepomuceno María de los Remedios Crispiniano de la Santísima Trinidad Ruiz y Picasso". ¿Abuso infantil o no?
Elliott Frisch
@Darkhogg utnapistim lo tiene como el primer enlace 'Esto' en su respuesta. Es una de esas 'guías definitivas'.
Me gusta la idea como concepto, pero no es un poco difícil presentarle al usuario que va a escribir el nombre real. Lo único que se me ocurre es algo así como los campos de contacto "GMail", que le permiten "agregar" partes del nombre. ¿Has pensado en cómo puedes usar ese tipo de modelo de datos?
Pablo Olmos de Aguilera C.
1
@Peteris a menudo en aplicaciones médicas (la pregunta original menciona 'paciente') necesita pasar un nombre estructurado para la integración con otros sistemas. Tener datos no estructurados significa que tendrá dificultades significativas para integrarse con otros sistemas, incluso cosas como transferir a un paciente de un hospital a otro o completar campos de formulario para reclamos de seguro. Y así, el problema sobre cómo estructurar los datos de una manera que le permita manipularlos de todas las formas requeridas.
1
@Ben un campo de texto libre no funciona bien cuando la aplicación requiere ordenar por apellido o al intentar interactuar con un antiguo sistema EDI para transferir a un paciente de una ambulancia al hospital (o viceversa), o completar el campos apropiados en varios formularios de reclamo de seguro. Estas son todas las áreas clave donde es más fácil tener un bit de datos que designa cada parte del nombre que tratar de asignar el significado después del hecho. Un campo de texto libre es bueno, pero a veces no es una opción para trabajar con otros sistemas.
10

Esto puede ayudar. La publicación es humorística, pero perspicaz.

[Nombre] [Apellido] no es una regla universal para los nombres. Es común donde vives. Si impone reglas en esto, tarde o temprano tendrá personas que no se pueden agregar a su sistema.

Básicamente, asegúrese de imponer la menor cantidad de restricciones posible y permita flexibilidad entre el nombre almacenado real y cualquier otro extra.

Yo iría con algo como esto:

  • Nombre para mostrar (para nombres consistentes cuando se muestran formularios / datos): (debe ser [primero] [último]).
  • Otros nombres / nombre completo (para búsquedas, coincidencias más precisas, etc.). Aquí, permita al usuario escribir cualquier cosa, hasta la longitud dada; la longitud debe ser más de lo que cree que debería ser razonablemente suficiente, por ejemplo, si cree que 40 caracteres deberían ser suficientes, ponga 500 :)).
  • Direccionamiento (Mr, Mrs, Ms, Jr, Sr, -san, valor personalizado (como Tov.) Etc.).
  • ID interna (esta ID debe identificar de manera única a cada persona dentro de su aplicación, evitando colisiones de nombres)

Por ejemplo, mi nombre no se puede escribir correctamente en la mayoría de los idiomas europeos, debido a los diacríticos específicos del rumano (por lo tanto, cada vez que escribo mi nombre fuera de mi país de origen, técnicamente lo escribo incorrectamente, para que las personas puedan leerlo y pronunciarlo).

Algunos ejemplos de nombres y enlaces interesantes:

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
fuente
Una cosa más a considerar es la clasificación. A menudo es deseable poder ordenar una lista de personas por su apellido (o solo nombre, o la primera palabra en el apellido, etc.). Si la aplicación necesita hacer eso, entonces necesitamos alguna forma de identificar su "nombre de clasificación".
BenM
Pero me gusta esta idea en general. En lugar de representar nombres basados ​​en suposiciones culturales, los representamos en función de las funciones que necesitan realizar en el sistema.
BenM
Me gusta tu respuesta. Sin embargo, no entiendo cómo esto puede ayudarme a poner nombres. Necesito ordenarlos, por ejemplo, normalmente usamos el apellido. ¿Cómo ponerme en un campo / columna llamado "otros nombres" o "nombre para mostrar" podría ayudarme con eso, por ejemplo? Felicitaciones por el nombre birmano, sin embargo. Increíble.
Pablo Olmos de Aguilera C.
@pablox, mi punto fue que conceptualmente, no debes tratar el nombre de una persona como una identidad, sino como metadatos para la identidad (y la identificación debe ser un código único). Puede considerar esos metadatos como organizados, de acuerdo con las necesidades de su aplicación. Por ejemplo, podría elegir la función de "ordenar nombre" por el segundo nombre (si existe) en "el grupo de tokens de nombre", la función de "mostrar nombre" como primer token y la función de "direccionar nombre" como "Dr. | Sr. | Sra. | etc" + "nombre para mostrar".
utnapistim
La clasificación de los nombres suele ser una "clasificación de la guía telefónica", en la que se ignoran varios apéndices del nombre y se clasifican en la parte importante. Por ejemplo, "van de Bogart" se clasificaría en "Bogart", no en "van". ¿Cómo un nombre hispano de varias partes que se maneja va a ser culturalmente dependientes - dónde se está utilizando y cómo sus ataques uso en.
Phil Perry
0

No es una cosa complicada ... o me falta algo.

Tenga estos campos: name(varchar), lastname(varchar).

Luego un formulario para completar el nombre completo, ejemplo: Jorge Patricioy el apellido Pèrez Gonzáles.

En la búsqueda, tiene muchos operadores de comparación, por ejemplo en MySQL, como los likeque le ayudarán a buscar.

La mayoría de los apellidos compuestos siempre están en orden. Pérez Gonzálezdice principalmente su apellido de esa manera, y no en orden inverso.

Estará sobre-diseñando su base de datos de otra manera.

JorgeeFG
fuente
1
¿Qué pasa si el apellido se da primero? enlace
1
@MichaelT, ¿qué tal? Explota el campo y busca en la tabla de nombres y apellidos cualquier aparición del valor. Siempre suponiendo que tenga un campo de búsqueda similar a Google, de lo contrario podría tener un formulario como "Nombre:" y "Apellido:"
JorgeeFG
0

Hay tres tipos de nombres personales: Polinimos (nombres con múltiples componentes), Monónimos (nombres con un solo componente, ex "Cher") y Pictónimos (nombres representados por imágenes, ex El Artista ).

Una persona puede tener varios nombres, roles , por ejemplo, Nombre legal y Nombre preferido.

Un polinimo tiene varios componentes, de los cuales se debe requerir el nombre de pila y el apellido. Hay algunos tipos de apellidos:

  1. Apellidos regulares (Jones)
  2. Apellidos de doble cañón ("Vaughn Williams" o "Louis-Dreyfus")
  3. Apellidos verdaderos compuestos {dadoNombre: apellido "Juan Pablo": "Fernández de Calderón", secundario Apellido: "García-Iglesias"}

3 es importante porque se esperaría que lo llamaran Fernández de Calderón , no Fernández de Calderón García-Iglesias.

Básicamente, tenga un campo de apellido obligatorio y un campo de apellido secundario anulable.

usuario118920
fuente
0

¿Cómo modelas los diversos componentes del nombre de alguien? Usted no hace . En lugar de modelar campos separados para todos los componentes del nombre legal de alguien, más su saludo preferido, apelación, nombre informal, nombre de usuario, apodo y nombre, solo modele lo que le interesa.

Lo más probable es que su sistema solo se preocupe por un máximo de cuatro "nombres" para alguien:

  1. Un nombre para mostrar que les permite saber que han iniciado sesión en el sistema.
  2. Un nombre informal mediante el cual los abordaría en una llamada telefónica.
  3. Un nombre formal con el que se referiría a ellos en la correspondencia.
  4. Un nombre de clasificación que expresa # 2 de manera que se ordenaría en una lista.

Muchos sistemas simplemente usarían el nombre formal de alguien para # 1 y # 2, dejando los únicos nombres que le interesan como "una cadena que representa el nombre del usuario" y "una cadena que representa cómo se debe ordenar el primero".

Desde una perspectiva de modelado de datos, defina solo aquellos valores que realmente necesitaría. La mejor manera de optimizar el almacenamiento de estos valores es un detalle de implementación, uno para el que solo causará dolores de cabeza si se optimiza en exceso. (Claro, "podría" simplemente almacenar un nombre y apellido, pero ¿qué haría para alguien que solo tiene un nombre?)

DougM
fuente
-1

Consideremos esto de otra manera.

Su sistema tiene que conectarse a otros sistemas, no importa lo flexible que sea si no lo son. Entonces, ¿qué hacen los sistemas con los que tiene que transferir datos?

Cuando llamo por teléfono a mi médico para pedir una cita, me preguntan mi fecha de nacimiento, el sistema les muestra una lista de personas que coinciden, luego me preguntan mi nombre y, finalmente, me piden mi dirección para confirmar que han seleccionado La persona correcta.

El médico necesita saber el nombre de mi dirección cuando me habla; También necesitan saber el nombre para poner una carta si me escriben.

Por lo tanto, no es solo un campo de texto único que permite espacios. No hay ninguna razón para incluso separar el primero del apellido, a menos que los procese de la misma manera.

Ian
fuente
3
Estás completando un formulario en un reclamo de seguro. Tiene "Apellido". La persona es de Japón. Si bien tiene la versión transliterada, debe poner el apellido correcto en el campo. Que palabra es
@MichaelT, ¿qué decir que todos tienen un apellido?
Ian
2
Obtener un nombre de una persona de Japón (o de muchos otros países de denominación orientales) primero se da el apellido. Así es como se trata. Sin embargo, cuando se completa un formulario médico, se puede requerir que el apellido y el apellido estén en diferente campos: ¿cómo se toma un campo y se combina con el campo apropiado? El otro ejemplo dado es si está ordenando por apellido y le han dado "José Carlos Fernando Almodóvar Soto", necesita ordenar en Almodóvarlugar de Fernando.
@MichaelT, por lo que es necesario procesar el apellido por separado, así que dele su propio campo y espere que la persona que escribe los detalles entienda el nombre oriental.
Ian