Proyecto final

PROYECTO FINAL



FINAL BASE DE DATOS I

  1. Definir el enunciado del problema a sistematizar según las necesidades detectadas. (Debe ser Claro y tener mínimo 8 tablas) (Entrega 1)

Una tienda minorista tiene dificultades para mantener un control de su inventario. El sistema actual basado en registros manuales en hojas de cálculo y manejo de información por sistemas no adecuados como WhatsApp, ha generado problemas como pérdida de información, dificultad para gestionar productos de baja existencia, errores en los pedidos a proveedores, y falta de control sobre las devoluciones. Estos problemas han resultado en productos fuera de inventario, exceso de inventario de productos no deseados, y pérdidas financieras debido a la mala gestión de las devoluciones.

Las necesidades principales:

  • Gestión efectiva de productos y proveedores.
  • Registro y control de pedidos.
  • Gestión detallada de las ventas, incluyendo productos vendidos y clientes.
  • Manejo de devoluciones.
  • Generación de reportes sobre productos más vendidos, existencias bajas.

2 REALIZAR LO SIGUIENTE:

2.1. Darle un nombre a la base de datos.

R\\: Inventario 

2.2. Listado de tablas que llevara la BD. (Cuales son referenciales y cuales son de movimiento)

R\\: 

Tablas referenciales

  • Productos
  • Proveedores
  • Clientes

Tablas de movimiento

  • Ventas
  • Detalles_Venta
  • Pedidos_Proveedores
  •  Detalles_Pedido 


Relaciones:

Productos:

  • Un producto puede aparecer en muchos detalles de ventas y en muchos detalles de pedidos.

    • Relación con Detalles_Venta: 1 producto → N detalles de venta.
    • Relación con Detalles_Pedido: 1 producto → N detalles de pedido.
Proveedores:

Un proveedor puede tener muchos pedidos.

  • Relación con Pedidos_Proveedores: 1 proveedor → N pedidos.
Clientes:


  • Un cliente puede realizar muchas ventas.

    • Relación con Ventas: 1 cliente → N ventas (opcional).


Ventas:

  • Una venta puede tener muchos detalles de venta.

    • Relación con Detalles_Venta: 1 venta → N detalles de venta.

Detalles_Venta:

  • Detalles_Venta pertenecen a una venta y a un producto.

    • Relación con Ventas: N detalles → 1 venta.
    • Relación con Productos: N detalles → 1 producto.
     

Pedidos_Proveedores:

  • Un pedido puede tener muchos detalles de pedido.

    • Relación con Detalles_Pedido: 1 pedido → N detalles de pedido
     

Detalles_Pedido:

  • Detalles_Pedido pertenecen a un pedido y a un producto.

    • Relación con Pedidos_Proveedores: N detalles → 1 pedido.
    • Relación con Productos: N detalles → 1 producto.
     

2.3. Diseñar el diccionario de datos de cada tabla (campo, nombre el campo, tipo, tamaño y descripción).

R\\:


2.4. Montar o diseñar el modelo entidad relación y dibujar el Diagrama relacional.

3. Crear la BD y las tablas respectivas en MySQL.

3.1:(guardar evidencias del código MySQL con el que resuelva dicha actividad) e insertar 10 registros en cada tabla

4. Diseñar ejercicios en los que se apliquen los diferentes comandos que se utilizaron durante el semestre con su respectivo análisis y resultados.

Crear un procedimiento para insertar un producto en la tabla producto

R//:

Análisis:

Qué desea mostrar:

  • Crear un procedimiento que permita insertar un nuevo producto en la tabla producto con los datos proporcionados (ID del producto, nombre, precio de costo, precio de venta, y cantidad disponible).

Tablas involucradas:

  • producto

Relaciones:

  • No se requieren relaciones con otras tablas ya que la inserción se realiza solo en la tabla producto.

Función a utilizar:

  • CREATE PROCEDURE
  • INSERT INTO

Código:

MariaDB [inventario]> Delimiter // 

MariaDB [inventario]> Create procedure insertar_producto( in _id_producto char(20), in _nombre char(45), in _Precio_costo int(45), in _Precio_venta int(45), in _Disponible int(45))

 -> Begin 

 -> Insert into producto values(_id_producto, _nombre, _Precio_costo, Precio_venta,Disponible);

 -> end 

 -> // 

MariaDB [inventario]> Delmiter  ;

MariaDB [inventario]> Call insertar_producto("P0011"," Refrigerador Toyota",2000000,0,0); Query OK, 1 row affected (0.003 sec)  



Crear un procedimiento para listar todos los productos

R//:

Análisis:

Qué desea mostrar:

  • Listar todos los productos almacenados en la tabla producto con todos sus campos.

Tablas involucradas:

  • producto

Relaciones:

  • No se requieren relaciones con otras tablas ya que solo se necesita consultar la tabla producto.

Función a utilizar:

  • CREATE PROCEDURE
  • SELECT

Código:

MariaDB [inventario]> Delimiter // 

MariaDB [inventario]> Create procedure listar_producto() 

 -> Begin 

 -> Select * from producto; 

 -> end 

 -> // 

 MariaDB [inventario]> Delimiter  ;

MariaDB [inventario]> call listar_producto; 

show create procedure listar_producto;

Crear un procedimiento para consultar un producto específico por ID

R//:

Análisis:

Qué desea mostrar:

  • Consultar y mostrar los detalles de un producto específico en la tabla producto, utilizando el id_producto como criterio de búsqueda.

Tablas involucradas:

  • producto

Relaciones:

  • No se requieren relaciones con otras tablas, ya que la consulta se realiza únicamente en la tabla producto.

Función a utilizar:

  • CREATE PROCEDURE
  • SELECT

Código:

MariaDB [inventario]> Create procedure consultar_producto(in _id_producto char(20)) 

 -> Begin

 -> select * from producto where id_producto=_id_producto;

-> End 

 -> // 

MariaDB [inventario]> Delimiter  ;

MariaDB [inventario]> show procedure status;

MariaDB [inventario]> call consultar_producto("P002");

Crear un procedimiento para eliminar un producto específico por ID

R//:

Análisis:

Qué desea mostrar:

  • Eliminar un producto de la tabla producto usando el id_producto como criterio para identificar el registro a eliminar.

Tablas involucradas:

  • producto

Relaciones:

  • No se requieren relaciones con otras tablas, ya que la eliminación se realiza únicamente en la tabla producto.

Función a utilizar:

  • CREATE PROCEDURE
  • DELETE

Código:

MariaDB [inventario]> Delimiter // 

MariaDB [inventario]> Create procedure eliminar_producto(in _id_producto char(20)) 

 -> Begin 

 -> Delete from producto where id_producto=_id_producto; 

 -> End 

 -> // 

MariaDB [inventario]> Delimiter  ;

MariaDB [inventario]> show procedure status;

MariaDB [inventario]> call eliminar_producto("P0011");

Query OK, 1 row affected (0.003 sec)

MariaDB [inventario]> select * from producto;

Crear un procedimiento para modificar un producto específico por ID

R//:

Análisis:

Qué desea mostrar:

  • Actualizar los datos de un producto existente en la tabla producto utilizando el id_producto para identificar el producto, permitiendo modificar su nombre, precio de costo, precio de venta y cantidad disponible.

Tablas involucradas:

  • producto

Relaciones:

  • No se requieren relaciones con otras tablas, ya que la actualización se realiza únicamente en la tabla producto.

Función a utilizar:

  • CREATE PROCEDURE
  • UPDATE

Código:

MariaDB [inventario]> Delimiter // 

MariaDB [inventario]> Create procedure modificar_producto(in _id_producto char(20), in _nombre char(45), in _Precio_costo int(45), in _Precio_venta int(45), in _Disponible int(45)) 

 -> Begin 

 -> Update producto set nombre = _nombre, Precio_costo = _Precio_costo, Precio_venta = _Precio_venta, Disponible = _Disponible where id_producto = _id_producto; 

 -> End 

 -> // 

MariaDB [inventario]> Delimiter  ;

MariaDB [inventario]> call modificar_producto("P010","Plancha_Toyota", 90000, 0, 70);

Query OK, 1 row affected (0.004 sec)

MariaDB [inventario]> select * from producto;

Actualizar el precio de venta en la tabla de productos

R//:

Análisis:

Qué desea mostrar:

  • Actualizar el campo Precio_venta de cada producto en la tabla producto, incrementándolo en un 25% sobre el Precio_costo.

Tablas involucradas:

  • producto

Relaciones:

  • No se necesitan relaciones externas ya que el ajuste se realiza dentro de la misma tabla producto.

Función a utilizar:

  • UPDATE

Código:

 update producto set Precio_venta = Precio_costo + (Precio_costo * 0.25); 

Visualizar el valor del producto más barato

R//:

Análisis:

Qué desea mostrar:

  • El valor del Precio_venta más bajo entre todos los productos de la tabla producto.

Tablas involucradas:

  • producto

Relaciones:

  • No se requieren relaciones externas, ya que el cálculo se realiza únicamente en la tabla producto.

Función a utilizar:

  • SELECT
  •  MIN

Código:

select min(Precio_venta) "Valor producto más barato" from producto; 

Comando que actualiza el nombre de un proveedor identificado por un id_proveedor específico.

Análisis:

Qué desea mostrar:

  • Actualizar el campo nombre de un proveedor en particular.

Tablas involucradas:

  • proveedores: 

Relaciones:

  • Este comando no requiere relaciones entre tablas ya que la actualización es específica a la tabla proveedores.

Función a utilizar:

  • UPDATE: 

Código:

update proveedores set nombre="TecnoElectro_Toyota" where id_proveedor="PR004"; 

Consulta que muestra los detalles de ventas de productos cuyo Precio_costo es mayor a 1,000,000. La consulta utiliza una consultas  anidada.

Análisis:

Qué desea mostrar:

  • Mostrar las ventas de aquellos productos que tienen un costo superior a 1,000,000.


Tablas involucradas:

  • Detalles_Venta: 
  • producto:

Relaciones:

  • Detalles_Venta.FK_producto = producto.id_producto: 

Función a utilizar:

  • SELECT 
  •  WHERE

Código:

select id_detalleVent, Cantidad_vendida, FK_venta, FK_producto from Detalles_Venta where FK_producto in(select id_producto from producto where Precio_costo > 1000000); 

Consulta que muestra los productos cuyo inventario es menor a 50 unidades.

Análisis:

Qué desea mostrar:

  • Identificar los productos con baja disponibilidad en inventario.

Tabla involucrada:

  • producto: 

Relaciones:

  • No se necesitan relaciones con otras tablas.

Función a utilizar:

  • SELECT 
  • WHERE

Código:

select id_producto, nombre, disponible from producto where Disponible < 50; 

Visualizar los detalles de ventas con información del cliente y producto

R//:

Análisis:

Qué desea mostrar:

  • Información de las ventas, incluyendo:
    • ID de la venta.
    • Fecha de la venta.
    • Nombre del cliente.
    • Nombre del producto.
    • Cantidad vendida.

Tablas involucradas:

  • venta
  • cliente
  • Detalles_Venta
  • producto

Relaciones:

  • venta.FK_cliente = cliente.id_cliente: Relaciona cada venta con el cliente correspondiente.
  • venta.id_venta = Detalles_Venta.FK_venta: Relaciona cada venta con sus detalles específicos en la tabla Detalles_Venta.
  • Detalles_Venta.FK_producto = producto.id_producto: Vincula cada producto vendido en una venta específica.

Función a utilizar:

  • INNER JOIN

Código

select venta.id_venta, venta.Fecha, cliente.nombre AS nombre_cliente, producto.Nombre AS Nombre_producto, Detalles_Venta.Cantidad_vendida from venta inner join cliente on venta.FK_cliente = cliente.id_cliente inner join Detalles_Venta on venta.id_venta = Detalles_Venta.FK_venta inner join producto on Detalles_Venta.FK_producto = producto.id_producto;

Crear una copia de la tabla cliente

R//:

Análisis:

Qué desea mostrar:

  • Crear una nueva tabla llamada copia que tenga la misma estructura de la tabla cliente.

Tablas involucradas:

  • cliente (tabla original a copiar).
  • copia 

Relaciones:

  • No se necesitan relaciones con otras tablas, ya que este comando solo hace una copia de la tabla cliente

Función a utilizar:

  • CREATE TABLE  LIKE 

Código

create table copia like cliente;

TXT.Con_todos_los-Comandos:

algoritmos II / Actividades / Todos los derechos reservados
Creado con Webnode Cookies
¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar