Tienes bastantes variables, así que debes ir por pasos.
Busca en google por "formas normales", "normalizar tablas", etc.
Se trata de crear tantas tablas como sean necesarias, pero, que no haya filas duplicadas en cada tabla.
He tomado algunas decisiones (creo que lógicas) aunque no sé si serán reales para tu caso:
- La comisión dependerá del producto vendido y del embalaje, (se supone que al vender por botellas, la comisión será menor)
- Cada Cliente tendrá un precio según el embalaje y el producto (el precio será menor si compra por caja entera que por botella)
No he tenido en cuenta el volumen de venta, eso sería otra tabla más, por ejemplo, si el mismo cliente compra más de 30 cajas, se le debería aplicar un descuento.
Este ejemplo como servir de punto de partida, pero ten en cuenta que una pequeña variante, puede modificar muchisimo este esquema de tablas:
Código:
Tabla Productos:
cod_producto Descripcion Unidades_que_posee
1 caja vino x12 12
2 caja vino x24 24
Tabla Embalaje:
cod_Embalaje Descripcion
1 vendida por caja entera
2 vendida por media caja
3 vendida por unidad
Tabla Tarifa: (Clave primaria formada por los 3 primeros campos a la vez)
cod_Producto cod_Embalaje cod_cliente Precio
1 1 1 10 €
1 2 1 11 €
1 3 1 14 €
Tabla Comision: (Clave primaria formada por los 3 primeros campos a la vez)
cod_comision cod_Producto cod_Embalaje comision
1 1 1 1 %
2 1 2 0.7 %
3 1 3 0.3 %
El problema sería atacar esta información, que puede llegar a ser muy lento si no se restringe al máximo la petición a la base de datos.
PD: Lo contestado por
marcos, es totalmente compatible con este post.
Saludos