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

query para insertar en un campo set

Estas en el tema de query para insertar en un campo set en el foro de Mysql en Foros del Web. hola tengo la siguiente tabla, /*crea tabla con los datos d elos usuarios*/ create table USUARIO( USUARIO_ID int auto_increment, USUARIO_US varchar(15) NOT NULL, USUARIO_PWD varchar(15) ...
  #1 (permalink)  
Antiguo 12/04/2008, 17:53
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 16 años, 5 meses
Puntos: 69
query para insertar en un campo set

hola tengo la siguiente tabla,


/*crea tabla con los datos d elos usuarios*/
create table USUARIO(
USUARIO_ID int auto_increment,
USUARIO_US varchar(15) NOT NULL,
USUARIO_PWD varchar(15) NOT NULL,
NOMBRE varchar(15),
APP varchar(15),
APM varchar(15),
CEDULA VARCHAR (10),
EMAIL VARCHAR(40),
TELEFONO VARCHAR(12),
USUARIO_TIPO SMALLINT NOT NULL,
ORGANIZACION SMALLINT NOT NULL,
primary KEY(USUARIO_ID),
INDEX(ORGANIZACION),
FOREIGN KEY (ORGANIZACION) REFERENCES ORGANIZACIONES(ID),
INDEX(USUARIO_TIPO),
foreign key (USUARIO_TIPO) REFERENCES TIPO_USUARIOS(TIPO_ID)
)TYPE = InnoDB;


QUE SE RELACIONA CON ESTA OTRA

/* Tabla de los datos de las organizaciones */
create table ORGANIZACIONES(
ID SMALLINT NOT NULL,
Nombre_Lista VARCHAR(6),
Razon_Social VARCHAR(89),
Telcontacto VARCHAR(12),
email VARCHAR(40),
primary key (ID)
)type = InnoDB;


PERO UN USUARIO PUEDE TENER VARIAS ORGANIZACIONES ASOCIADAS A EL QUIERO QUE EL CAMPO "ORGANIZACIÓN " DE L A TBLA DE USUARIOS, sea de tipo set para que pueda tener varias opciones pero para hacer la referencia a otra tabla estos campos deben ser del mismo tipo asi que no se como hacerle, incluso si lo declarara como SET como puedo hacer el query? como le inserto los datos?? la sintaxis cual seria? Alguien me Yuda por favor??
  #2 (permalink)  
Antiguo 13/04/2008, 09:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Re: query para insertar en un campo set

Para lo que quieres hacer, es mejor una tercera tabla, una tabla intermedia, a la que podrás llamar organizacionesusuario, donde junto al id propio de esa tabla, tendrás dos Foreign Key, uno que será el correspondiente al USUARIO_ID de la tabla USUARIO, y otro al ID de la tabla ORGANIZACIONES.
El modo en que se guardarán los datos es el siguiente:
Si Juan Pérez, con USUARIO_ID Nº 5 en la tabla USUARIO pertenece a 3 asociaciones de las recogidas en la tabla ORGANIZACIONES: la ASOCIACIÓN A con ID 4, la ASOCIACIÓN B con id 33, y la ASOCIACIÓN C, con ID 15, en esa tabla intermedia que he llamado ORGANIZACIONESUSUARIO los datos aparecerían guardados así:
idorgusu refusuid refasocid
1 5 4
2 5 33
3 5 15

Luego mediante los joins presentarías todos los datos.
Es cierto que SET te permite guardar para ese usuario los datos del siguiente modo en el campo '4, 33, 15'
pero eso no es lo adecuado para la estructura de la base que quieres, en que la relación principal se produce entre usuario y organización. Si tienes que hacer estadísticas o simplemente sacar la lista de organizaciones de un usuario, ya tendrás bastantes problemas.
Además, se trata de una cadena de texto (con la desventaja que eso supone sobre los datos numéricos de campos relacionados), y tampoco te permite almacenar más de 64 tipos distintos, es decir, si hay más de 64 organizaciones ya no podrás ponerlas todas.
Yo te recomendaría esa tercera tabla.
Esa es mi opinión.
  #3 (permalink)  
Antiguo 04/05/2008, 01:26
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 16 años, 5 meses
Puntos: 69
Re: query para insertar en un campo set

Muchas gracias!!
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 06:27.