Sie sind auf Seite 1von 7

Actividad de la tiendita en MYSQL

Alumno: Mariel Cruz Mendoza


Reglas a seguir:
Regla 1: No se pueden registrar cantidades negativas tanto
en la existencia del producto como en la cantidad a vender.
Regla 2: La fecha que registre la nota debe ser la del sistema
de forma automtica.
Regla 3: No se pueden vender cantidades de productos que
excedan la cantidad de productos existentes.
Regla 4: Cada vez que se venda n unidades de producto,
deber disminuir n existencias del mismo.
SCRIPT DE LA BASE DE DATOS
create table Producto ( p_id_producto int auto_increment primary
key, p_nombre varchar (20) not null, p_unidad varchar (10) not n
ull, p_existencia int check (p_existencia>=0),p_precio_unitario
float not null )
create table Nota( n_id_nota int auto_increment primary key not
null, n_fecha date not null )
create table Vender ( v_id_producto int not null, v_id_nota int
not null, v_cantidad float check (v_cantidad>0), constraint pk_n
ota primary key (v_id_producto,v_id_nota), constraint
vender_nota foreign key (v_id_nota) references Nota (n_id_nota),
constraint vender_producto foreign key (v_id_producto) reference
s Producto (p_id_producto) )

Regla 2: Obtener la fecha del sistema.


El tipo de dato utilizado en la tabla Nota, en la columna fecha fue date, por
tanto para obtener la fecha del sistema se realiza de la siguiente manera:

PROCEDIMIENTO QUE PERMITE INSERTAR UN PRODUCTO


delimiter $$
create procedure insertaProducto
(
in nombre varchar (20),
in unidad varchar (10),
in existencia int, in precio float
)
begin
if existencia < 0 then
select 'La existencia del producto no puede ser negativa' as mensaje1;
end if;
if existencia = 0 then

select 'Por favor ingresa productos disponibles' as mensaje2;


end if;
if existencia > 0 then
insert into producto values (nombre,unidad,existencia,precio);
select 'El producto se guardo con exito' as mensaje3;
end if;
end;

Nota: para mandar llamar un procedimiento en mysql se utiliza call


nombreProcedimiento (campo1, campo2, campo3), pero en mi caso lo
realice grafico dado a que no me lo permite, puesto que lo realiza de la
siguiente manera:
Introduzco la lnea que manda a llamar el procedimiento:

Al darle clic en continuar me realiza la siguiente accin, en lugar de


mostrarme el mensaje correspondiente:

Pero no me guarda el producto El procedimiento si funciona! Por que si


lo ejecuto grficamente si realiza lo que debe de hacer.
EJECUTAR EL PROCEDIMIENTO ALMACENADO insertaProducto

Regla 1: Si la existencia del producto es negativa

Si la existencia es igual a cero

Si la existencia es mayor que cero permite guardar el producto

PROCEDIMIENTO ALMACENADO QUE PERMITE REALIZAR UNA VENTA


delimiter &&
create procedure realizarVenta
(
in nota int,
in cantidad float,
in nombre varchar (20)
)

begin
declare exist int;
declare idprod int;
if cantidad<0 then
select 'La cantidad a vender no puede ser negativa' as mensaje;
end if;
if cantidad=0 then
select 'Imposible no vender ningun producto' as mensaje1;
end if;
select p_existencia into exist from producto where p_nombre=nombre;
select p_id_producto into idprod from producto where p_nombre=nombre;
if cantidad>exist then
select 'La cantidad excede la existencia de productos' as mensaje2;
end if;
if exist=0 then
select 'El producto se ha terminado' as mensaje3;
end if;
if cantidad>0 then
if cantidad<=exist then
insert into vender values (idprod,nota,cantidad);
update producto set p_existencia=exist-cantidad where p_nombre=nombre;
select n_id_nota as 'Nota',p_nombre as 'Nombre Producto', v_cantidad as
'Cantidad' ,p_precio_unitario as 'Precio Unitario',
(v_cantidad*p_precio_unitario) as 'subtotal'
from producto, vender, nota
where p_id_producto=v_id_producto & n_id_nota=v_id_nota & n_id_nota=nota;
select sum (v_cantidad * p_precio_unitario) as 'Total de Venta'
from producto, vender, nota
where p_id_producto=v_id_producto and
n_id_nota=v_id_nota and
n_id_nota=nota;
select 'El producto ha sido vendido' as mensaje4;
end if;
end if;
end
EJECUTAR EL PROCEDIMIENTO ALMACENADO realizarVenta
call realizarVenta (1,-3,'Cafe') es la manera de ejecutar un procedimiento
almacenado pero al no devolverme ningn valor, las pruebas las hice graficas:

Regla 1: Si la cantidad a vender es negativa, no se realiza venta.

Si la cantidad a vender es igual a cero.

Si la existencia de un producto es igual a cero

Regla 3: Si la cantidad a vender es mayor que la existencia del producto.

Regla 4:
Productos existentes antes de realizar una venta

Ejecucin del procedimiento almacenado Realizar Venta


(numero de nota, cantidad, nombre producto)

Existencia de los productos despus de haber realizado una venta

Das könnte Ihnen auch gefallen