Quisiera que me ayuden con este ejercicio de PLSQL porque estoy un poco estancado y nose seguir.Este es el ejercicio:
Base de datos de la empresa “SNP CEU”, que se va a dedicar a la gestión de venta y compra de productos financieros. La base de todo es que los productos se compran y se venden. Todos tienen un precio de compra y otro de venta, si se compran más baratos que se venden el cliente ganará dinero, de igual forma si se venden más caros y luego se compran más baratos, también se ganará. Para simplificar la tarea vamos a suponer que las operaciones se hacen o deshacen en bloques, es decir, si compro 100, luego vendo 100, y no puedo vender 34. De cada producto financiero se tienen los siguientes datos:
• ID.
• Nombre. El nombre del producto, por ejemplo IBEX35 o Telefónica.
• Tipo. Si es un índice, divisa, acción, etc.
• Precio de venta.
• Precio de compra.
• Apalancamiento. Es la cantidad que necesitamos depositar en garantía. Por ejemplo, si el apalancamiento es de 1/40, y el cliente invierte 400€, únicamente deberemos restar 10€ de su saldo (garantía).
Obviamente también necesitamos guardar información sobre los clientes:
• ID. Será el correo electrónico.
• Nombre. Nombre completo.
• Dirección. Dirección postal.
• Saldo. Es el dinero que tiene para invertir.
Sus operaciones:
• ID_Cliente.
• ID_Producto
• Fecha y hora en que realizó la operación.
• Unidades compradas/vendidas.
• Precio al que se compra/vende.
• Tipo. Compra o venta.
Y su cartera:
• ID_Cliente.
• ID_Producto.
• Cantidad. La cantidad de unidades de ese producto que tiene. Puede ser un número positivo o negativo (si ha realizado una venta y está esperando para comprar).
Todos estos datos se pueden guardar en cuatro tablas.
Necesitaríamos un paquete PL/SQL que facilitara en alguna medida la gestión de esta base de datos. Debería desarrollarse al menos lo siguiente:
• Función Comprar. Se le pasa como parámetro el ID del cliente, del producto y la cantidad, y debe realizar la operación siempre que sea posible. La cantidad viene expresada en unidades (acciones, divisas, etc). Devuelve cierto o falso dependiendo de si se hace o no la operación. Realizar la compra conlleva:
o Comprobar la cartera del cliente. Si tiene una cantidad negativa o positiva, lo que se hace es sumar la cantidad a esta. Si no tiene ninguna, se crea un nuevo registro con esa cantidad.
o En el caso de tener una cantidad negativa, buscar la última venta del cliente, con la que se abrió la operación, sumar al saldo del cliente la garantía y comparando precio de venta y compra, aumentar también su saldo.
o En el caso de no tener antes este producto, insertar la operación correspondiente en la tabla de operaciones y el producto en la cartera, quitar del saldo del cliente la garantía correspondiente, teniendo en cuenta el precio de compra y el apalancamiento.
• Función Vender. Funciona de forma parecida, pasándole el ID del cliente y del producto. Devuelve cierto si se realizó la venta y falso si no.