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

[SOLUCIONADO] ¿Por qué no se puede repetir una PK en cada fila?

Estas en el tema de ¿Por qué no se puede repetir una PK en cada fila? en el foro de Bases de Datos General en Foros del Web. Hola, Entiendo que un principio de la informática es no repetir datos, pero porqué no puedo tener tener la misma PK en cada fila , ...
  #1 (permalink)  
Antiguo 30/10/2016, 11:48
 
Fecha de Ingreso: diciembre-2013
Mensajes: 16
Antigüedad: 10 años, 3 meses
Puntos: 1
¿Por qué no se puede repetir una PK en cada fila?

Hola, Entiendo que un principio de la informática es no repetir datos, pero porqué no puedo tener tener la misma PK en cada fila , para los productos que formen parte de la factura? Ya sé que las PK siempre van con enteros, pero esto solo es un ejemplo.
Código:
PRODUCTOS(
  idProducto, 
  nombre, 
  precio);

FACTURAS(
  idFactura,
  fecha, 
  producto,
  FOREIGN KEY (producto) references PRODUCTOS(idProducto) 
  );
FACTURAS
idFac | fecha | producto
1 | 11/1 | prod1
1 | 11/1 | prod2
2 | 11/2 | prod5
2 | 11/2 | prod2

Según vi por internet , separan la tabla productos de facturas y las unen en una 'detalles' que tenga idDetalle, idFactura, idProducto.
[URL="http://www.hermosaprogramacion.com/2014/07/sistema-facturacion-base-datos/"]http://www.hermosaprogramacion.com/2014/07/sistema-facturacion-base-datos/[/URL]
Pero tambien repiten la idFactura en la tabla detalles. ¿Porqué es mejor ese método?
No lo comprendo
  #2 (permalink)  
Antiguo 30/10/2016, 11:58
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: ¿Por qué no se puede repetir una PK en cada fila?

Si se puede, pero tienes que tener una llave compuesta que es esto una llave en donde tus campos sean id_producto e id_factura asi tendrias por ejemplo esto:

id_factura id_producto
1 2
1 3

Estas repitiendo la factura, pero como la llave primaria es compuesta entonces no se considera un dato repetido
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 30/10/2016, 15:55
 
Fecha de Ingreso: diciembre-2013
Mensajes: 16
Antigüedad: 10 años, 3 meses
Puntos: 1
Respuesta: ¿Por qué no se puede repetir una PK en cada fila?

Gracias por responder, no sabía lo de clave primaria multiple. Pero resulta que la que podría ser la segunda PK la tengo como FK, seguiré el ejemplo de la web que puse.

Etiquetas: cada, ip, repetir
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 01:36.