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

Error al duplicar PRIMARY KEY

Estas en el tema de Error al duplicar PRIMARY KEY en el foro de Mysql en Foros del Web. Hola a todos!! Tengo la siguiente factura: [IMG]E:\Sena\SQL\Ejercicio a desarrollar\Factura 1.jpeg[/IMG] He realizado la normalización hasta obtener la 3FN PEDIDO ( numped, numprov , mtotlped) ...
  #1 (permalink)  
Antiguo 15/08/2010, 19:57
 
Fecha de Ingreso: octubre-2008
Mensajes: 9
Antigüedad: 15 años, 6 meses
Puntos: 0
Error al duplicar PRIMARY KEY

Hola a todos!!

Tengo la siguiente factura:

[IMG]E:\Sena\SQL\Ejercicio a desarrollar\Factura 1.jpeg[/IMG]

He realizado la normalización hasta obtener la 3FN


PEDIDO (numped, numprov, mtotlped)
PEDIDOPROD (numped, numprod, cantped, subtlprod)
PRODUCTO (numprod, descprod, preuniprod)
PROVEEDOR (numprov, nomprov, dirprov)

Poseo una factura de un pedido, en esta factura existen 3 productos. El problema se presenta al tratar de insertar un 2do producto en la tabla PEDIDOPROD correspondiente a lamisma orden (el mismo numped). Yo se que no puedo duplicar una pk, entonces ¿como podría agregar 2,3 o 4 productos al mismo numero de orden?. Espero ser claro en el problema presentado, si no, porfavor permitamenlo saber.

Agradezco de antemano su colaboración y tiempo.
  #2 (permalink)  
Antiguo 15/08/2010, 20:14
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, 4 meses
Puntos: 2658
Respuesta: Error al duplicar PRIMARY KEY

1) No puedes poner un link hacia una imagen que está en tu propia computadora. Usa algún servicio de almacenamiento de imágenes como http://www.imageshake.com/ o algo así.

2) La tabla PEDIDOPROD debe tener por PK el campo numped más un campo de subitem que numere la lista de pedidos.

3) El campo numprod no es parte de la calve de la tabla, sino un FK que apunta a la tabla PRODUCTO.

4) En PEDIDO, el campo numprov tampoco es PK sino FK.

5) Lo que debe ir cambiando es el valor del subitem de la lista, cosa que deberás hacer en forma programática.
__________________
¿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 16/08/2010, 18:19
 
Fecha de Ingreso: octubre-2008
Mensajes: 9
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Error al duplicar PRIMARY KEY

Cita:
Iniciado por gnzsoloyo Ver Mensaje
1) No puedes poner un link hacia una imagen que está en tu propia computadora. Usa algún servicio de almacenamiento de imágenes como [URL]http://www.imageshake.com/[/URL] o algo así.
Excelente !! Con respecto al 1er punto agradezco su ayuda, muchas gracias.



Direccion URL de la imagen

https://www3.snapfish.co.uk/snapfishuk/shareeloginsubmit/p=77161282002879073/l=1575472011/g=5248506011/cobrandOid=1007/COBRAND_NAME=snapfishuk/otsc=SYE/otsi=SABE/pns/snapfishuk/share/p=77161282002879073/l=1575472011/g=5248506011/cobrandOid=1007/COBRAND_NAME=snapfishuk/otsc=SYE/otsi=SABE


Como se puede observar en la imagen, es un solo pedido. El pedido contiene 3 articulos de diferentes codigos cada uno. Al ingresar el primer producto en la tabla pedidoprod no presenta ningun problema, pero al insertar el 2do producto, no me permite repetir la PK (Es logico). Porfavor indiquenme la manera correcta de relacionar la tabla principal con la segundaria?

PEDIDO (numped(PK), numprov(FK), mtotlped)
PEDIDOPROD (numped(PK), numprod(FK), cantped, subtlprod)
PRODUCTO (numprod(PK), descprod, preuniprod)
PROVEEDOR (numprov(PK), nomprov, dirprov)

Sintaxis

CREATE TABLE proveedor (
numprov int(20) not null,
nomprov varchar(20) not null,
dirprov varchar(20) not null,
PRIMARY KEY(numprov)
)
ENGINE =InnoDB;

CREATE TABLE producto (
numprod int(20) not null,
descprod varchar(20) not null,
preuniprod int(20) not null,
PRIMARY KEY(numprod)
)
ENGINE =InnoDB;

CREATE TABLE pedidoprod (
numped int(20) not null,
numprod int(20) not null,
cantped int(20) not null,
subtlprod int(20) not null,
PRIMARY KEY(numped),
Index(numprod),
FOREIGN KEY(numprod) REFERENCES producto (numprod)
ON UPDATE CASCADE ON DELETE CASCADE )
ENGINE =InnoDB;

CREATE TABLE pedido (
numped int(20) not null,
numprov int(20) not null,
mtotlped int(20) not null,
PRIMARY KEY(numped),
Index(numprov),
FOREIGN KEY(numprov) REFERENCES proveedor (numprov)
ON UPDATE CASCADE ON DELETE CASCADE )
ENGINE =InnoDB;

Cita:
Iniciado por gnzsoloyo Ver Mensaje

2) La tabla PEDIDOPROD debe tener por PK el campo numped más un campo de subitem que numere la lista de pedidos.
Como puedo crear uun campo subitem que enumere la lista de pedidos si es un solo pedido?


Agradezco de antemano su colaboración y tiempo.

Gracias !!
  #4 (permalink)  
Antiguo 16/08/2010, 18:21
 
Fecha de Ingreso: octubre-2008
Mensajes: 9
Antigüedad: 15 años, 6 meses
Puntos: 0
Por favor ayuda!!!

Alguien quien me pueda ayudar !!!

De antemano muchas gracias

Última edición por sincos; 17/08/2010 a las 18:16

Etiquetas: duplicar, key
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:18.