Lista de longitudes estándar para campos de base de datos

395

Estoy diseñando una tabla de base de datos y una vez más me hago la misma pregunta estúpida: ¿Cuánto tiempo debe durar el campo de nombre?

¿Alguien tiene una lista de longitudes razonables para los campos más comunes , como nombre, apellido y dirección de correo electrónico?

Patrick McElhaney
fuente
1
¡Solo asegúrese de permitir caracteres no alfa en los nombres! señala el guión en su apellido
Chris Marasti-Georg
3
Consulte "Longitud máxima de un ID de correo electrónico válido" para obtener la longitud máxima de la dirección de correo electrónico.
outis
2
Una nota: no requiera tanto un "nombre" como un "apellido". Algunas personas, como yo, solo tienen un nombre. (Prueba: web.archive.org/web/20130115074449/http://saizai.com/… )
Sai
¿Qué pasa con la URL, como blog o enlace al perfil?
AlikElzin-kilaka
Jodido si el nombre es tan largo como este gintama.wikia.com/wiki/Jugem_Jugem
絢 瀬 絵 里

Respuestas:

35

Recomendación del W3C:

Si diseña un formulario o una base de datos que acepte nombres de personas con una variedad de antecedentes, debe preguntarse si realmente necesita tener campos separados para el nombre de pila y el apellido.

... Tenga en cuenta que los nombres en algunas culturas pueden ser mucho más largos que los suyos. ... Evite limitar el tamaño del campo para los nombres en su base de datos . En particular, no asuma que un nombre japonés de cuatro caracteres en UTF-8 cabe en cuatro bytes; es probable que realmente necesite 12.

https://www.w3.org/International/questions/qa-personal-names

Para los campos de la base de datos, VARCHAR(255)es una opción segura por defecto, a menos que pueda encontrar una buena razón para usar otra cosa. Para las aplicaciones web típicas, el rendimiento no será un problema. No optimices prematuramente.

jrc
fuente
26
Han pasado 10 años desde que hice esa pregunta. Con otros 10 años de experiencia en mi haber, me inclino a estar de acuerdo con usted.
Patrick McElhaney
2
¿Cómo exactamente imprimirías un nombre de 255 caracteres en un sobre?
Michael Potter
316

Acabo de consultar mi base de datos con millones de clientes en los Estados Unidos.

  • La longitud máxima del primer nombre era 46. Voy con 50. (Por supuesto, solo 500 de ellos tenían más de 25 años, y todos fueron casos en los que las importaciones de datos resultaron en basura adicional que terminó en ese campo).

  • El apellido era similar al primer nombre.

  • Direcciones de correo electrónico con un máximo de 62 caracteres. La mayoría de los más largos eran en realidad listas de direcciones de correo electrónico separadas por punto y coma.

  • La dirección de la calle tiene un máximo de 95 caracteres. Los largos eran todos válidos.

  • La longitud máxima de la ciudad fue de 35.

Esta debería ser una distribución estadística decente para las personas en los Estados Unidos. Si tiene que considerar la localización, los números pueden variar significativamente.

Eric Z Beard
fuente
44
En comparación con la suya, las bases de datos a las que tengo acceso son pequeñas, pero incluso allí encontré una dirección de correo electrónico de 138 caracteres. El componente localpart es obviamente una especie de nombre distinguido LDAP (o AD?).
Bernd Jendrissek
2
¿Qué hay de los números de teléfono?
ceving
@EricZBeard ¿La "dirección" incluye el número de casa?
noɥʇʎԀʎzɐɹƆ
3
La longitud promedio de las direcciones de correo electrónico en su base de datos no es una buena medida para recomendar. La longitud máxima válida de una dirección de correo electrónico es de 254 caracteres y debe ser la longitud especificada en la base de datos. Además, tener listas de direcciones de correo electrónico en una sola columna me indica que sus datos no están normalizados y, por lo tanto, invalida su respuesta.
Mario
1
@ MGOwen Primero, no conoce el propósito de la base de datos, en ciertos entornos, a alguien a quien se le niega el acceso debido a un problema frívolo, como que su correo electrónico sea "demasiado largo" podría ser un problema importante. En segundo lugar, el enlace que publicó dice "El más largo válido es 89", donde como dice este es 62. ¿Cuál es el correcto? Si solo desea elegir un número arbitrario o tiene un motivo válido, como el nombre debe incluirse como parte de la dirección, está bien. Sin embargo, todavía es razonable que, en caso de duda, consulte la especificación. Todavía sostengo que una sola persona que dice "mi base de datos como máximo en x" es anecdótica.
Mario
171

El Catálogo de Estándares de Datos del Gobierno del Reino Unido detalla los estándares del Reino Unido para este tipo de cosas. Sugiere 35 caracteres para cada Nombre de pila y Apellido, o 70 caracteres para un solo campo para contener el Nombre completo y 255 caracteres para una dirección de correo electrónico. Entre otras cosas..

Ian Nelson
fuente
3
El enlace debe actualizarse a partir del 22 de octubre de 2010. Busqué en Google: sitio: *. Gov.uk Nombre "35 caracteres" y encontré este documento justice.gov.uk/guidance/docs/electoral-reg-standards.pdf
Tony R
20
Solo un pensamiento ... ¿no deberían ser 71 caracteres para el nombre y apellido en un solo campo, dado que debe haber un espacio?
Joseph Redfern
8
Bueno, claramente anticipan el nombre largo ocasional (hasta 35 caracteres) y el apellido largo ocasional (hasta 35 caracteres), pero no necesariamente esperan un individuo con una combinación de nombre y apellido largos. Eso sería codicioso ;-)
Ian Nelson
66
Si el Sr. El Tahir El Fadil El Siddig Abderrahman Mohammed Ahmed Abdel Karim El Mahdi realmente usa todos sus nombres al completar formularios en línea, me impresionaría. Tengo dos segundos nombres, pero solo uso uno de ellos aparte de los formularios oficiales (es decir, del gobierno).
Leon
2
@ ian-nelson Longitud del correo electrónico según RFC 3696: ese límite es un máximo de 64 caracteres (octetos) en la "parte local" (antes de "@") y un máximo de 255 caracteres (octetos) en la parte del dominio (después la "@") para una longitud total de 320 caracteres. Los sistemas que manejan el correo electrónico deben estar preparados para procesar direcciones que son tan largas, aunque rara vez se encuentran.
Piotr Nawrot
54

Probablemente algunas longitudes de columna correctas

                            Min Max

Hostname                    1   255
Domain Name                 4   253
Email Address               7   254
Email Address [1]           3   254
Telephone Number            10  15      
Telephone Number [2]        3   26  
HTTP(S) URL w domain name   11  2083        
URL [3]                     6   2083    
Postal Code [4]             2   11
IP Address (incl ipv6)      7   45
Longitude                   numeric 9,6
Latitude                    numeric 8,6
Money[5]                    numeric 19,4

[1] Allow local domains or TLD-only domains
[2] Allow short numbers like 911 and extensions like 16045551212x12345
[3] Allow local domains, tv:// scheme
[4] http://en.wikipedia.org/wiki/List_of_postal_codes. Use max 12 if storing dash or space
[5] http://stackoverflow.com/questions/224462/storing-money-in-a-decimal-column-what-precision-and-scale

Una larga perorata sobre nombres personales

Un nombre personal es un Polynym (un nombre con múltiples componentes ordenables ), un Mononym (un nombre con un solo componente) o un Pictonym (un nombre representado por una imagen; esto existe debido a personas como Prince).

Una persona puede tener múltiples nombres, roles, tales como LEGAL, MARITAL, MAIDEN, PREFERRED, SOBRIQUET, PSEUDONYM, etc. Es posible que tenga reglas comerciales, como "una persona solo puede tener un nombre legal a la vez, pero varios seudónimos a la vez ".

Algunos ejemplos:

names: [
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"George",
    middle:"Herman",
    moniker:"Babe",
    surname:"Ruth",
    generation:"JUNIOR"
  },
  {
    type:"MONONYM",
    role:"SOBRIQUET",
    mononym:"The Bambino" /* mononyms can be more than one word, but only one component */
  },
  {
    type:"MONONYM",
    role:"SOBRIQUET",
    mononym:"The Sultan of Swat"
  }
]

o

names: [
  {
    type:"POLYNYM",
    role:"PREFERRED",
    given:"Malcolm",
    surname:"X"
  },
  {
    type:"POLYNYM",
    role:"BIRTH",
    given:"Malcolm",
    surname:"Little"
  },
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"Malik",
    surname:"El-Shabazz"
  }
]

o

names:[
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"Prince",
    middle:"Rogers",
    surname:"Nelson"
  },
  {
    type:"MONONYM",
    role:"SOBRIQUET",
    mononym:"Prince"
  },
  {
    type:"PICTONYM",
    role:"LEGAL",
    url:"http://upload.wikimedia.org/wikipedia/en/thumb/a/af/Prince_logo.svg/130px-Prince_logo.svg.png"
  }
]

o

names:[
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"Juan Pablo",
    surname:"Fernández de Calderón",
    secondarySurname:"García-Iglesias" /* hispanic people often have two surnames. it can be impolite to use the wrong one. Portuguese and Spaniards differ as to which surname is important */
  }
]

Los nombres de pila, los segundos nombres y los apellidos pueden ser múltiples palabras como "Billy Bob" Thornton, o Ralph "Vaughn Williams".

Neil McGuigan
fuente
55
Esto es muy informativo pero no es una respuesta súper útil. La próxima vez que necesite una respuesta "probablemente correcta" te lo haré saber.
n8bar
16

Yo diría que errar en el lado alto. Como probablemente usarás varchar, cualquier espacio extra que permitas no usará espacio extra a menos que alguien lo necesite. Yo diría que para los nombres (nombre o apellido), vaya al menos 50 caracteres, y para la dirección de correo electrónico, haga que sea al menos 128. Hay algunas direcciones de correo electrónico realmente largas por ahí.

Otra cosa que me gusta hacer es ir a Lipsum.com y pedirle que genere texto. De esa manera, puede tener una buena idea de cómo son 100 bytes.

Kibbee
fuente
66
Oh mi - la primera persona en notar que los campos más grandes no necesariamente significan más espacio de almacenamiento, de ahí la "var" en varchar. Sin embargo, NVarchar generalmente tendría más sentido para los nombres.
Tao
Depende de la implementación. No necesita NVARCHAR si VARCHAR es compatible con UTF-8.
dan04
2
[N]Varcharlos tamaños , sin embargo, afectan sus índices.
RBarryYoung
11

Casi siempre uso una potencia de 2 a menos que haya una buena razón para no hacerlo, como una interfaz de cara al cliente donde algún otro número tiene un significado especial para el cliente.

Si se adhiere a poderes de 2, lo mantiene dentro de un conjunto limitado de tamaños comunes, lo que en sí mismo es algo bueno, y hace que sea más fácil adivinar el tamaño de los objetos desconocidos que puede encontrar. Veo a un buen número de personas haciendo esto, y hay algo estéticamente agradable al respecto. En general, me da una buena sensación cuando veo esto, significa que el diseñador estaba pensando como ingeniero o matemático. Aunque probablemente me preocuparía si solo se usaran números primos. :)

Miguel
fuente
3
Es discutible que 2ⁿ - 1, 2ⁿ - 2 o incluso 2ⁿ - 4, dos sería una mejor decisión de ingeniería porque a menudo las cadenas se representan como caracteres de caracteres indexados a cero y terminan con un carácter nulo, byte o dos bytes (UTF-8 ) Además, con algunas bases de datos que superan 255 en un varchar, se requiere un byte adicional para el almacenamiento (consulte stackoverflow.com/questions/2340639/… ).
Bolsillos y
4

Quería encontrar lo mismo y los Estándares de datos del gobierno del Reino Unido mencionados en la respuesta aceptada sonaban ideales. Sin embargo, ninguno de estos parecía existir más: después de una búsqueda extendida, lo encontré en un archivo aquí: http://webarchive.nationalarchives.gov.uk/+/http://www.cabinetoffice.gov.uk/govtalk/ schemasstandards / e-gif / datastandards.aspx . Necesita descargar el zip, extraerlo y luego abrir default.htm en la carpeta html.

Steve Chambers
fuente
2
+------------+---------------+---------------------------------+
|   Field    | Length (Char) |           Description           |
+------------+---------------+---------------------------------+
|firstname   | 35            |                                 |
|lastname    | 35            |                                 |
|email       | 255           |                                 |
|url         | 60+           | According to server and browser |
|city        | 45            |                                 |
|address     | 90            |                                 |
+------------+---------------+---------------------------------+

Editar : se agregó un poco de espacio

Micheal Mouner Mikhail Youssif
fuente
1
¿Por qué no usar VARCHAR 255 para todo lo que es una cadena? VARCHAR no utiliza relleno y termina con uno o dos bytes adicionales.
radtek
varchar podría ser un poco lento.
kta
1

Solo mirando mis archivos de correo electrónico, hay una serie de "nombres" bastante largos (por supuesto, lo que significa primero es variable según la cultura). Un ejemplo es Krishnamurthy, que tiene 13 letras de largo. Una buena suposición podría ser de 20 a 25 letras basadas en esto. El correo electrónico debería ser mucho más largo ya que es posible que tenga [email protected]. Además, gmail y algunos otros programas de correo le permiten usar [email protected] donde "sometag" es cualquier cosa que desee poner allí para que pueda usarla para ordenar los correos entrantes. Con frecuencia me encuentro con formularios web que no me permiten ingresar mi dirección de correo electrónico completa sin tener en cuenta ninguna etiqueta. Entonces, si necesita un campo de correo electrónico fijo, tal vez algo así como [email protected] en caracteres para un total de 90 caracteres (¡si hice mis cálculos correctamente!).

Loren Charnley
fuente
0

Yo suelo ir con:

Nombre : 30 caracteres
Apellido : 30 caracteres
Email : 50 caracteres
Dirección : 200 caracteres

Si me preocupan los campos largos para los nombres, a veces también puedo elegir 50 para los campos de nombres, ya que el espacio de almacenamiento rara vez es un problema en estos días.

kaybenleroll
fuente
11
50 para el correo electrónico? 254 es el máximo en realidad
Marko
0

Si necesita considerar la localización (para aquellos de nosotros fuera de los EE. UU.) Y es posible en su entorno, le sugiero:

Defina los tipos de datos para cada componente del nombre. NOTA: ¡algunas culturas tienen más de dos nombres! Luego tenga un tipo para el nombre completo,

Entonces la localización se vuelve simple (en lo que respecta a los nombres).

Lo mismo se aplica a las direcciones, por cierto, ¡diferentes formatos!

ColinYounger
fuente
-1

es varchar ¿verdad? Entonces, no importa si usa 50 o 25, es mejor estar seguro y usar 50, dicho eso, creo que el tiempo más largo que he visto es de aproximadamente 19. Los apellidos son más largos

SQLMenace
fuente