Enunciado #
Una tienda necesita gestionar las compras realizadas por sus clientes. En cada compra se pueden adquirir uno o más productos, indicando la cantidad comprada de cada uno.
El documento permite elegir los atributos. Para que puedas comparar tu diagrama con la solución del challenge, usaremos los siguientes datos.
Datos que debes almacenar #
- Cliente:
id_cliente (entero, identificador, autoincremental), nombre (texto) y email (texto).
- Producto:
id_producto (entero, identificador, autoincremental), nombre (texto) y precio (decimal; precio actual de venta).
- Compra:
id_compra (entero, identificador, autoincremental), fecha (fechahora) y id_cliente (entero).
- DetalleCompra:
id_compra (entero), id_producto (entero), cantidad (entero) y precio_unitario (decimal; precio de venta en el momento de la compra).
Reglas del negocio #
- Un cliente puede realizar varias compras y cada compra pertenece a un único cliente.
- Una compra contiene uno o más productos y un producto puede aparecer en varias compras.
- Cada producto aparece una sola vez por compra; si se adquieren varias unidades, se incrementa su cantidad. Usa
(id_compra, id_producto) como PK compuesta de DetalleCompra.
- La cantidad debe ser mayor que cero y los precios no pueden ser negativos.
- El precio unitario de una línea se conserva aunque cambie el precio actual del producto. El total se calcula sumando
cantidad × precio_unitario de sus líneas y no se almacena en otra columna.
- Todos los campos son obligatorios.
Diseña las cuatro tablas y sus conexiones.
Criterios para el challenge #