Bases de Datos - como relacionar 2 tablas varios a varios

 
Vista:

como relacionar 2 tablas varios a varios

Publicado por giuliano (1 intervención) el 21/06/2014 19:13:10
Buenas a todos.

Tengo una tabla de un sistema clasico como es el de facturacion.

Un ticket tiene varios productos, y el mismo producto puede figurar en varios tickets, entonces:

productos (#idproducto,nombre,precio)
tickets(#idticket, monto)

prodticket(idproducto, idticket)

La pregunta seria
1- luego de que el cliente cargo los articulos en el formulario: como asigno los productos al ticket, es decir: como se sabe que productos le corresponden a un ticket,

(supongo que debo obtener el idproducto generado y el idticket generado para insertar la tupla en la tabla prodticket)
y
2-al hacer una venta debo hacer un insert en tickets, y en prodtickets?(de esta forma va a redundar el idticket o que?)

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

como relacionar 2 tablas varios a varios

Publicado por ramironikolas (17 intervenciones) el 26/06/2014 18:50:46
El diseño de tablas que propones es correcto y la solución tambien. La redundancia de los campos de clave primaria que participan en una clave foranea no se puede evitar es parte de la implentación del concepto de modelo relacional.
De aquí que surjan patrones de diseño de BD como el de clave subrogada para evitar que esa redundancia se traduzca en un consumo excesivo de recursos de almacenamiento.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 2 puestos en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

como relacionar 2 tablas varios a varios

Publicado por Salvador (10 intervenciones) el 27/06/2014 08:53:49
Hola giuliano,

Los tickets está relacionado con las ventas y la venta con detalles de la venta que esto seria asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
DB: Tickets
IDTICKET
VENTAID
 
 
DB: Ventas
IDVENTA
TOTALVENTA
...
...
 
 
DB: DetallesVenta
IDVENTADETALLE
PRODUCTOID
UNIDAD
PRECIO
VENTAID
...
...
 
 
DB: Productos
IDPRODCUTO
CODIGO
DESCRIPCIONPRODUCTO
PVP
...
...


y para hacer una consulta de los productos que lleva un ticket seria:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT
    DV.PRODUCTOID
    ,P.CODIGO
    ,P.DESCRIPCIONPRODUCTO
    ,DV.UNIDAD
    ,DV.PRECIO
    ,(DV.PRECIO * DV.UNIDAD) AS IMPORTE
  FROM Tickets AS T
    INNER JOIN Ventas AS V
      ON V.IDVENTA = T.VENTAID
    INNER JOIN DetallesVenta AS DV
      ON DV.VENTAID = V.IDVENTA
    INNER JOIN Productos AS P
      ON P.IDPRODUCTO = DV.PRODUCTOID
  WHERE T.IDTICKET = 546


Espero que te sirva de orientación

Un saludo.

_________________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar