Mis ejemplos propuestos BD Tiendas

 script base de datos Tienda

CREATE TABLE productos (

    producto_id INT PRIMARY KEY,

    nombre VARCHAR(50),

    descripcion VARCHAR(255),

    precio DECIMAL(10,2)

);

CREATE TABLE ventas (

    venta_id INT PRIMARY KEY,

    producto_id INT,

    cantidad INT,

    fecha_venta DATE,

    FOREIGN KEY (producto_id) REFERENCES productos (producto_id)

);

CREATE TABLE inventario (

    producto_id INT PRIMARY KEY,

    cantidad INT,

    FOREIGN KEY (producto_id) REFERENCES productos (producto_id)

);

INSERT INTO productos (producto_id, nombre, descripcion, precio)

VALUES 

(1, 'Producto 1', 'Descripción del producto 1', 10.50),

(2, 'Producto 2', 'Descripción del producto 2', 20.25),

(3, 'Producto 3', 'Descripción del producto 3', 15.75),

(4, 'Producto 4', 'Descripción del producto 4', 5.00),

(5, 'Producto 5', 'Descripción del producto 5', 12.35);


INSERT INTO inventario (producto_id, cantidad)

VALUES 

(1, 10),

(2, 15),

(3, 7),

(4, 20),

(5, 12);


INSERT INTO ventas (venta_id, producto_id, cantidad, fecha_venta)

VALUES 

(2, 2, 1, '2023-04-18'),

(3, 3, 5, '2023-04-19'),

(4, 5, 2, '2023-04-19'),

(5, 4, 4, '2023-04-19');


Trigger:

Enunciado: Cree un trigger que se active cuando se inserte una nueva fila en la tabla "ventas", y actualice la columna "cantidad" en la tabla "inventario" restando la cantidad vendida.


Código fuente:


create trigger Tr_Actualizar_Inventario

on ventas 

After insert 

as

begin

update inventario

set inventario.cantidad = inventario.cantidad - inserted.cantidad

from inventario

inner join  inserted on inventario.producto_id = inserted.producto_id;

end



Vistas:

Enunciado: Cree una vista que muestre el nombre y la cantidad de ventas de cada producto en el último mes.


Código fuente:

CREATE VIEW vista_ventas_ultimo_mes AS

SELECT p.nombre, SUM(v.cantidad) AS cantidad_ventas

FROM productos p

INNER JOIN ventas v ON p.producto_id = v.producto_id

WHERE v.fecha_venta >= DATEADD(month, -1, GETDATE())

GROUP BY p.nombre;



Procedimiento almacenado:

Enunciado: Cree un procedimiento almacenado que acepte el ID de un producto y una cantidad, y actualice la tabla "inventario" agregando esa cantidad al inventario existente.


Código fuente:


CREATE PROCEDURE sp_agrega_inventario

    @producto_id INT,

    @cantidad INT

AS

BEGIN

    UPDATE inventario

    SET cantidad = cantidad + @cantidad

    WHERE producto_id = @producto_id;

END


Funciones:

Enunciado: Cree una función que acepte un precio como parámetro y devuelva el precio con un descuento del 10%.


Código fuente:

CREATE FUNCTION fn_aplica_descuento

    (@precio DECIMAL(10,2))

RETURNS DECIMAL(10,2)

AS

BEGIN

    DECLARE @precio_con_descuento DECIMAL(10,2);

    SET @precio_con_descuento = @precio * 0.9;

    RETURN @precio_con_descuento;

END



Seguridad en la base de datos:

Enunciado: Cree un usuario llamado "Miguel" con permisos de lectura en la tabla "ventas".


Código fuente:

CREATE LOGIN Miguel WITH PASSWORD = 'password';

CREATE USER miguel FOR LOGIN Miguel;

GRANT SELECT ON ventas TO Miguel;



Comentarios

Entradas populares