0% encontró este documento útil (0 votos)
19 vistas4 páginas

Evaluacion T2 BDA1

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
19 vistas4 páginas

Evaluacion T2 BDA1

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

Base de Datos: SOFTWAREDEV

La base de datos SOFTWAREDEV estará diseñada para una empresa que desarrolla software.
Esta base de datos contendrá tablas para gestionar Proveedores, Clientes, Facturas, Productos,
y Ordenes de Compra.

Esquema de la Base de Datos:

Datos en las tablas (Asegúrate de ejecutar estos scripts en el orden en el que las muestro
aquí para que las claves foráneas funcionen adecuadamente)
INSERT INTO Proveedores (ProveedorID, Nombre, Ciudad)

VALUES

('P001', 'Proveedor A', 'Lima'),

('P002', 'Proveedor B', 'Arequipa'),

('P003', 'Proveedor C', 'Cusco'),

('P004', 'Proveedor D', 'Trujillo'),

('P005', 'Proveedor E', 'Piura');

INSERT INTO Clientes (ClienteID, Nombre, FechaRegistro, LimiteCredito)

VALUES

('C001', 'Cliente 1', '2020-01-15', 1500.00),

('C002', 'Cliente 2', '2018-03-22', 2500.00),

('C003', 'Cliente 3', '2019-07-18', 3000.00),

('C004', 'Cliente 4', '2021-05-20', 3500.00),

('C005', 'Cliente 5', '2022-09-12', 1200.00);

INSERT INTO Productos (ProductoID, Descripcion, Precio, StockActual, StockMinimo)

VALUES

('PR001', 'Laptop HP', 2500.00, 50, 10),

('PR002', 'Monitor Dell', 800.00, 20, 5),

('PR003', 'Teclado Logitech', 150.00, 100, 20),


('PR004', 'Mouse Inalámbrico', 60.00, 300, 50),

('PR005', 'Disco Duro Externo', 450.00, 80, 10);

INSERT INTO Facturas (FacturaID, ClienteID, FechaFactura, Monto, EstadoFactura)

VALUES

('F001', 'C001', '2023-09-01', 3500.00, 1), -- Pendiente

('F002', 'C002', '2023-08-25', 1200.00, 2), -- Cancelada

('F003', 'C003', '2023-09-10', 2000.00, 1), -- Pendiente

('F004', 'C004', '2023-07-18', 4500.00, 2), -- Cancelada

('F005', 'C005', '2023-08-30', 1500.00, 1); -- Pendiente

INSERT INTO OrdenesCompra (OrdenID, ProveedorID, ProductoID, Cantidad, FechaOrden)

VALUES

('OC001', 'P001', 'PR001', 30, '2023-08-15'),

('OC002', 'P002', 'PR002', 50, '2023-08-20'),

('OC003', 'P003', 'PR003', 200, '2023-08-25'),

('OC004', 'P004', 'PR004', 150, '2023-09-01'),

('OC005', 'P005', 'PR005', 100, '2023-09-05');

Resumen de los datos de prueba:

1. Proveedores: 5 proveedores distribuidos en diferentes ciudades.

2. Clientes: 5 clientes con distintas fechas de registro y límites de crédito.

3. Productos: 5 productos con distintos precios y niveles de stock.

4. Facturas: 5 facturas con distintos montos y estados (pendiente, cancelada).

5. Ordenes de Compra: 5 órdenes de compra relacionadas con proveedores y productos.


Examen T2 - Base de Datos Avanzado 1

Fecha de entrega: Domingo 13 como máximo a las 11.59pm


Instrucciones: Desarrolla las sentencias T-SQL para los problemas planteados utilizando la base
de datos SOFTWAREDEV. Sigue las reglas de negocio para cada pregunta y asegúrate de aplicar
correctamente las transacciones y control de errores.

Parte 1: Uso de Variables y Condicionales

1. Facturas pendientes por cliente:

o Declara una variable para almacenar el código de un cliente y utiliza dicha variable para
mostrar el número de facturas pendientes (estado = 1) para ese cliente.

2. Suma de órdenes de compra para un proveedor:

o Declara una variable para almacenar el ID de un proveedor y luego muestra la cantidad


total de productos ordenados por ese proveedor.

3. Estado de facturas:

o Muestra la relación de todas las facturas junto con una observación dependiente del
estado (1: Pendiente, 2: Cancelada, 3: Anulada) usando la sentencia CASE.

4. Calcular el promedio de antigüedad de los clientes:

o Calcula el promedio de años desde que los clientes se registraron en la base de datos.
Si el promedio es mayor a 5 años, muestra "Cliente Antiguo", en caso contrario "Cliente
Nuevo".

Parte 2: Transacciones y Control de Errores

5. Actualización de stock de productos:

o Declara variables para un producto específico y su stock actual. Si el stock actual es


menor que el stock mínimo, actualiza el stock del producto añadiendo 100 unidades,
confirma la transacción si se cumple, o deshazla si no se cumple.

6. Manejo de facturas canceladas:

o Declara variables para gestionar una factura cancelada. Si la factura está en estado
"Cancelada" (estado = 2), no debe permitirse actualizar su monto. Controla este error
usando TRY/CATCH y muestra un mensaje de error

7. Inserción de una orden de compra:

o Declara variables correspondientes a una nueva orden de compra. Inserta el registro, y


controla los errores que puedan ocurrir (por ejemplo, si el proveedor o el producto no
existen, o si la cantidad es negativa) utilizando un bloque TRY/CATCH.

Parte 3: Lógica Avanzada y Procedimientos Almacenados

8. Descuento en facturas según el monto:


o Crea un procedimiento almacenado que aplique un descuento del 10% a las facturas
cuyo monto sea mayor a 2000 y estén en estado pendiente. Confirma la transacción si
el descuento se aplica correctamente; de lo contrario, deshaz la transacción.

9. Reasignación de stock:

o Implementa un procedimiento almacenado que revise el stock actual de los productos.


Si el stock actual es menor que el stock mínimo, se deberá realizar un pedido de 500
unidades al proveedor más cercano. El proveedor más cercano es aquel que se
encuentra en la misma ciudad del producto.

10. Reporte de ventas:

o Crea un procedimiento almacenado que genere un reporte con el total de ventas por
cliente. El reporte debe mostrar el nombre del cliente, la cantidad de facturas
canceladas, el monto total facturado, y un indicador de si tiene facturas pendientes
(Deudor o Sin Deudas).

Nota: Asegúrate de manejar correctamente las transacciones en cada ejercicio que lo requiera,
y utiliza bloques TRY/CATCH para manejar los errores.

También podría gustarte