Set your presentation theme: Black (default) - White - League - Sky - Beige - Simple Serif - Night - Moon - Solarized
by Sebastian Chaves - Laura Santos - Jimmy Pulido
Base de datos para un centro de estética
Siguiendo las necesidades del centro de estética, consideramos oportuno dividir a los usuarios en las siguientes clasificaciones:
Los empleados, se dividirán en cuatro rangos de acceso según su cargo dentro del centro de estética:
Tendrán acceso a:
En el caso de Agendar citas tnedrá que consultar con el cliente y además deberá contar con un permiso dado por el recepcionista.
Son los encargados de atender directamente al cliente y manejar la caja, tendrán acceso a:
Encargado de Administrar la estética en general, el acceso a la base de datos será de tipo administrador.
Encargados de los servicios de limpieza y mantenimineto, solo tendrán acceso para modificar y consultar sus datos personales.
Los clientes tendrán las posibilidad de:
Modificar sus datos personales Cancelar citas programadas. *Sus consultas pueden ser: horario de trabajo de los empleados y su propia agenda de citas.
Ejemplo: Trigger que determina el valor acumulado de una compra al proveedor
<!-- DELIMITER $$ CREATE TRIGGER trig_adquis before INSERT ON Adquisicion FOR EACH ROW BEGIN declare sum_total int default 0; declare sum_parcial int default 0; set sum_parcial = (select CPRO_costo from CompraProveedor where CompraProveedor.idCompraProveedor = new.CompraProveedor_idCompraProveedor); set sum_total = sum_parcial + new.adq_preciocompra; update CompraProveedor set CPRO_costo = sum_total where CompraProveedor.idCompraProveedor = new.CompraProveedor_idCompraProveedor; END$$ DELIMITER ; -->
Ejemplo: Muestra la lista de ventas detalladas realizadas por los empleados
<!-- Create view ventas_realizadas as select ven_id, ven_fecha, Ven_costo,cli_cc, concat(cli_nombre,' ',cli_apellido) from Venta join Empleado on Ven_Emp_cc = Emp_cc join Cliente using (Cli_cc) where Emp_cc = (select user from mysql.user where user()=concat(mysql.user.user,"@",mysql.user.host)) ; -->
Ejemplo: Procedimiento que determina, dado un producto, la cantidad total
<!-- DELIMITER $$ CREATE PROCEDURE disponibilidad_produ(produ INT) BEGIN declare cantidad int default 0; set cantidad = (select count(idAdquisicion) from producto join adquisicion on (Producto_Pro_id = Pro_id) join inventario on ( Adquisicion_idAdquisicion = idAdquisicion) where Pro_id = produ and disponible = 1); select cantidad; END $$ DELIMITER ; -->
Ejemplo: Verifica la legitimidad de la compra proveedor
<!-- DELIMITER $$ create procedure proc_transaccion_compraProv(id int, produ_id int , id_compraProv int , adq_precio int , fecha_ven date) begin declare estado_i double; start transaction ; set estado_i = ( select Tran_estado_final from Transaccion order by idTransaccion desc limit 1 ); INSERT INTO `estetica`.`Adquisicion` (`idAdquisicion`, `Producto_Pro_id`, `CompraProveedor_idCompraProveedor`, `adq_preciocompra`, `Fecha_Vencimiento`) VALUES (id, produ_id, id_compraProv, adq_precio, fecha_ven); if (adq_precio > estado_i) then rollback; else commit; end if; end$$ delimiter ; -->
Ejemplo: Determina los productos vencidos tomando como referencia la fecha actual, me muestra los resultados
<!-- DELIMITER $$ CREATE PROCEDURE det_vencimiento() BEGIN declare done INT DEFAULT 0; declare fecha_ven date ; declare id int default 0; DECLARE det_venci cursor for select fecha_vencimiento, idAdquisicion from Adquisicion; Declare continue handler for sqlstate '02000' set done = 1; open det_venci; REPEAT fetch det_venci into fecha_ven, id ; if not done then if fecha_ven < curdate() then update inventario set inventario.disponible = 0, inventario.estado = 'rojo' where inventario.Adquisicion_idAdquisicion = id; end if; end if; until done END REPEAT; select idInventario, Pro_nombre,adq_preciocompra, fecha_vencimiento from inventario join Adquisicion on ( Adquisicion_idAdquisicion = idAdquisicion) join Producto on (Producto_Pro_id= Pro_id) where estado like '%rojo%'; close det_venci; END$$ DELIMITER ; -->