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

problema llave primaria compuesta!!!!!

Estas en el tema de problema llave primaria compuesta!!!!! en el foro de Bases de Datos General en Foros del Web. Que tal Señores, les planteo una cuestion en la que nose que es lo que sucede; he hecho algunas pequeñas bases de datos con lo ...
  #1 (permalink)  
Antiguo 08/09/2009, 15:00
 
Fecha de Ingreso: agosto-2009
Mensajes: 53
Antigüedad: 14 años, 8 meses
Puntos: 0
problema llave primaria compuesta!!!!!

Que tal Señores, les planteo una cuestion en la que nose que es lo que sucede; he hecho algunas pequeñas bases de datos con lo minimo que requiere la misma
pero ahora me tope con una en la que cree una tabla con una primary key compuesta; segun habia leido, cuando creas llaves primarias no pueden contener valores repetido.............. este es mi problema......... en la que estoy si me repite los valores.

Por que???????

Estos son mis scripts:


Código:
create table salidas (
	clave_salida varchar (10) not null,
	fecha date not null,
	fk_unidad int (5) unsigned zerofill not null,
	fk_almacenista int (3) unsigned not null,
	primary key (clave_salida),
	# borra esta llave foranea fk_unidady la relacion hacerla en phpmyadmin creando un indice priero.
	foreign key (fk_unidad) references uni_med(unidad)
		on delete cascade
		on update cascade
	foreign key (fk_almacenista) references almacenistas(no_almacenista) 
		on delete cascade
		on update cascade
)engine=innodb

Código:
CREATE TABLE detalle_salida (
fk_salida varchar (10) not null,
no_economico varchar (10) not null,
cantidad int (3) not null,
descripcion text not null,
primary key (fk_salida,no_economico),
foreign key (fk_salida) references salidas (clave_salida)
	on update cascade
	on delete cascade
)engine= innodb

Gracias por su ayuda
  #2 (permalink)  
Antiguo 08/09/2009, 15:22
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: problema llave primaria compuesta!!!!!

Como dices que se te repite?
podrías poner un ejemplo?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 08/09/2009, 15:28
 
Fecha de Ingreso: agosto-2009
Mensajes: 53
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: problema llave primaria compuesta!!!!!

Ok, mira huesos......

para poder usar la tabla detalle_salida tengo que crear 1ro la tabla salidas, en eso estamos de acuerdo....

las pruebas que hice:

Cita:
INSERT INTO `detalle_salida` VALUES ('sf/09-0270', 'abc-1234-z', 65, 'jjbjbbhjhjvhjvvhjj');
INSERT INTO `detalle_salida` VALUES ('sf/09-0275', '23-oi9fjfj', 12, 'Cantidades de las mejores marcas en equipos medicos. con dos soportes en las bases.');
INSERT INTO `detalle_salida` VALUES ('sf/09-0275', 'abc-1234-z', 21, 'qwertyabcd');
INSERT INTO `detalle_salida` VALUES ('sf/09-0279', 'abc-1234-z', 65, 'juegos de tenazas para cirugias medicas en los hospitales.');
Esos valores en la tbla salidas fueron previamente capturados.......

Se supone que no debe repetirse fk_salida y num economico.........
  #4 (permalink)  
Antiguo 08/09/2009, 15:39
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: problema llave primaria compuesta!!!!!

santiago...
lo que no se permite es el conjunto de ambos, mas no por separados.

en terminos de unos y ceros esto es así:

insert into tabla values(1,1);
insert into tabla values(1,2);
insert into tabla values(1,3);
insert into tabla values(1,4);

insert into tabla values(2,1);
insert into tabla values(2,2);
insert into tabla values(2,3);
insert into tabla values(2,4);


Todos los registros anteriores son diferentes, ya que no se repite una secuencia igual entre los dos campos.

si trataras de insertar
insert into tabla values(2,1);
daría error, ya que esta combinación ya se encuentra registrada.

se entiende la idea?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 08/09/2009, 15:48
 
Fecha de Ingreso: agosto-2009
Mensajes: 53
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: problema llave primaria compuesta!!!!!

Ok.entiendo....
pero lo que deseo es que no se repitan los valores, es decir, un numero economico solo puede pertenecer a una salida registrada
  #6 (permalink)  
Antiguo 08/09/2009, 15:52
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: problema llave primaria compuesta!!!!!

Exactamente eso es lo que te esta diciendo.
Ten en cuenta que si en tu fuente de datos estos dos se pueden repetir, el problema es que la Pk está mal definid, ya que debe faltar un componente de discriminación.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 08/09/2009, 15:53
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: problema llave primaria compuesta!!!!!

Entonces te recomiendo replantees tu diseño de la base de datos.
Aca tienes una relación 1:1

Yo pondría el no_economico en la tabla salidas y lo declararía como unique.
pero tu entiendes mejor tu problema y sabrás si te sirve así o no.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #8 (permalink)  
Antiguo 09/09/2009, 09:16
 
Fecha de Ingreso: agosto-2009
Mensajes: 53
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: problema llave primaria compuesta!!!!!

Ok huesos , lo checare, ayer ya no pude seguir termino mi jornada, pero lo intentare......

Cualquier cosa seguire pidiendote ayuda
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 18:42.