PROYECTO FINAL
FINAL BASE DE DATOS I
- 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 dedicada a la venta de bicicletas, motocicletas y autos busca mejorar y sistematizar su proceso de ventas y manejo de inventario mediante la implementación de una base de datos que permita organizar y almacenar información relevante de sus operaciones internas. Actualmente, el manejo de la información se realiza de forma manual, lo que genera problemas como pérdida de datos, errores en el inventario y dificultades para realizar un seguimiento eficiente de las ventas.
La tienda requiere una base de datos que facilite el registro, control y seguimiento de los artículos disponibles para la venta, así como de los compradores y las transacciones realizadas.
2 REALIZAR LO SIGUIENTE:
2.1. Darle un nombre a la base de datos.
Bodega_MotosAndMas
2.2. Listado de tablas que llevara la BD. (Cuales son referenciales y cuales son de movimiento)
Producto
Marca
inventario
comprador_ventas
ventas
comprador
2.3. Diseñar el diccionario de datos de cada tabla (campo, nombre el campo, tipo, tamaño y descripción).
2.4. Montar o diseñar el modelo entidad relación.
2.5. Dibujar el Diagrama relacional.
Solucion de los puntos 2.3 y 2.5:
3. Crear la BD y las tablas respectivas en MySQL (guardar evidencias del código MySQL con el que resuelva dicha actividad) e insertar 10 registros en cada tabla (Entrega 2)
Copia de la base de datos:
https://1drv.ms/u/c/b392f991b539678c/EYzXhGBy7XlJoX-zcItaPkUBPjnaS9MqcdsO8LQyxn0Fgw?e=hsPWqE
Archivo de texto donde se muestra lo que hice:
https://1drv.ms/t/c/b392f991b539678c/EYIKU28q_HNBt6XEOL0RY8ABm-8d0x2X_U1RQveUmLJB3g?e=JIJ1Fi
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. (Entrega 3)
PRIMERA CONSULTA
Ingresar el total de la venta:
Analicis: se necestita multiplicar la cantidad de un producto por el valor de ese producto.
Tablas que se usaran:
Producto
Ventas
SINTAXIS: UPDATE ventas v join producto p ON v.CodigoProducto=p.CodigoProducto SET v.TotalVenta =(p.precio*v.cantidad);
UPDATE ventas v: Iniciamos la consulta de actualización especificando que queremos actualizar la tabla ventas. Usamos v como alias (nombre corto) para referirnos a esta tabla fácilmente dentro de la consulta.
JOIN producto p ON v.CodigoProducto = p.CodigoProducto:
Hacemos un JOIN entre la tabla ventas (alias v) y la tabla producto (alias p).
SET v.total = (p.precio * v.cantidad);:
Indico que quiero actualizar el campo total en cada registro de ventas (v.totalventas).
el valor que se ingresa sera el resultado de p.precio*v.cantidad.
SEGUNDA CONSULTA:
Listado de compradores y sus compras:
Analicis: se necesita la acceder a los nombres de los compradores, sus compras y la cantidad .
Tablas involucradas:
comprador
comprador_ventas
ventas
producto
SINTAXIS: SELECT c.nombre AS NombreComprador, p.Nombre, v.cantidad AS CantidadComprada FROM comprador c JOIN comprador_ventas cv ON c.id_comprador = cv.cod_comprador JOIN ventas v ON cv.cod_venta = v.id_venta JOIN producto p ON v.CodigoProducto = p.CodigoProducto;
c.nombre AS NombreComprador: Seleccionamos el nombre del comprador de la tabla comprador.
p.Nombre: Seleccionamos el nombre del producto de la tabla producto.
v.cantidad AS CantidadComprada: Seleccionamos la cantidad comprada del campo cantidad en la tabla ventas.
JOIN comprador_ventas cv ON c.id_comprador = cv.cod_comprador
Relacionamos la tabla comprador (c) con la tabla de relación comprador_ventas (cv) usando el campo cod_comprador y id_comprador.
JOIN ventas v ON cv.cod_venta = v.id_venta:
Relacionamos la tabla comprador_ventas (cv) con la tabla ventas (v) usando el campo id_venta y cod_venta.
JOIN producto p ON v.CodigoProducto = p.CodigoProducto:
Relacionamos la tabla ventas (v) con la tabla producto (p) usando el campo CodigoProducto.
TERCERA CONSULTA:
Ver el total de ventas por producto:
Analicis: se tiene que ver el total en ventas por producto.
Tablas involucradas:
ventas
producto
SINTAXIS:
SELECT p.Nombre AS NombreProducto, SUM(v.cantidad) AS TotalVendido FROM ventas v JOIN producto p ON v.CodigoProducto = p.CodigoProducto GROUP BY p.Nombre;
Aqui lo que se hizo fue realcionar las tablas median de JOIN y hacer la suma, despues se uso GROUP BY para organizarlo.
CUARTA CONSULTA:
Actualizar la tabla del inventario:
Analicis: se tienen que restar los productos vendidos al inventario.
Tablas involucradas:
ventas
inventario
SINTAXIS:
UPDATE inventario i JOIN ventas v ON i.CodigoProducto = v.CodigoProducto SET i.Cantidad = i.Cantidad - v.cantidad;
JOIN entre inventario y ventas:
JOIN ventas v ON i.CodigoProducto = v.CodigoProducto:
Relacionamos la tabla inventario (i) con la tabla ventas (v) utilizando el campo CodigoProducto.
Esto nos permite acceder tanto a las existencias actuales (i.Cantidad) como a la cantidad vendida (v.cantidad).
Instrucción SET para Actualizar el Inventario
i.Cantidad = i.Cantidad - v.cantidad:
Actualizamos la cantidad en el inventario restando la cantidad vendida.
QUINTA CONSULTA:
Calcular el total de dinero generado por producto:
Analicis: se tienen que calcular el total de los vendidos.
Tablas involucradas:
ventas
Producto
SINTAXIS: SELECT p.Nombre AS NombreProducto, SUM(v.cantidad * p.Precio) AS IngresoTotal FROM ventas v JOIN producto p ON v.CodigoProducto = p.CodigoProducto GROUP BY p.Nombre;
p.Nombre AS NombreProducto: Seleccionamos el nombre del producto de la tabla producto.
SUM(v.cantidad * p.Precio) AS IngresoTotal:
Usamos SUM() para calcular el ingreso total.
Multiplicamos v.cantidad (la cantidad vendida de cada producto) por p.Precio (el precio del producto) para obtener el ingreso de cada venta.
La suma total se calcula para cada producto usando SUM().
JOIN producto p ON v.CodigoProducto = p.CodigoProducto:
Relacionamos la tabla ventas (v) con la tabla producto (p) utilizando el campo CodigoProducto.
Esto nos permite acceder al precio del producto para cada venta.
GROUP BY p.Nombre:
Agrupamos los resultados por el nombre del producto para calcular el ingreso total para cada producto individualmente.
SEXTA CONSULTA:
Calcular el comprador con mas a comprado:
Analicis: se tienen que hallar el comprador que mas veces a comprado.
Tablas involucradas:
ventas
Comprador
SINTAXIS: SELECT c.nombre, COUNT(cv.cod_venta) AS total_ventas FROM comprador c JOIN comprador_ventas cv ON c.id_comprador = cv.cod_comprador GROUP BY c.id_comprador ORDER BY total_ventas DESC LIMIT 1;
SEPTIMA CONSULTA:
Hallar el id del comprador que se encontro en la consulta 6(Juan Pérez):
Analicis: como ya se tiene el nombre solo queda comparar para hallar el id.
Tablas involucradas:
comprador
Sintaxis: select id_comprador, nombre from comprador where Nombre="Juan Pérez";
se toma el id_comprador, nombre de la tabla comprador uso where para buscar la coincidencia y ya.
OCTAVA CONSULTA:
Hallar las fechas y los id de la ventas:
Analicis: solo se necesecita la tabla ventas,.
Tablas involucradas:
ventas
Sintaxis: select fecha, id_venta from ventas;
se toma el id_comprador, nombre de la tabla comprador uso where para buscar la coincidencia y ya.
NOVENA CONSULTA:
Hallar los 3 productos mas vendidos:
Analicis: se nececita de la tabla ventas, el codigo producto y el nombre del producto y la cantidad en la tabla ventas.
Tablas involucradas:
ventas
producto
Sintaxis: SELECT p.nombre, SUM(v.cantidad) AS total_comprado FROM producto p JOIN ventas v ON p.codigoproducto = v.codigoproducto GROUP BY p.codigoproducto ORDER BY total_comprado DESC LIMIT 3;
DECIMA CONSULTA:
Hallar la marca que mas vendio:
Analicis: se nececita primero el totalVentas, despues el codigoproductos para irnos a productos donde tenemos id_marca.
Tablas involucradas:
ventas
producto
Marca
Sintaxis: SELECT m.nombremarca, SUM(v.TotalVenta) AS total_ventas FROM marca m JOIN producto p ON m.id_marca = p.id_marca JOIN ventas v ON p.codigoproducto = v.codigoproducto GROUP BY m.id_marca ORDER BY total_ventas DESC LIMIT 1;
ONCEAVA CONSULTA:
Hallar el producto con el mayor ingreso total:
Analicis: se nececita primero el totalVentas, y el producto para saber.
Tablas involucradas:
ventas
producto
Sintaxis:SELECT p.nombre, SUM(v.TotalVenta) AS ingreso_total FROM producto p JOIN ventas v ON p.codigoproducto = v.codigoproducto GROUP BY p.codigoproducto ORDER BY ingreso_total DESC LIMIT 1;
DOCEAVA CONSULTA:
Hallar el promedio de productos en el inventario:
Analicis: se nececita primero el codigoproducto y el inventario.
Tablas involucradas:
Inventario
Sintaxis:SELECT AVG(cantidad) AS promedio_inventario FROM inventario;
TRECEAVA CONSULTA:
Hacer un procedure que me permita ingresar mis ventas.
Sintaxis:
Delimiter //
create procedure insertar_ventas(in _id_venta integer, in _CodigoProducto integer , in _Comprador integer, in _Cantidad integer, in _Fecha Date)
-> Begin
-> Insert into ventas(id_venta, CodigoProducto, Comprador, Cantidad, Fecha) values(_id_venta, _CodigoProducto, _Comprador, _Cantidad, _Fecha);
-> END //
-> Delimiter ;
DECIMOCUARTA CONSULTA:
Hacer un historial de ventas que funcione mostrandome quien compro tal producto y su fecha.
Sintaxis: SELECT v.id_venta AS ID_Venta, p.nombre AS Nombre_Producto, c.nombre AS Nombre_Comprador, v.Cantidad, v.Fecha FROM ventas v JOIN producto p ON v.CodigoProducto = p.CodigoProducto JOIN comprador c ON v.Comprador = c.id_comprador WHERE p.CodigoProducto = 10;
el codigo fue probado con el producto de codigo #10.
- Se realiza un JOIN entre ventas y producto usando CodigoProducto, para obtener el nombre del producto.
- Luego, se hace un JOIN con comprador usando el campo Comprador, para obtener el nombre del comprador.
DECIMOQUINTA CONSULTA:
Actualizar la tabla comprador_ventas despues de haber ingresado una nueva venta.
Sintaxis: INSERT INTO comprador_ventas (cod_venta, cod_comprador) VALUES (11, 5);
es solo un ingreso de datos comun.
DECIMOSEXTA CONSULTA:
Agrupar por tipos de producto cual es el mas vendido.
Tablas a usar:
Ventas
producto
Sintaxis: SELECT p.tipo, SUM(v.Cantidad) AS total_vendido FROM ventas v JOIN producto p ON v.CodigoProducto = p.CodigoProducto GROUP BY p.tipo ORDER BY total_vendido DESC LIMIT 1;
DECIMOSEPTIMA CONSULTA:
Mostrar a los compradores junto al produto que compraron y el tipo de producto.
Tablas a usar:
Comprador
ventas
producto
Sintaxis: SELECT c.nombre AS Comprador, p.nombre AS Producto, p.tipo AS TipoProducto FROM ventas v JOIN producto p ON v.CodigoProducto = p.CodigoProducto JOIN comprador c ON v.Comprador = c.id_comprador ORDER BY c.nombre;
DECIMOSEPTIMA CONSULTA:
Mostrar a los compradores que compraron motos.
Tablas a usar:
Comprador
ventas
producto
Sintaxis:SELECT c.nombre AS Comprador FROM ventas v JOIN producto p ON v.CodigoProducto = p.CodigoProducto JOIN comprador c ON v.id_comprador = c.id_comprador WHERE p.tipo = 'Moto';
5. Sustentación
TODAVIA no esta claro
