0% encontró este documento útil (0 votos)
30 vistas17 páginas

Base de Datos para Ferretería El Progreso

skwkwksksksnskskskskdjsjsjsksks jddjkwksksjsjdkskss

Cargado por

May 度
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 DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
30 vistas17 páginas

Base de Datos para Ferretería El Progreso

skwkwksksksnskskskskdjsjsjsksks jddjkwksksjsjdkskss

Cargado por

May 度
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 DOCX, PDF, TXT o lee en línea desde Scribd

Integrantes:

o Carlos Eduardo Mercado Palacio

o Luis Santiago Canda Baldioseda

Docente: Ing. Ricardo Pérez

Fecha: 04 de Diciembre del 2024

Ingeniería en Sistemas.

Presentación de un Sistema de Bases de Datos para una Ferretería.


Objetivo general:

Crear una base de datos que pueda agilizar los procesos de


almacenamiento de datos y productos, garantizando así una correcta y segura
manipulación de estos.

Objetivos específicos:

 Diseñar el esquema lógico de la base de datos, definiendo tablas,


relaciones y atributos necesarios para garantizar un almacenamiento
eficiente y organizado de la información.

 Desarrollar consultas optimizadas que permitan la obtención de


información relevante de manera rápida y precisa.

 Implementar medidas de seguridad en la base de datos para garantizar la


integridad, confidencialidad y disponibilidad de la información
almacenada en ella.
Planteamiento del problema

La creación de un diseño de base datos, para la gestión de inventarios

para la ferretería “El Progreso”, ubicada en Masatepe, del parque central, 1c y

½ al sur, busca agilizar los procesos de venta y almacenamiento de productos,

mejorando la eficiencia y precisión en la administración de los productos

disponibles en tienda. Actualmente, muchas ferreterías en el área enfrentan

dificultades relacionadas con la falta de visibilidad en tiempo real del stock, lo

que puede generar problemas como sobrestock (productos que no se venden a

tiempo, o son muy poco vendidos) o desabastecimiento (falta de productos

clave), lo cual impacta directamente en la satisfacción. del cliente y la

rentabilidad monetaria del negocio, siendo la primera la que impacta de mayor

manera en lo ámbito financiero. Una de los objetivos principales es ayudar a

mitigar problemas relacionados con la organización y almacenamiento de

información, optimizando el control de inventarios, proporcionando

información detallada y actualizada que permitirá una mejor toma de d-

ecisiones al momento de actuar en beneficio del negocio.

Uno de los aspectos más importantes del proyecto es su capacidad para

registrar múltiples atributos de los productos, tales como precios de compra y

venta, cantidades disponibles y el proveedor/es que puede poseer cada item.

Este nivel de detalle es crucial para ver la rentabilidad de cada artículo,


permitiendo a los administradores analizar los márgenes de ganancia y ajustar

las estrategias de venta en función de los costos. Además, al vincular cada

producto a un proveedor, la base de datos facilitará la gestión de relaciones

comerciales, proporcionando una visión clara de quién abastece a la ferretería

y permitiendo una reordenación de stock más eficiente y en el momento

adecuado.

Descripción de la estructura de la base de datos

Las entidades principales de la base de datos incluyen: Producto,

Cliente y Factura. La entidad Producto tiene como atributos: idProducto,

nombreProducto, precioCompra, precioVenta y Stock, estos atributos

permiten gestionar la información de los artículos disponibles en la tienda.

La entidad Cliente contiene atributos como: idCliente, nombreCliente y

contactoCliente. Dichos campos facilitaran el registro de los datos de todos

los clientes.

La entidad Factura tiene atributos: idFactura, fechaEmisión y

montoTotal, y está vinculada a una venta específica, funcionando como

comprobante oficial de la misma.


El diseño de una base de datos para la gestión de inventarios propuesto

no solo permitirá un mayor control y seguimiento de los productos, sino que

además mejorará la eficiencia operativa, reducirá los riesgos asociados al mal

manejo de inventario y proporcionará información clave para la toma de

decisiones estratégicas. Además de agilizar los procesos de facturación al

tener información detallada del stock de cada producto para evitar errores de

facturación de productos inexistentes.

Entidades y atributos:
Relaciones:
Diagrama de Entidad-Relación simple

Diagrama relacionado en SQL


Diagrama MER
Producto – Proveedor (Muchos a Muchos)
(cantidadStock, idProveedor, idCategoria, nombreProducto, PrecioVenta, Precio real,
idproducto)

Factura – Cliente (Muchos a uno)


(idFactura, fechaFactura, montoTotal, idCliente)

Producto – Categoría (Uno a muchos)


(idProducto (FK), idCategoría(PK), nombreCategoría)

Producto – Factura (Muchos a Muchos)


(idFactura, idProducto, fechaFactura, montoTotal)

Normalización de la Base de Datos de una Ferretería


El proceso de normalización aplicado a las tablas de una base de datos para una ferretería.
El objetivo es organizar los datos de forma eficiente, eliminando redundancias y
asegurando la integridad de las relaciones entre tablas.

Análisis Inicial de las Tablas


La base de datos inicial consta de las siguientes tablas:
1. Productos:
Contiene información sobre los productos que se venden en la ferretería, incluyendo
su stock, precios y las categorías a las que pertenecen.
o Columnas: cantidadStock, idProveedor, idCategoria, nombreProducto,
precioVenta, precioReal, idProducto.
2. Factura:
Registra las facturas emitidas, con información básica como la fecha, el monto total
y el cliente.
o Columnas: idFactura, fechaFactura, montoTotal, idCliente.
3. Cliente:
Almacena los datos de los clientes que realizan compras.
o Columnas: nombreCliente, contactoCliente, idCliente, teléfonoCliente.
4. Proveedor:
Contiene los datos de los proveedores que abastecen la ferretería.
o Columnas: contactoProveedor, nombreProveedor, correoProveedor,
idProveedor.
5. Categoría:
Clasifica los productos según su tipo.
o Columnas: idCategoria, nombreCategoria.
Aunque estas tablas ya están organizadas, carecen de relaciones explícitas entre relaciones
de muchos a muchos
Primera Forma Normal (1NF)
La regla dice qué: “Cada celda de una tabla debe contener un único valor (datos
atómicos), y cada registro debe ser único.” En esta etapa se verifica que todas las tablas
cumplen con esta regla. Los datos son únicos y no hay celdas con valores múltiples.
Sin embargo, es necesario reestructurar algunas relaciones.

Segunda Forma Normal (2NF)


Acá, la regla dice que se debe cumplir con la 1NF y eliminar dependencias parciales.
“Cada columna debe depender completamente de la clave primaria.”
 En la tabla productos, la columna idProveedor representa una relación que no es
directa, ya que un producto puede ser suministrado por varios proveedores. Esto
sugiere la necesidad de una tabla intermedia.
Cambios realizados:
1. Eliminamos la columna idProveedor de la tabla productos.
2. Creamos una tabla intermedia llamada Producto_Abastecimiento para representar la
relación de muchos a muchos entre productos y proveedores.
Nueva tabla Producto_Abastecimiento:
| IDProducto | IDProveedor | cantidadEntrada | medidaProducto | fechaEntrada
 idProducto: Clave foránea hacia la tabla productos.
 idProveedor: Clave foránea hacia la tabla proveedores.
 cantidadEntrada: Mínimo de unidades que el proveedor puede suministrar.
 medidaProducto: El tipo medida en la cual se abastece los productos
 fechaEntrada: Fecha en la cuál se recibieron los productos

Aplicación de la Tercera Forma Normal (3NF)


Regla: Cumplir con la 2NF y “eliminar dependencias transitivas, es decir, los atributos
no clave deben depender únicamente de la clave primaria.”
En la tabla factura, identificamos la necesidad de una relación entre facturas y productos.
Para resolverlo, añadimos una tabla intermedia que permita detallar cada producto incluido
en una factura.
Cambios realizados:
1. La tabla factura ahora solo contiene información básica de la factura.
2. Se crea la tabla detalleFactura para detallar los productos y cantidades de cada
factura.
Nueva tabla detalleFactura:
IDFactura | IDProducto | cantidadSalida | SubTotal |

Paso 5: Estructura Final Normalizada


1. Productos:
o Columnas: idProducto, nombreProducto, cantidadStock, precioVenta,
precioReal, idCategoria.
2. Proveedor:
o Columnas: idProveedor, nombreProveedor, contactoProveedor,
correoProveedor.
3. Producto_Abastecimiento:
o Columnas: idProducto, idProveedor, precioCompra, cantidadMinima.
4. Factura:
o Columnas: idFactura, fechaFactura, montoTotal, idCliente.
5. DetalleFactura:
o Columnas: idDetalle, idFactura, idProducto, cantidad, precioUnitario,
subTotal.
6. Cliente:
o Columnas: idCliente, nombreCliente, contactoCliente, teléfonoCliente.
7. Categoría:
o Columnas: idCategoria, nombreCategoria.

Relaciones Finales
1. Productos ↔ Categoría: Relación de muchos a uno. Un producto pertenece a una
categoría.
2. Productos ↔ Proveedores (Producto_Abastecimiento): Relación de muchos a
muchos modelada mediante Producto_Abastecimiento.
3. Factura ↔ Cliente: Relación de muchos a uno. Una factura pertenece a un cliente.
4. Factura ↔ Productos (DetalleFactura): Relación de muchos a muchos modelada
mediante DetalleFactura.

Con las tablas “Producto_Abastecimiento” y “Detalle_Venta”, logramos modelar la


relación de muchos a muchos entre productos-proveedores y clientes y factura. Esto, junto
con las demás modificaciones permite:
1. Eliminar redundancias en las tablas.
2. Representar relaciones.
3. Facilitar consultas.
Diccionario de datos

Productos

Llave Nombre Tipo Tamaño Restricciones Descripción Ejemplo


Llave Almacena el ID
PK idProducto nchar 10 principal, no del producto 48837
nulo
Almacena la
cantidadStock float No nulo cantidad que 57
existe de cada
producto
Guarda el
idProveedor nchar 10 No nulo código de cada Ferretería
uno de los Jenny
proveedores

Llave Almacena el
FK idCategoría nchar 10 foránea. No código de cada 001
nulo una de las
categorías
existentes
Almacena el
nombreProducto nvarchar 50 No nulo nombre de cada Clavo
producto Corriente

Almacena el
precioVenta float No nulo precio de venta 1.5
al cliente
Guarda el precio
precioReal float No nulo real del 1
producto antes
de ajustes
Proveedores

Llave Nombre Tipo Tamaño Restricciones Descripción Ejemplo


Almacena el
contactoProveedor nvarchar 50 No nulo número del 59885068
proveedor
Almacena el
nombreProveedor nvarchar 50 No nulo Nombre de cada Modelo S.A
proveedor
Guarda el correo
correoProveedor nvarchar 50 Opcional, no de PinturasModelo@
nulo contacto/soporte [Link]
de cada
proveedor

Llave Almacena el
PK idProveedor nchar 10 principal, no código de cada 78362-992
nulo uno de los
proveedores

Factura

Llave Nombre Tipo Tamaño Restricciones Descripción Ejemplo


Llave Almacena id
PK idFactura nchar 10 primaria, no de cada 374334
nulo Factura
Almacena la
fechaFactura nchar 10 No nulo fecha de la 20-09-2024
factura
Almacena el
montoTotal float -- No nulo monto total 899.50
Almacena el
FK idCliente nchar 10 Llave código de 9899
foránea , no cada uno de
nulo los clientes
Cliente

Llave Nombre Tipo Tamaño Restricciones Descripción Ejemplo


Llave primaria, Almacena el id de
PK idCliente nchar 10 no nulo cada cliente 011172
Almacena el correo
contactoCliente nchar 10 Opcional de cada cliente Null
Guarda el nombre
nombreCliente float -- No nulo del cliente Betania
Almacena el
teléfonoCliente nchar 10 Llave foránea número de cada 85217774
cliente

Categoría

Llave Nombre Tipo Tamaño Restricciones Descripción Ejemplo

Llave Primaria, Almacena el


PK idCategoría nchar 10 no nulo código de cada 001
categoría
Contiene el
nombreCategoría nvarchar 50 No nulo nombre de la Carpintería
categoría

Consultas básicas para ver tablas y columnas:


select * from Productos // Permite ver todas la columnas de la tabla

select idProducto, idCategoria, precioReal from Productos // Permite ver


columnas seleccionadas mediante el “Select”

SELECT COLUMN_NAME, DATA_TYPE


FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'productos'; // Permite ver el nombre de la tabla y
los tipos de datos de cada columna.

Saber cuántos registros hay en una tabla específica, por ejemplo, en la tabla
productos:
SELECT COUNT(*)
FROM productos;
Explicación: COUNT(*) cuenta todos los registros (filas) de la tabla
productos.

Obtener Todos los Registros de una Tabla


Ver todos los registros de la tabla productos:
SELECT * FROM productos;
Explicación: SELECT * selecciona todas las columnas de todos los registros
en la tabla productos. El * significa "todo".

Filtrar Registros con Condiciones


Obtener los productos cuyo precio real sea mayor a 100:
SELECT nombreProducto, PrecioReal
FROM productos
WHERE PrecioReal > 100;
Explicación: WHERE PrecioReal > 100 filtra los registros para que solo se
muestren los productos con un precio real mayor a 100.

Agregar Nuevos Registros


Agregar un nuevo producto a la tabla productos,
INSERT INTO productos (nombreProducto, PrecioVenta, PrecioReal,
cantidadStock, idProveedor, idCategoria)
VALUES ('Producto X', 150, 120, 50, 1, 2);
Explicación: INSERT INTO agrega un nuevo registro a la tabla productos. Se
especifican los valores de cada columna entre paréntesis.

Eliminar un Registro
Eliminar un producto específico de la tabla:
DELETE FROM productos
WHERE idProducto = 1;
Explicación: DELETE FROM elimina un registro de la tabla. En este caso,
eliminamos el producto con idProducto = 1.

Conclusiones
La creación de un diseño de una Base de datos para “Ferretería El Progreso”
busca satisfacer las necesidades o problemas más comunes que pueden llegar
a tener este tipo de negocios, por ejemplo, la nula visibilidad en tiempo real de
la cantidad de productos que hay en existencia en determinados momentos y
quienes son los responsables de suministrar dichos productos.

Creemos que este diseño puede ayudar a corregir errores comerciales y


financieros, colaborando así mismo en una buena planificación a futuro
respectos a los elementos a surtir en el Negocio, aspectos importantes como la
implementación de apartados como guardar el correo y números telefónicos de
contacto para la consultas o servicios varios, esperamos que sean de mucha
utilidad para el Negocio.

Sin embargo, esta no será la etapa final del proyecto propuesto, si bien,
tenemos una estructura lo suficientemente sólida para un negocio de tal
Magnitud, seguiremos trabajando para añadir funciones que actúen en Pro del
mismo, ya sea por medio de actualizaciones al sistema lógico o un apartado de
facturación a futuro, que esté conectado directamente a la base de datos con el
propósito de optimizar aún más este proyecto.

También podría gustarte