Proyecto Final
FINAL BASE DE DATOS II
Definir el enunciado del problema a sistematizar según las necesidades detectadas. (Debe ser Claro y tener mínimo 12 tablas)
PROBLAMA A SISTEMATISAR: EmpresaRedes
Una empresa Redes, dedicada a la prestación de servicios de instalación, cableado estructurado y mantenimiento de equipos de cómputo, presenta actualmente una deficiente gestión en el control de información relacionada con sus usuarios (clientes) y empleados técnicos, lo que genera demoras en la asignación de servicios, errores en el seguimiento de actividades y dificultades para acceder a reportes actualizados.
El manejo de datos se realiza de forma manual o mediante hojas de cálculo dispersas, lo que impide tener una trazabilidad adecuada de las órdenes de trabajo, historial de mantenimiento, disponibilidad del personal técnico, y control de insumos o equipos utilizados en las instalaciones.
Ante esta situación, se hace necesario diseñar y desarrollar un sistema de información integral que permita automatizar los procesos de gestión de usuarios, empleados técnicos, servicios solicitados, asignación de tareas, recursos, facturación, y seguimiento de mantenimiento, con el fin de mejorar la eficiencia operativa, la toma de decisiones y la calidad del servicio ofrecido.
Usuarios (Clientes)
- Información de contacto, tipo de cliente, dirección, etc.
Empleados Técnicos
- Datos personales, cargo, habilidades, disponibilidad, etc.
Servicios
- Tipos de servicios ofrecidos: instalación, mantenimiento, revisión, etc.
Órdenes de Servicio
- Solicitudes de clientes, fechas, estados, prioridades.
Asignaciones Técnicas
- Relación entre órdenes y técnicos asignados.
Equipos / Herramientas
- Inventario de equipos usados por los técnicos.
Insumos
- Materiales utilizados para instalaciones o mantenimientos.
Historial de Mantenimiento
- Registro de servicios anteriores por cliente o equipo.
Facturación
- Detalle de cobros por servicio realizado.
Zonas o Ubicaciones de Servicio
- Para organizar las rutas o zonas de cobertura.
Disponibilidad Técnica/Turnos
- Calendario o turnos de trabajo de los técnicos.
Reportes / Auditoría
- Seguimiento de acciones realizadas dentro del sistema.
Categorías de Servicio (opcional para extender)
- Clasificación de servicios en grupos o especialidades.
Usuarios (Clientes)
id_usuario (PK)
nombre, tipo_cliente, direccion, telefono, etc.
Relacionada con: Órdenes de servicio, Historial de mantenimiento, Facturación
Técnicos
id_tecnico (PK)
nombre, cargo, habilidades, etc.
Relacionada con: Asignaciones técnicas, Turnos
Servicios
id_servicio (PK)
nombre_servicio, descripcion, precio, etc.
Relacionada con: Órdenes de servicio, Categorías de servicio
Categorías de Servicio
id_categoria (PK)
nombre_categoria, descripcion
Relacionada con: Servicios (FK: id_categoria en tabla Servicios)
Equipos
id_equipo (PK)
nombre_equipo, tipo, estado, etc.
Relacionada con: Equipos usados, Historial de mantenimiento
Insumos
id_insumo (PK)
nombre_insumo, cantidad_disponible, etc.
Relacionada con: Insumos usados
Zonas
id_zona (PK)
nombre_zona, descripcion
Relacionada con: Órdenes de servicio
🔄 TABLAS DE MOVIMIENTO
Órdenes de Servicio
id_orden (PK)
id_usuario (FK), id_servicio (FK), id_zona (FK), fecha_solicitud, estado, prioridad
Relacionada con: Asignaciones técnicas, Facturación, Historial de mantenimiento, Equipos usados, Insumos usados
Asignaciones Técnicas
-
id_asignacion (PK)
-
id_orden (FK), id_tecnico (FK), fecha_asignacion, estado
-
Relacionada con: Turno
Equipos Usados
-
id_equipo_usado (PK)
-
id_orden (FK), id_equipo (FK), cantidad, observaciones
Insumos Usados
-
id_insumo_usado (PK)
-
id_orden (FK), id_insumo (FK), cantidad_usada
Historial de Mantenimiento
-
id_historial (PK)
-
id_usuario (FK), id_equipo (FK), fecha_mantenimiento, detalle, id_tecnico (FK)
Turnos
id_turno (PK), id_tecnico (FK),
nombre_turno, horario_inicio, horario_fin
Facturación
-
id_factura (PK)
-
id_orden (FK), id_usuario (FK), fecha, monto_total
TABLAS
Tipo Tablas
Referenciales: Usuarios, Técnicos, Servicios, Categorías, Equipos, Insumos, Zonas, Turnos.
De Movimiento :
Órdenes, Asignaciones_tecnicas, Equipos_usados, Insumos_usados, Mantenimiento, Facturación.
Descargar: Diccionario de datos


Diseñar ejercicios en los que se apliquen los diferentes comandos que se utilizaron durante el semestre con su respectivo análisis y resultados.
Tigger: Evitar borrar un técnico si tiene asignaciones activas (pendiente o en curso).

Vemos que en algunas tablas aparecen la id_tecnico o la id_turno o asi vamos a cambiar cada una de ellas por los nombres que tienen su respectiva id. Ejemplo Tabla servicios

Me aparece la id de categoria_id, pero queremos que nos aparezca el nombre de la categoría.
ANÁLISIS
-Que deseo Mostrar:
- Nombre de categorias en la tabla de servicios
-Tablas Involucradas
- Categorias
Funcion a utilizar
- Select,Join
Codigo: select s.id_servicio, s.nombre AS nombre_servicio, s.descripcion, c.nombre_categoria from servicios s join categorias c on s.categoria_id = c.id_categoria;

Insertar una asignación tecnica con datos en una tabla buscando un valor en otra (Insert - select)
Insetamos una asignacion_tecnica;
ANÁLISIS
- En que tabla se van a insertar los datos
- Asignaciones_tecnicas
-Que campo(campos conitiene la informacion solicitada) y de que tabla
- Campo: d_orden, id_tecnico, fecha_asignacion, estado_asignacion
- Tabla: Ordenes,Tecnicos
-Codicione(s) si las hay:
- No hay condiciones
-Que tablas están involucradas en la inserción
- Tablas: ordenes y tecnicos
Codigo: insert into asignaciones_tecnicas (id_orden, id_tecnico, fecha_asignacion, estado_asignacion) select o.id_orden, t.id_tecnico, '2025-06-01', 'pendiente' from ordenes o join tecnicos t on t.nombre = 'luis ramírez' where o.id_orden = 10;

Actualización en cascada: para asignaciones_tecnicas con respecto al estado de la orden
ANÁLISIS
- Cual es el nombre de la tabla en la que se van actualizar los datos y con que información
- tablas: asignaciones_tecnicas y ordenes.
- información :asignaciones_tecnicas a join ordenes
-que campo(campos conitiene la inforamcion solicitada) y de que tabla
- Campo:NA
- Tabla: NA
-Codicione(s) si las hay:
- a.id_orden = o.id_orden
-Que tablas estan involucradas en la consulta y como se relacionan
- Tablas: asignaciones_tecnicas y ordenes
- Relación: a.id_orden = o.id_orden
Codigo: update asignaciones_tecnicas a join ordenes o on a.id_orden = o.id_orden set a.estado_asignacion = o.estado where o.estado = 'completada';

Crear tabla usuario para acceder ala base de datos: Una que tenga todos los derechos, otro que no tenga derechos y otro que tenga uno que otro derecho.
USUARIO CON TODOS LOS DERECHOS
create user 'admin_user'@'localhost' identified by 'admin123';
grant all privileges on EmpresaRedes.* to 'admin_user'@'localhost';
flush privileges;
Ingreso como: mysql -u admin_user -p
Contreseña: admin123


USUARIO SIN DERECHOS
create user 'user_sin_acceso'@'localhost' identified by 'sinacceso123';
Ingreso como: mysql -u user_sin_acceso -p
Contreseña: sinacceso123



USUARIO CON DERECHOS PARCIALES
create user 'user_limitado'@'localhost' identified by 'limitado123';
grant select, insert on EmpresaRedes.* to 'user_limitado'@'localhost';
flush privileges;
Ingreso como: mysql -u user_limitado -p
Contreseña: limitado123



