PROYECTO WILSONSITO
ESCUELA : TECNOLOGÍAS DE LA INFORMACIÓN
CARRERA : COMPUTACIÓN E INFORMÁTICA
CURSO : 4685 - BASE DE DATOS
PERÍODO : 2024
CICLO : SEGUNDO
Instituto de Educación
Superior Privado
Integrantes:
Carrera:
Computación e Informática
Tema:
Proyecto de Base de datos “Wilsonsito”
2024
Contenido
Carátula ...
……………………………………………………………………………………………………….. 1
1. Descripción del Proyecto
………………………………………………………………………………………………..………... 3
2. Reglas del Negocio ………………….
………………………………………………………………………..…………….. 4
3. Entidades y Atributos
………………………………………………………………………………………..........………….. 5
4. Modelo Entidad Relación (MER)
………………………………………………………………………………………..........………….. 6
5. Diagrama Lógico
………………………………………………………………………………………………..………... 7
6. Diagrama Físico ………………….
………………………………………………………………………..…………….. 8
7. Procedimientos almacenados
………………………………………………………………………………………..........………….. 9
8. Interfaz ………………………………………………………………………………………..........
………….19
1. DESCRIPCIÓN DEL PROYECTO
El proyecto "Sistema de Gestión de Ventas de Componentes y Accesorios de
Computadoras" está diseñado para ofrecer una solución integral a las tiendas que
comercializan productos tecnológicos. Su objetivo es desarrollar un sistema de
información robusto y eficiente que permita manejar de manera óptima todas las
operaciones diarias, desde la gestión de inventarios hasta la relación con
proveedores y clientes.
Este sistema se centra en cubrir diversas áreas clave mediante la creación de tablas
específicas para productos, proveedores, clientes, pedidos, detalles de pedidos,
inventarios, y tiendas. Cada tabla está diseñada para contener información vital que
se relaciona con los procesos de la tienda.
IES Privado CIBERTEC 3
2. REGLAS DEL NEGOCIO
Inventario:
El inventario de cada tienda debe ser actualizado automáticamente
cada vez que se realiza un pedido.
Los productos que caigan por debajo de un umbral mínimo de
inventario deben ser marcados para reabastecimiento automático.
Gestión de Pedidos:
Los pedidos pueden tener estados que reflejen su avance:
"Pendiente", "Enviado", "Entregado".
Los pedidos deben ser procesados diariamente, priorizando
aquellos más antiguos.
Gestión de Proveedores:
Cada proveedor debe ser vinculado a los productos que suministra,
permitiendo un control eficiente del reabastecimiento.
El sistema debe permitir la actualización rápida de la información de
contacto de los proveedores.
Gestión de Clientes:
Se debe llevar un historial detallado de los pedidos realizados por
cada cliente, permitiendo analizar tendencias y comportamientos de
compra.
La base de datos de clientes debe estar protegida y cumplir con las
normativas de privacidad vigentes.
Tiendas:
Cada tienda debe tener su propio inventario independiente, con la
posibilidad de transferir stock entre tiendas si es necesario.
Las ventas de cada tienda deben ser registradas separadamente
para facilitar la contabilidad y análisis de rendimiento.
Reporte y Análisis:
El sistema debe generar reportes diarios y mensuales sobre ventas,
pedidos, inventario, y rendimiento de proveedores.
Los reportes deben ser personalizables para diferentes niveles de
gestión (ej. gerentes de tienda, administración central).
Seguridad y Acceso:
El sistema debe contar con diferentes niveles de acceso,
asegurando que solo el personal autorizado pueda realizar ciertas
operaciones (ej. acceso a inventario, procesamiento de pedidos,
etc.).
Las contraseñas y datos sensibles deben ser almacenados y manejados de acuerdo
con las mejores prácticas de seguridad.
3. ENTIDADES Y ATRIBUTOS
1. Tabla producto:
id_producto: Identificador único del producto.
nombre: Nombre del producto.
categoría: Tipo de producto (ej. "Tarjeta gráfica", "Procesador",
"RAM").
precio: Precio de venta del producto.
2. Tabla proveedor:
id_proveedor: Identificador único del proveedor.
nombre: Nombre del proveedor.
teléfono: Número de teléfono del proveedor.
correo Electrónico: Dirección de correo electrónico del proveedor.
3. Tabla cliente:
id_cliente: Identificador único del cliente.
nombre: Nombre completo del cliente.
teléfono: Número de teléfono del cliente.
correo: Dirección de correo electrónico del cliente.
dni: Número de DNI del cliente
4. Tabla pedido:
id_pedido: Identificador único del pedido.
fecha: Fecha en que se realizó el pedido.
id_cliente: Identificador del cliente que realizó el pedido.
estado: Estado del pedido (ej. "Pendiente", "Enviado",
"Entregado").
5. Tabla detalle_pedido:
id_detalle: Identificador único del detalle del pedido.
Id_pedido: Identificador del pedido al que pertenece este detalle.
Id_producto: Identificador del producto incluido en el pedido.
cantidad: Cantidad de unidades del producto en el pedido.
6. Tabla proveedor_producto:
id_proveedor: Identificador único del detalle del pedido.
id_producto: Identificador del pedido al que pertenece este detalle.
7. Tabla inventario:
id_inventario: Identificador único del detalle del pedido.
id_producto: Identificador del pedido al que pertenece este detalle.
id_tienda: Identificador del producto incluido en el pedido.
cantidad: Cantidad de unidades del producto en el pedido.
8. Tabla tienda:
IES Privado CIBERTEC 5
id_tienda: Identificador único de tienda.
nombre: Nombre de la tienda.
ubicación: Dirección de la tienda.
4. MODELO ENTIDAD RELACIÓN (MER)
5. DIAGRAMA LÓGICO
6. DIAGRAMA FÍSICO
IES Privado CIBERTEC 7
7. PROCEDIMIENTOS ALMACENADOS
CREATE PROCEDURE SP_INSERTAR_CLIENTE
@nombre VARCHAR(255),
@apellido VARCHAR(255),
@telefono VARCHAR(255),
@correo VARCHAR(255),
@dni VARCHAR(255)
AS
IF(EXISTS(SELECT * FROM cliente WHERE cliente.dni = @dni))
BEGIN
PRINT 'Ese DNI ya existe'
END
ELSE
BEGIN
INSERT INTO cliente
(nombre, telefono, correo, dni, apellido)
VALUES
(@nombre,@telefono,@correo,@dni,@apellido)
PRINT 'El cliente se registro correctamente'
END
GO
CREATE PROCEDURE SP_INSERTAR_PROVEEDOR
@nombre VARCHAR(100),
@telefono VARCHAR(15),
@correo VARCHAR(100)
AS
IF(EXISTS(SELECT * FROM proveedor WHERE proveedor.nombre = @nombre))
BEGIN
PRINT 'ESE PROVEEDOR YA EXISTE EN LA BD'
END
ELSE
IES Privado CIBERTEC 9
BEGIN
INSERT INTO proveedor
(nombre, telefono, correo)
VALUES
(@nombre,@telefono,@correo)
PRINT 'EL PROVEEDOR SE REGISTRO CORRECTAMENTE'
END
GO
CREATE PROCEDURE SP_INSERTAR_PRODUCTO
@nombre VARCHAR(100),
@categoria VARCHAR(50),
@precio DECIMAL(10,2)
AS
IF(EXISTS(SELECT * FROM producto WHERE producto.nombre = @nombre))
BEGIN
PRINT 'ESE PRODUCTO YA EXOISTE EN LA BD'
END
ELSE
BEGIN
INSERT INTO producto
(nombre, categoria, precio)
VALUES
(@nombre,@categoria,@precio)
PRINT 'EL PRODUCTO SE REGISTRO CORRECTAMENTE'
END
GO
CREATE PROCEDURE SP_INSERTAR_TIENDA
@nombre VARCHAR(100),
@ubicacion VARCHAR(100)
AS
IF(EXISTS(SELECT * FROM tienda WHERE tienda.nombre = @nombre))
BEGIN
PRINT 'ESA TIENDA YA EXISTE EN LA BD'
END
ELSE
BEGIN
INSERT INTO tienda
(nombre, ubicacion)
VALUES
(@nombre,@ubicacion)
PRINT 'LA TIENDA SE REGISTRO CORRECTAMENTE'
END
GO
CREATE PROCEDURE SP_INSERTAR_PEDIDO
@fecha DATE,
@id_cliente int,
@estado VARCHAR(50)
AS
INSERT INTO pedido
(fecha, id_cliente, estado)
VALUES
(@fecha,@id_cliente,@estado)
PRINT 'EL PEDIDO SE REGISTRO CORRECTAMENTE'
GO
CREATE PROCEDURE SP_INSERTAR_INVENTARIO
@id_producto int,
IES Privado CIBERTEC 11
@id_tienda int,
@cantidad int
AS
INSERT INTO inventario
(id_producto, id_tienda, cantidad)
VALUES
(@id_producto,@id_tienda,@cantidad)
PRINT 'EL INVENTARIO SE REGISTRO CORRECTAMENTE'
GO
CREATE PROCEDURE SP_INSERTAR_PROVEEDOR_PRODUCTO
@id_proveedor int,
@id_producto int
AS
INSERT INTO proveedor_producto
(id_proveedor, id_producto)
VALUES
(@id_proveedor,@id_producto)
PRINT 'EL PROVEEDOR_PRODUCTO SE REGISTRO CORRECTAMENTE'
GO
CREATE PROCEDURE SP_INSERTAR_DETALLE_PEDIDO
@id_pedido int,
@id_producto int,
@cantidad int
AS
INSERT INTO detalle_pedido
(id_pedido, id_producto, cantidad)
VALUES
(@id_pedido,@id_producto,@cantidad)
PRINT 'EL DETALLE_PEDIDO SE REGISTRO CORRECTAMENTE'
GO
--PROCEDURES PARA BORRAR
CREATE PROCEDURE SP_ELIMINAR_DETALLE_PEDIDO
@id_detalle int
AS
DELETE detalle_pedido WHERE id_detalle=@id_detalle;
PRINT 'EL DETALLE_PEDIDO SE ELIMINO CORRECTAMENTE'
GO
CREATE PROCEDURE SP_ELIMINAR_PROVEEDOR_PRODUCTO
@id_proveedor int
AS
DELETE proveedor_producto WHERE id_producto=@id_proveedor;
PRINT 'EL PROVEEDOR_PRODUCTO SE ELIMINO CORRECTAMENTE'
GO
CREATE PROCEDURE SP_ELIMINAR_INVENTARIO
@id_inventario int
AS
DELETE inventario WHERE inventario.id_inventario=@id_inventario;
PRINT 'EL INVENTARIO SE ELIMINO CORRECTAMENTE'
GO
CREATE PROCEDURE SP_ELIMINAR_PEDIDO
@id_pedido int
AS
DELETE pedido WHERE pedido.id_pedido=@id_pedido;
IES Privado CIBERTEC 13
PRINT 'EL PEDIDO SE ELIMINO CORRECTAMENTE'
GO
CREATE PROCEDURE SP_ELIMINAR_TIENDA
@id_tienda int
AS
DELETE tienda WHERE tienda.id_tienda=@id_tienda;
PRINT 'LA TIENDA SE ELIMINO CORRECTAMENTE'
GO
CREATE PROCEDURE SP_ELIMINAR_PRODUCTO
@id_producto int
AS
DELETE producto WHERE producto.id_producto=@id_producto;
PRINT 'EL PRODUCTO SE ELIMINO CORRECTAMENTE'
GO
CREATE PROCEDURE SP_ELIMINAR_PROVEEDOR
@id_proveedor int
AS
DELETE proveedor WHERE proveedor.id_proveedor=@id_proveedor;
PRINT 'EL PROVEEDOR SE ELIMINO CORRECTAMENTE'
GO
CREATE PROCEDURE SP_ELIMINAR_CLIENTE
@id_cliente int
AS
DELETE cliente WHERE cliente.id_cliente=@id_cliente;
PRINT 'EL CLIENTE SE ELIMINO CORRECTAMENTE'
GO
--PROCEDURE PARA ACTUALIZAR ENTIDADES
CREATE PROCEDURE SP_ACTUALIZAR_CLIENTE
@id_cliente int,
@nombre VARCHAR(255),
@apellido VARCHAR(255),
@telefono VARCHAR(255),
@correo VARCHAR(255),
@dni VARCHAR(255)
AS
UPDATE cliente SET
nombre = @nombre,
apellido = @apellido,
telefono = @telefono,
correo = @correo,
dni= @dni
WHERE id_cliente = @id_cliente
PRINT 'EL CLIENTE SE ACTUALIZO CORRECTAMENTE'
GO
CREATE PROCEDURE SP_ACTUALIZAR_PROVEEDOR
@id_proveedor int,
@nombre VARCHAR(100),
@telefono VARCHAR(15),
@correo VARCHAR(100)
AS
UPDATE proveedor SET
nombre = @nombre,
telefono = @telefono,
IES Privado CIBERTEC 15
correo = @correo
WHERE id_proveedor = @id_proveedor;
PRINT 'EL PROVEEDOR SE ACTUALIZO CORRECTAMENTE'
GO
CREATE PROCEDURE SP_ACTUALIZAR_PRODUCTO
@id_producto int,
@nombre VARCHAR(100),
@categoria VARCHAR(50),
@precio DECIMAL(10,2)
AS
UPDATE producto SET
nombre = @nombre,
categoria = @categoria,
precio = @precio
WHERE id_producto = @id_producto;
PRINT 'EL PRODUCTO SE ACTUALIZO CORRECTAMENTE'
GO
CREATE PROCEDURE SP_ACTUALIZAR_TIENDA
@id_tienda int,
@nombre VARCHAR(100),
@ubicacion VARCHAR(100)
AS
UPDATE tienda SET
nombre = @nombre,
ubicacion = @ubicacion
WHERE id_tienda = @id_tienda;
PRINT 'EL TIENDA SE ACTUALIZO CORRECTAMENTE'
GO
CREATE PROCEDURE SP_ACTUALIZAR_PEDIDO
@id_pedido int,
@fecha DATE,
@id_cliente int,
@estado VARCHAR(50)
AS
UPDATE pedido SET
fecha = @fecha,
id_cliente = @id_cliente,
estado = @estado
WHERE id_pedido = @id_pedido;
PRINT 'EL PEDIDO SE ACTUALIZO CORRECTAMENTE'
GO
CREATE PROCEDURE SP_ACTUALIZAR_INVENTARIO
@id_inventario int,
@id_producto int,
@id_tienda int,
@cantidad int
AS
UPDATE inventario SET
id_producto = @id_producto,
id_tienda = @id_tienda,
cantidad = @cantidad
WHERE id_inventario = @id_inventario;
PRINT 'EL INVENTARIO SE ACTUALIZO CORRECTAMENTE'
GO
CREATE PROCEDURE SP_ACTUALIZAR_PROVEEDOR_PRODUCTO
@id_proveedor int,
@id_producto int
AS
UPDATE proveedor_producto SET
IES Privado CIBERTEC 17
id_proveedor = @id_proveedor,
id_producto = @id_producto
WHERE id_producto = @id_producto;
PRINT 'SE ACTUALIZO EL PRODUCTO CON EL NUEVO PROVEEDOR'
GO
CREATE PROCEDURE SP_ACTUALIZAR_DETALLE_PEDIDO
@id_detalle int,
@id_pedido int,
@id_producto int,
@cantidad int
AS
UPDATE detalle_pedido SET
id_pedido = @id_pedido,
cantidad = @cantidad,
id_producto = @id_producto
WHERE id_detalle = @id_detalle;
PRINT 'SE ACTUALIZO EL DETALLE_PEDIDO CORRECTAMENTE'
GO
8. INTERFAZ
IES Privado CIBERTEC 19
IES Privado CIBERTEC 21