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 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;

  • JOIN: Une las tablas comprador y comprador_ventas para asociar a los compradores con las ventas.
  • COUNT(cv.cod_venta): Cuenta el número de ventas realizadas por cada comprador.
  • GROUP BY c.id_comprador: Agrupa los resultados por cada comprador.
  • ORDER BY total_ventas DESC: Ordena los resultados de mayor a menor según el número de ventas.
  • LIMIT 1: Limita los resultados a solo el comprador con más ventas.
  • Como se puede ver en el archivo de texto el que sale es el comprador con id_comprador=1 dado que todos los compradores hasta ese momento han hecho una sola venta.

  • 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;

  • SELECT p.nombre: Selecciona el nombre del producto de la tabla producto.
  • SUM(v.cantidad): Suma la cantidad de cada producto que se ha vendido (esto está en la tabla ventas).
  • FROM producto p: Consulta la tabla producto, que contiene los detalles de los productos.
  • JOIN ventas v ON p.codigoproducto = v.codigoproducto: Realiza un JOIN entre la tabla producto y la tabla ventas para obtener las ventas relacionadas con cada producto.
  • GROUP BY p.codigoproducto: Agrupa los resultados por producto, para que se sumen las cantidades vendidas de cada producto.
  • ORDER BY total_comprado DESC: Ordena los productos por la cantidad total comprada, de mayor a menor.
  • LIMIT 3: Limita el resultado a los 3 productos más comprados.

  • 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;

  • SELECT m.nombremarca: Selecciona el nombre de la marca desde la tabla marca.
  • SUM(v.TotalVenta): Suma el total de las ventas de cada producto asociado a la marca (esto está en la tabla ventas).
  • FROM marca m: Consulta la tabla marca, que contiene las marcas.
  • JOIN producto p ON m.id_marca = p.id_marca: Realiza un JOIN entre marca y producto para obtener los productos asociados a cada marca.
  • JOIN ventas v ON p.codigoproducto = v.codigoproducto: Realiza otro JOIN entre producto y ventas para obtener el total de ventas de cada producto.
  • GROUP BY m.id_marca: Agrupa los resultados por marca.
  • ORDER BY total_ventas DESC: Ordena los resultados de mayor a menor según el total de ventas.
  • LIMIT 1: Limita el resultado a la marca con el mayor total de ventas.

  • 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;

  • SELECT p.nombre: Selecciona el nombre del producto desde la tabla producto.
  • SUM(v.TotalVenta): Suma el total de ventas (ingreso total) de cada producto. Aquí, TotalVenta debe representar el ingreso total por cada venta (si no es así, puede ser necesario usar cantidad * precio).
  • FROM producto p: Consulta la tabla producto que contiene los detalles de los productos.
  • JOIN ventas v ON p.codigoproducto = v.codigoproducto: Realiza un JOIN entre la tabla producto y ventas para obtener las ventas relacionadas con cada producto.
  • GROUP BY p.codigoproducto: Agrupa los resultados por cada producto.
  • ORDER BY ingreso_total DESC: Ordena los productos por el ingreso total de mayor a menor.
  • LIMIT 1: Limita el resultado a solo el producto con el mayor ingreso total.

  • 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.

  • JOIN:
    • 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.
  • WHERE: Filtra por un producto específico usando CodigoProducto.
  • SELECT: Muestra el ID de la venta, nombre del producto, nombre del comprador, cantidad comprada, y la fecha de la venta.

  • 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;

  • JOIN producto p ON v.CodigoProducto = p.CodigoProducto: Une la tabla ventas con producto para acceder al campo tipo.
  • SUM(v.Cantidad): Suma la cantidad de productos vendidos para cada tipo.
  • GROUP BY p.tipo: Agrupa los resultados por el campo tipo de producto.
  • ORDER BY total_vendido DESC: Ordena los resultados de mayor a menor.
  • LIMIT 1: Devuelve solo el tipo de procuto mas popular/vendido.

  • 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;

  • JOIN producto p ON v.CodigoProducto = p.CodigoProducto: Relaciona la venta con el producto para obtener el nombre y tipo del producto.
  • JOIN comprador c ON v.Comprador = c.id_comprador: Relaciona la venta con el comprador para obtener su nombre.
  • ORDER BY c.nombre: Ordena los resultados por el nombre del comprador.

  • 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

    ¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar