¿Cuál sería una forma adecuada de almacenar múltiples valores en la misma columna SQL con la ayuda de PHP?
Por ejemplo, en un sistema que almacena detalles de Contacto/Cliente y le permite agregar más de 1 número de teléfono. Por ejemplo, puede guardar 2 números móviles, 1 número de oficina y un par de otros números para el mismo cliente.
Pero no entiendo muy bien cómo haría para guardar estos datos en una sola columna en lugar de crear una columna para Casa #, Móvil #, Trabajo # y ect.
Según tengo entendido, puede guardarse como un formato JSON, pero puede que me equivoque.
Gracias.
Si desea almacenar varios números de teléfono para un contacto determinado, debe hacerlo a través de varios registros , no de valores múltiples dentro de un registro determinado. Por ejemplo, podría tener una tabla de Numbers parecida a esta:
id | contact_id | number | type 1 | 1 | 591-8563 | 1 2 | 1 | 123-4567 | 2 3 | 2 | 867-5309 | 1 Aquí, la columna de type puede registrar si un teléfono es, por ejemplo, fijo (1) o celular (2). Puede ver que el contacto 1 tiene números de teléfono fijo y celular, mientras que el 2 solo tiene un teléfono fijo. Esta tabla de Numbers podría unirse a una tabla para los contactos.
Bueno, si, por ejemplo, tiene una cantidad dinámica de números de teléfono (como varios números de teléfono móvil), podría crear una tabla solo para números de teléfono y agregar una relación con el cliente:
+-----------------------------------+ | phone_number | +-----------+-----------+-----------+ | client_id | type | number | +-----------+-----------+-----------+ | 5 | office #1 | 055768765 | +-----------+-----------+-----------+ | 5 | mobile | 017884778 | +-----------+-----------+-----------+ ...Sin embargo, si realmente desea guardar todos los números en una columna del cliente, así es como puede hacerlo:
# Write: $phone_numbers = array('office #1' => '055768765', 'mobile' => '017884778'); $phone_numbers_for_db = json_encode($phone_numbers); # Read: $phone_numbers = json_decode($phone_numbers_from_db);No es posible en MySQL, a menos que desee almacenar JSON en una sola columna, como información de contacto y luego almacenar todos los datos que describió allí para que no tenga que preocuparse por la estructura de datos cada vez que ingrese un nuevo conjunto de datos.
Mire los motores de base de datos NoSQL como MongoDB, donde puede guardar JSON y luego llamarlo por nombres de columna, lo que significa que no tiene que crear columnas estrictas y puede insertar entradas más cortas o más largas según sea necesario; es más flexible que las bases de datos SQL.