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 ;
-->