tutorial - MySQL: ¿cómo almacenar números de teléfono?
mysql workbench tutorial (11)
Definitivamente los separaría. Sería fácil ordenar los números por código de área y código contry. Pero incluso si no va a dividirse, simplemente inserte los números en el DB en un formato determinado. por ejemplo, 1-555-555-1212 Su lado del cliente estará agradecido por no hacerlo reformatear sus números.
Posible duplicado:
tipo de datos mysql para número de teléfono y dirección
¿Alguna sugerencia sobre la mejor práctica para almacenar números de teléfono en un DB? Considere un número de teléfono de los Estados Unidos:
- 555 555 1212
- 555-555-1212
- (555) 555 1212
- 5555551212
- 1-555-555-1212
- 1 (555) 555-1212
- y así ...
¿Debo eliminar el formato y almacenar solo los números? ¿Debo simplemente usar un campo o dividirlos en: código de país, código de área, número de teléfono, etc.? Sugerencias?
Forma mi punto de vista, a continuación están mis sugerencias:
- Almacene el número de teléfono en un solo campo como varchar y si necesita dividir, luego de recuperar la división en consecuencia.
- Si almacena como número, entonces el precedente 0 se truncará, así que siempre almacénelo como varchar
- Valide el número de teléfono de los usuarios antes de insertarlo en su mesa.
Nunca debe almacenar valores con formato. El formateo debe hacerse en la vista dependiendo de las preferencias del usuario.
Buscar nunbers de teléfono con formato mixto es casi imposible.
Para este caso, me dividiría en campos y almacenaría como un número entero. Los números son más rápidos que los textos y los divide y poner índice en ellos hace que todo tipo de consultas se ejecute rápidamente.
Liderar 0 podría ser un problema, pero probablemente no. En Suecia, todos los códigos de área comienzan con 0 y se eliminan si también se marca un código de país. Pero el 0 no es realmente una parte del número, es un indicador que se usa para decir que estoy agregando un código de área. Lo mismo para el código de país, agrega 00 para decir que usa un código de condado.
El 0 líder no se debe almacenar, se deben agregar cuando sea necesario. Supongamos que almacena 00 en la base de datos y utiliza un servidor que solo funciona con + ellos tienen que reemplazar 00 con + para esa aplicación.
Entonces, almacene números como números.
Puede usar varchar para almacenar números de teléfono, por lo que no necesita eliminar el formato
Sugeriría un varchar para el número de teléfono (ya que se sabe que los números de teléfono tienen los 0 principales que es importante mantener) y que tenga el número de teléfono en dos campos:
Código de país y número de teléfono, es decir, para 004477789787
, puede guardar CountryCode = 44 y número de teléfono = 77789787
sin embargo, podría ser muy específico de la aplicación. Si, por ejemplo, solo almacena números de EE. UU. Y desea mantener la capacidad de realizar rápidamente consultas como "Obtener todos los números de un área específica", puede dividir aún más el campo de número de teléfono (y soltar el campo de código de país como sería redundante)
No creo que haya una manera general correcta o incorrecta de hacer esto. Realmente depende de las demandas.
Sugiera que almacene el número como un alfanumérico extendido compuesto de caracteres que desea aceptar y almacénelo en un varchar (32) o algo así. Elimine todos los espacios, guiones, etc. Ponga el FORMATO del número de teléfono en un campo separado (posiblemente extraído de las preferencias de configuración regional). Si desea admitir extensiones, debe agregarlas en un campo separado;
Yo diría almacenarlos como un número entero grande, ya que un número de teléfono en sí mismo es solo un número. Esto también le da más flexibilidad en la forma en que presenta sus números de teléfono más tarde, dependiendo de la situación en la que se encuentre.
Yo recomendaría almacenar estos como números en columnas de tipo varchar - una columna por "campo" (como el código contry, etc.).
El formato se debe aplicar cuando se interactúa con un usuario ... eso hace que sea más fácil dar cuenta de los cambios de formato, por ejemplo, y ayudará especialmente. cuando tu aplicación se vuelve internacional ...
varchar, No almacenar caracteres separados, es posible que desee formatear los números de teléfono de manera diferente para diferentes usos. así que guarde (619) 123-4567 como 6191234567 Trabajo con los datos del directorio telefónico y he encontrado que esta es la mejor práctica.
Sugiero almacenar los números en un varchar sin formatear. Luego puede reformatear los números del lado del cliente de forma adecuada. Algunas culturas prefieren tener números de teléfono escritos de manera diferente; en Francia, escriben números de teléfono como 01-22-33-44-55.
También podría considerar almacenar otro campo para el país en el que se encuentra el número de teléfono, porque puede ser difícil determinarlo en función del número que está mirando. El Reino Unido usa números de 11 dígitos, algunos países africanos usan números de 7 dígitos.
Dicho esto, solía trabajar para una compañía de teléfonos del Reino Unido, y almacenamos números de teléfono en nuestra base de datos según si eran del Reino Unido o internacionales. Entonces, un número de teléfono del Reino Unido sería 02081234123 y uno internacional sería 001800300300.
- Todo como varchar (no son números sino "colecciones de dígitos")
- País + área + número por separado
- No todos los países tienen código de área (p. Ej., Malta, donde yo estoy)
- Algunos países eliminan el cero inicial del código de área al marcar internamente (p. Ej., Reino Unido)
- Formatear en el código del cliente