Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta tipo de campo mysql

Estas en el tema de Consulta tipo de campo mysql en el foro de Mysql en Foros del Web. Holas, Tengo una duda sobre el tipo de campo que debo crear en una tabla y como guardar en él la información. Os explico el ...
  #1 (permalink)  
Antiguo 08/06/2012, 13:03
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Consulta tipo de campo mysql

Holas,

Tengo una duda sobre el tipo de campo que debo crear en una tabla y como guardar en él la información.
Os explico el problema a ver si me podéis aconsenjar

Simplifico el problema a 2 tablas sencillas

Tabla 1 es la tabla categorias donde tiene una PK autonumerico y otro campo con el nombre de la categoria.

Tabla 2 es la tabla de las preferencias del usuario.

Tengo un formulario donde el usuario selecciona que categorias le interesan y yo recibo los identificadores de esas categorias. Ej. 1,5,6,10

La pregunta es... qué tipo de campo me aconsejáis que debo crear en la tabla del usuario para poder guardar la información (identificadores de las categorias, que son variables pueden ser pocos o muchos) y sobre todo que pueda acceder a ellos de forma rápida y que los pueda tratar, filtrar etc..
Con filtra me refiero a una consulta tipo, dime que usuarios le interesan la categoria num 5 y 6.

También si a la hora de guardar los datos en ese campo deben estar de alguna forma concreta, como por ejemplo serializados o a pelo, etc...

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 08/06/2012, 13:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta tipo de campo mysql

Ni uno, ni otro.
Lo que tienes es una relación de cardinalidad N:N y se debe crear una tabla donde se relacione a cada usuario con cada una de las selecciones que ha realizado.
Nunca, jamás, ni en tus peores pesadillas se ponen múltiples valores en un campo. Eso es un campo multivaluado y está absolutamente prohibido en el modelo relacional, y sólo te causará en el futuro enormes problemas de consultas, de integridad referencial y de consistencia de datos.
¿Quedó claro?
Ni en un día de borrachera se hace eso.

Crea la tabla y define las FK correspondientes.
Luego veremos como se crean los inserts múltiples para llenar esos datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 08/06/2012, 13:40
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Consulta tipo de campo mysql

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Ni uno, ni otro.
Lo que tienes es una relación de cardinalidad N:N y se debe crear una tabla donde se relacione a cada usuario con cada una de las selecciones que ha realizado.
Nunca, jamás, ni en tus peores pesadillas se ponen múltiples valores en un campo. Eso es un campo multivaluado y está absolutamente prohibido en el modelo relacional, y sólo te causará en el futuro enormes problemas de consultas, de integridad referencial y de consistencia de datos.
¿Quedó claro?
Ni en un día de borrachera se hace eso.

Crea la tabla y define las FK correspondientes.
Luego veremos como se crean los inserts múltiples para llenar esos datos.
Gracias gnzsoloyo!

Otra tabla más para la colección xDDD si hace falta se crea!

Cuando me enfrente a los inserts multiples en esta tabla te comento si tengo dudas, aunque no será el primer insert multiple ;)

Un saludo crack!
  #4 (permalink)  
Antiguo 08/06/2012, 17:33
Avatar de Nuc134rB0t  
Fecha de Ingreso: junio-2012
Ubicación: Venezuela
Mensajes: 6
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Consulta tipo de campo mysql

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Nunca, jamás, ni en tus peores pesadillas se ponen múltiples valores en un campo. Eso es un campo multivaluado y está absolutamente prohibido en el modelo relacional, y sólo te causará en el futuro enormes problemas de consultas, de integridad referencial y de consistencia de datos..
Te refieres a que los campos tipo enum() no son recomendables? Yo tengo un campo para los turnos Dia, Tarde, Noche, eso no es recomendable entonces?
  #5 (permalink)  
Antiguo 08/06/2012, 17:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta tipo de campo mysql

Cita:
Iniciado por Nuc134rB0t Ver Mensaje
Te refieres a que los campos tipo enum() no son recomendables? Yo tengo un campo para los turnos Dia, Tarde, Noche, eso no es recomendable entonces?
No. Un campo ENUM es una restricción al dominio, no un campo multivaluado, porque jamás podrá adoptar más de uno en un mismo registro.
Un campo multivaluado es uno que posee una colección de valores en un sólo registro o tupla. Pero todos los valores pertenecen al dominio.

Por favor, leer bien los apuntes...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: tabla, tipo, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:43.