Estoy configurando una base de datos MySQL muy pequeña que almacena, nombre, apellido, correo electrónico y número de teléfono y estoy luchando por encontrar el tipo de datos "perfecto" para cada campo. Sé que no existe una respuesta perfecta, pero debe haber algún tipo de convención común para campos de uso común como estos. Por ejemplo, he determinado que un número de teléfono de EE. UU. Sin formato es demasiado grande para ser almacenado como un int sin firmar, debe ser al menos un bigint.
Debido a que estoy seguro de que a otras personas probablemente les resultará útil, no quiero restringir mi pregunta a los campos que mencioné anteriormente.
¿Qué tipos de datos son apropiados para campos comunes de bases de datos? ¿Campos como número de teléfono, correo electrónico y dirección?
Aquí hay algunos tipos de datos comunes que uso (aunque no soy un profesional):
fuente
En mi experiencia, los campos de nombre / apellido deben tener al menos 48 caracteres; hay nombres de algunos países como Malasia o India que son muy largos en su forma completa.
Los números de teléfono y los códigos postales siempre deben tratarse como texto, no como números. La razón habitual es que existen códigos postales que comienzan con 0 y, en algunos países, los números de teléfono también pueden comenzar con 0. Pero la verdadera razón es que no son números , son identificadores que resultan estar compuestos de dígitos numéricos (y eso es ignorar países como Canadá que tienen letras en sus códigos postales). Así que guárdelos en un campo de texto.
En MySQL puede utilizar campos VARCHAR para este tipo de información. Si bien suena perezoso, significa que no tiene que preocuparse demasiado por el tamaño mínimo correcto.
fuente
VARCHAR(255)
sentido.Dado que tratará con datos de longitud variable (nombres, direcciones de correo electrónico), entonces querrá usar VARCHAR. La cantidad de espacio que ocupa un campo VARCHAR es
[field length]
+ 1 bytes, hasta una longitud máxima de 255, por lo que no me preocuparía demasiado por tratar de encontrar un tamaño perfecto. Eche un vistazo a lo que imagina que podría ser la longitud más larga, luego duplíquela y establezca eso como su límite VARCHAR. Dicho eso ...:Por lo general, configuro los campos de correo electrónico para que sean VARCHAR (100); todavía no he encontrado ningún problema con eso. Nombres que establecí en VARCHAR (50).
Como han dicho los demás, los números de teléfono y los códigos postales no son en realidad valores numéricos, son cadenas que contienen los dígitos del 0 al 9 (¡y a veces más!) Y, por lo tanto, debe tratarlos como una cadena. VARCHAR (20) debería ser suficiente.
Tenga en cuenta que si tuviera que almacenar números de teléfono como enteros, muchos sistemas asumirán que un número que comienza con 0 es un número octal (base 8). Por lo tanto, el número de teléfono perfectamente válido "0731602412" se pondría en su base de datos como el número decimal "124192010".
fuente
Estoy haciendo lo mismo y esto es lo que hice.
Usé tablas separadas para el nombre, la dirección, el correo electrónico y los números, cada una con una columna NameID que es una clave externa en todo excepto en la tabla Name, en la que es la clave agrupada principal. Usé MainName y FirstName en lugar de LastName y FirstName para permitir entradas comerciales y personales, pero es posible que no lo necesite.
La columna NameID llega a ser un pequeño número en todas las tablas porque estoy bastante seguro de que no haré más de 32000 entradas. Casi todo lo demás es varchar (n) que va de 20 a 200, dependiendo de lo que quieras almacenar (cumpleaños, comentarios, correos electrónicos, nombres realmente largos). Eso realmente depende del tipo de cosas que estés almacenando.
La tabla de números es donde me desvío de eso. Lo configuré para tener cinco columnas etiquetadas NameID, Phone #, CountryCode, Extension y PhoneType. Ya hablé de NameID. El número de teléfono es varchar (12) con una restricción de verificación que se parece a esto: CHECK (Número de teléfono como '[0-9] [0-9] [0-9] - [0-9] [0-9] [0 -9] - [0-9] [0-9] [0-9] [0-9] '). Esto asegura que solo lo que quiero ingrese a la base de datos y que los datos se mantengan muy consistentes. Los códigos de extensión y de país los llamé pequeños que aceptan valores NULL, pero esos podrían ser varchar si quisieras. PhoneType es varchar (20) y no admite nulos.
¡Espero que esto ayude!
fuente