2008-08-27 21 views
124

Tengo un formulario web simple que permitirá a los usuarios no autenticados ingresar su información, incluido el nombre. Le di al campo de nombre un límite de 50 caracteres para coincidir con la tabla de mi base de datos donde el campo es varchar (50), pero luego comencé a preguntarme.¿Cuál es un límite de longitud razonable en los campos de "Nombre" de la persona?

¿Es más apropiado usar algo como el tipo de columna Texto o debería limitar la longitud del nombre a algo razonable?

Estoy usando SQL Server 2005, en caso de que importe en su respuesta.

EDIT: No vi this broader question con problemas similares.

+2

Algo a tener en cuenta, en esta era de globalización varchar normalmente NO es el tipo de datos correcto, es probable que deba usar nvarchar. – Tao

+0

@Tao: Como él está usando MS SQL Server, estoy de acuerdo. Pero VARCHAR * es * el tipo de datos correcto en otras implementaciones SQL que tienen mejor soporte para UTF-8. – dan04

+1

Compruebe [esta pregunta relacionada] (http://stackoverflow.com/questions/20958/list-of-standard-lengths-for-database-fields#21012) para mucha discusión sobre el tema. –

Respuesta

127

UK Government Data Standards Catalogue sugiere 35 caracteres para cada nombre y apellido, o 70 caracteres para un solo campo para contener el nombre completo.

+3

El enlace debe actualizarse a partir del 22 de octubre de 2010. Busqué en Google para: sitio: *. Gov.uk Nombre "35 caracteres" y encuentre este documento https://www.justice.gov.uk/guidance/docs/electoral-reg-standards.pdf –

+0

Sus enlaces parecen ser realmente malos ... a partir de 8/2012: http://webarchive.nationalarchives.gov.uk/+/http:// www.cabinetoffice.gov.uk/media/254290/GDS%20Catalogue%20Vol%202.pdf –

+5

El nombre completo más largo "razonable" que he encontrado es "Gisele Marie-Louise Marguerite LaFleche" (39 bytes de longitud). – user1154664

6

Si es el nombre completo en un campo, por lo general voy con 128 - 64/64 para la primera y la última en campos separados - uno nunca sabe.

9

Normalmente voy con varchar (255) (255 es la longitud máxima de un tipo varchar en MySQL).

+20

¿Y también reserva 255 caracteres de espacio en sus GUI y otros medios donde se muestra el nombre/apellido? ;-) – AndrewBourgeois

1

El primer nombre promedio es cerca de 6 letras. Eso deja 43 para un apellido. :) Parece que probablemente podrías acortarlo si quieres.

La pregunta principal es ¿cuántas filas cree que tendrá? No creo que varchar (50) vaya a matarte hasta que obtengas varios millones de filas.

+5

Si tiene 50 millones de valores entre 10 y 15 caracteres en una columna varchar (20) y los mismos 50 millones en una columna varchar (50), ocupará exactamente el mismo espacio. Ese es el punto de varchar, en lugar de char. – Tao

+0

@Tao ver http://stackoverflow.com/questions/11132357/varchar20-and-varchar50-are-same –

5

@Ian Nelson: Me pregunto si otros ven el problema allí.

Digamos que tiene campos divididos. Eso es 70 caracteres en total, 35 para el primer nombre y 35 para el apellido. Sin embargo, si tiene un campo, descuida el espacio que separa los nombres y apellidos, lo que le hace cambiar rápidamente por 1 carácter. Claro, es "solo" un personaje, pero eso podría marcar la diferencia entre alguien que ingresa su nombre completo y alguien que no. Por lo tanto, cambiaría esa sugerencia a "35 caracteres para cada Nombre de pila y apellido, o 71 caracteres para un solo campo para contener el Nombre completo".

+2

El objetivo de seguir ese documento es que pueda interoperar con otros sistemas del gobierno del Reino Unido, por lo que no puede aumentar individualmente el 70 al 71 y llamarlo un día; de lo contrario, los sistemas con un límite de 70 caracteres cortarán su texto . (No debe almacenar los datos en ambas formas dentro de su propio sistema). En realidad empeora, ya que el Nombre completo incluye no solo Familia/Dado, sino también Título y Sufijo, que también tienen un límite de 35 caracteres cada uno, para un máximo de 143 personajes llenos de diversión en los campos adjuntos. Apesta ser el desarrollador que tiene que intercambiar datos con ambas formas de almacenamiento de nombre. – mmitchell

+3

Claramente, la guía está escrita desde la expectativa de que un individuo puede tener un Nombre de pila largo (hasta 35 caracteres) o un Nombre de familia largo (hasta 35 caracteres), pero es poco probable que AMBAS partes del nombre sean demasiado largas. –

1

Tenga en cuenta que muchas culturas tienen 'segundos apellidos' a menudo llamados apellidos. Por ejemplo, si se trata de personas españolas, apreciarán tener un apellido separado de su "apellido".

La mejor opción es definir un tipo de datos para los componentes del nombre, usarlos para un tipo de datos para el apellido y modificar dependiendo de la configuración regional.

+0

No hay ventaja de hacer los límites más pequeños en entornos que estadísticamente tienen valores más pequeños: el tamaño del campo no afecta el espacio ocupado, a menos que algunos valores ocupen esos caracteres adicionales permitidos (y eso significa que tomó la decisión correcta de todos modos)! – Tao

2

Lo que realmente está preguntando es una pregunta relacionada, pero sustancialmente diferente: ¿con qué frecuencia quiero truncar nombres para que quepan en la base de datos? La respuesta depende tanto de la frecuencia de diferentes longitudes de nombres como de las longitudes máximas elegidas. Esta preocupación se equilibra con las preocupaciones sobre los recursos utilizados por la base de datos. Teniendo en cuenta la poca diferencia de gastos generales que hay entre diferentes longitudes máximas para un campo varchar, generalmente me equivoco al no tener que truncar nunca un nombre y hacer que el campo sea tan grande como me atreví.

25

Sé que llego tarde en este caso, pero añadiré este comentario de todos modos, ya que otros pueden venir aquí en el futuro con preguntas similares.

Tenga cuidado de ajustar el tamaño de las columnas según la configuración regional. Para empezar, te prepara para una pesadilla de mantenimiento, dejando de lado el hecho de que las personas migran y llevan sus nombres con ellos.

Por ejemplo, los españoles con esos apellidos adicionales pueden mudarse y vivir en un país de habla inglesa, y pueden esperar razonablemente que se use su nombre completo. Los rusos tienen patronímicos además de sus apellidos, algunos nombres africanos pueden ser considerablemente más largos que la mayoría de los nombres europeos.

Accede a hacer que cada columna sea lo más amplia posible, teniendo en cuenta el posible recuento de filas. Uso 40 caracteres para cada nombre, otros nombres y apellidos y nunca he encontrado ningún problema.

+0

Gracias por la respuesta, incluso si ha pasado un tiempo. – EndangeredMassa

0

dependiendo de quién va a utilizar su base de datos, por ejemplo, los nombres africanos harán con varchar (20) para el apellido y el nombre separados. sin embargo, es diferente de una nación a otra pero, por el bien, al guardar los recursos de la base de datos y la memoria, separar los nombres de los apellidos y los nombres y usar varchar (30) creo que funcionará.

3

En el Reino Unido, hay algunas normas gubernamentales que tratan con éxito con la mayor parte de la población del Reino Unido: la Oficina de Pasaportes, la Agencia de Licencias de Vehículos Driver &, la oficina Deed Poll y el NHS. Ellos usan diferentes estándares, obviamente.

Cambiando su nombre por Deed Poll allows 300 characters;

No existe un límite legal en la longitud de su nombre, pero le imponemos un límite de 300 caracteres (espacios incluidos) para su nombre completo.

El NHS uses 70 characters for patient names

NOMBRE DEL PACIENTE
Formato/longitud: max an70

la oficina de pasaportes y permisos de conducir allows 30+30 first/last (DVLA) es 30 total.

Tenga en cuenta que otras organizaciones tienen sus propias restricciones sobre lo que van a mostrar en los documentos que producen - por HM oficina de pasaportes el límite es de 30 caracteres cada una por su nombre de pila y su apellido, y por la DVLA el límite es 30 caracteres en total para tu nombre completo.

Cuestiones relacionadas