Proyecto Final
Enunciado
Este proyecto busca ofrecer una solución tecnológica que permita gestionar de manera eficiente los procesos en los muelles de carga. Por esto, mediante esta herramienta se podrá llevar un control detallado para la carga, descarga, distribución y manejo de los contenedores, mediante el uso de bases de datos Mysql y programación en Java.
Una de las principales ventajas de esta herramienta es su enfoque en la facilidad de uso y accesibilidad para el personal encargado de las operaciones en los muelles de carga. La solución se presentará de manera gráfica e intuitiva, lo que facilitará su manejo y reducirá los márgenes de error en la ejecución de las tareas y actividades mencionadas.
Esta característica innovadora permitirá que el personal capacitado pueda utilizar la herramienta de manera eficiente sin necesidad de contar con conocimientos técnicos avanzados en programación o en el uso de software complejos. Además, la solución tecnológica permitirá reducir los costos de implementación y de entrenamiento del personal, lo que contribuirá a que la herramienta pueda ser adoptada con facilidad en empresas de diferentes tamaños y características.
En resumen, este
proyecto de gestión de procesos en los muelles de carga busca ofrecer una
solución tecnológica accesible e intuitiva que permita optimizar la gestión de
las operaciones logísticas en estos puntos críticos de la cadena de suministro,
lo que se traducirá en una mayor eficiencia, rentabilidad y seguridad en las
operaciones de importación y exportación de mercancías.
Base de Datos

Modelado
Tablas Principales
| Barco | | Capitán |


| Contenedor | | Mercancía |


| Ruta | | Propietario |


Tablas Relacionales
| Barco - Contenedor |

| Contenedor - Mercancía |
| Barco - Capitan |

| Barco - Ruta |

| Propietario - Mercancía |



Consultas
Consulta SELECT básica:
Sintaxis: SELECT columna1, columna2 FROM tabla;
- Enunciado: Consultar los barcos registrados
Análisis:
- ¿Qué se desea consultar y de que tablas?
barco.*
- ¿Qué tablas se ven afectadas o involucradas?
barco
- Condición(es)
Ninguna

Consulta SELECT con filtro WHERE:
Sintaxis: SELECT columna1, columna2 FROM tabla WHERE condición;
- Enunciado: Consultar las rutas del puerto de Cartagena
Análisis:
- ¿Qué se desea consultar y de que tablas?
ruta.*
- ¿Qué tablas se ven afectadas o involucradas?
ruta
- Condición(es)
WHERE ruta.puerto = 'Cartagena'

Consulta SELECT con ordenamiento ORDER BY:
Sintaxis: SELECT columna1, columna2 FROM tabla ORDER BY columna1 ASC;
- Enunciado: Consultar la cedula y el nombre de los capitanes ordenados ascendentemente
Análisis:
- ¿Qué se desea consultar y de que tablas?
capitan.cedula
capitan.nombre
- ¿Qué tablas se ven afectadas o involucradas?
capitan
- Condición(es)
Ninguna

Consulta SELECT con función de agregación GROUP BY:
Sintaxis: SELECT columna, COUNT(*) FROM tabla GROUP BY columna;
- Enunciado: Consultar el numero de rutas para cada puerto
Análisis:
- ¿Qué se desea consultar y de que tablas?
ruta.puerto
- ¿Qué tablas se ven afectadas o involucradas?
ruta
- Condición(es)
Ninguna

Consulta SELECT con función de COUNT y filtro HAVING:
Sintaxis: SELECT columna, COUNT(*) FROM tabla GROUP BY columna HAVING COUNT(*) > núm;
- Enunciado: Consultar los colores de los contenedores y mostrar los cuales haya mas de 3 en inventario
Análisis:
- ¿Qué se desea consultar y de que tablas?
contenedor.color
- ¿Qué tablas se ven afectadas o involucradas?
contenedor
- Condición(es)
HAVING COUNT(*) > 3

Remplazando nombre de la columna 'COUNT(*)' con 'AS'

Para utilizar un alias en una consulta de SQL, debemos agregar el comando AS para indicar a nuestra base de datos que estamos renombrando una columna o tabla.
Consulta SELECT con unión de tablas Inner Join:
Sintaxis: SELECT t1.columna1, t2.columna2 FROM tabla1 t1 INNER JOIN tabla2 t2 ON t1.id = t2.id;
- Enunciado: Consultar el nombre del capitan y su cedula junto con su barco y el IMO correspondiente
Análisis:
- ¿Qué se desea consultar y de que tablas?
capitan.cedula
capitan.nombre
barco.IMO
barco.nombre
- ¿Qué tablas se ven afectadas o involucradas?
capitan
barco
cap_barco
- Condición(es)
Ninguna

Consulta SELECT con unión de tablas Left Join:
Sintaxis: SELECT t1.columna1, t2.columna2 FROM tabla1 t1 LEFT JOIN tabla2 t2 ON t1.id = t2.id;
- Enunciado: Consultar que barcos no tienen asignados contenedores
Análisis:
- ¿Qué se desea consultar y de que tablas?
barco.IMO
barco.nombre
contenedor.color
- ¿Qué tablas se ven afectadas o involucradas?
contenedor
barco
barco_cont
- Condición(es)
Ninguna

Consulta LIKE:
| Consulta para buscar valores que comiencen con un determinado prefijo |
Sintaxis: SELECT columna FROM tabla WHERE columna LIKE 'prefijo%';
- Enunciado: Consultar barcos que sus nombres comiencen por 'A'
Análisis:
- ¿Qué se desea consultar y de que tablas?
barco.*
- ¿Qué tablas se ven afectadas o involucradas?
barco
- Condición(es)
WHERE barco.nombre LIKE 'a%'

Consulta LIKE:
| Consulta para buscar valores que comiencen con un determinado sufijo |
Sintaxis: SELECT columna FROM tabla WHERE columna LIKE '%sufijo';
- Enunciado: Consultar los barcos que sus nombres terminen en 'O'
Análisis:
- ¿Qué se desea consultar y de que tablas?
barco.*
- ¿Qué tablas se ven afectadas o involucradas?
barco
- Condición(es)
WHERE barco.nombre LIKE '%o'

Consulta LIKE:
| Consulta para buscar valores que contengan una determinada subcadena en cualquier posición |
Sintaxis: SELECT columna FROM tabla WHERE columna LIKE '%subcadena%';
- Enunciado: Consultar los nombres y el teléfono de los capitanes que sus cedulas tengan '16'
Análisis:
- ¿Qué se desea consultar y de que tablas?
capitan.cedula
capitan.nombre
capitan.telefono
- ¿Qué tablas se ven afectadas o involucradas?
capitan
- Condición(es)
WHERE capitan.cedula LIKE '%16%'

Consulta LIKE:
| Consulta para buscar valores que tengan una longitud específica |
Sintaxis: SELECT columna FROM tabla WHERE columna LIKE '______';
- Enunciado: Consultar los barcos que su nombre tengan 9 caracteres exactamente
Análisis:
- ¿Qué se desea consultar y de que tablas?
barco.IMO
barco.nombre
- ¿Qué tablas se ven afectadas o involucradas?
barco
- Condición(es)
WHERE barco.nombre LIKE '_________'

Consulta SELECT con función SUM:
Sintaxis: SELECT SUM(columna) FROM tabla;
- Enunciado: Consultar el total de peso de toda la mercancía en el muelle
Análisis:
- ¿Qué se desea consultar y de que tablas?
mercancia.peso
- ¿Qué tablas se ven afectadas o involucradas?
mercancia
- Condición(es)
Ninguna

Consulta SELECT con función MAX y SUBCONSULTA:
Sintaxis: SELECT * FROM tabla WHERE columna = (SUBCONSULTA);
- Enunciado: Consultar la mercancia con mayor peso en el muelle
Análisis:
- ¿Qué se desea consultar y de que tablas?
mercancia.*
- ¿Qué tablas se ven afectadas o involucradas?
mercancia
- Condición(es)
WHERE peso = (SELECT MAX(peso) FROM mercancia);

Consulta SELECT con función AVG:
Sintaxis: SELECT AVG(columna) FROM tabla;
- Enunciado: Consultar el promedio de peso de toda la mercancía
Análisis:
- ¿Qué se desea consultar y de que tablas?
mercancia.peso
- ¿Qué tablas se ven afectadas o involucradas?
mercancia
- Condición(es)
Ninguna

Consulta SELECT con función Between:
Sintaxis: SELECT columna FROM tabla WHERE columna BETWEEN valor_min AND valor_max;
- Enunciado: Consultar las mercancia que pesen entre 100 y 200 Kg
Análisis:
- ¿Qué se desea consultar y de que tablas?
mercancia.*
- ¿Qué tablas se ven afectadas o involucradas?
mercancia
- Condición(es)
WHERE peso BETWEEN 100 AND 200;

Consulta SELECT con función IN:
Sintaxis: SELECT columna FROM tabla WHERE columna IN (valor1, valor2, ...);
- Enunciado: Consultar las mercancia de los tipos 'Alimentos' y 'Dulces'
Análisis:
- ¿Qué se desea consultar y de que tablas?
mercancia.*
- ¿Qué tablas se ven afectadas o involucradas?
mercancia
- Condición(es)
WHERE tipo IN ('Alimentos', 'Dulces');

Crear Vista:
Sintaxis: CREATE VIEW ´nombre_vista´ as SELECT * FROM ´nombre_tabla´ JOIN 'nombre_tabla2' ON condición;
- Enunciado: Crear una vista de una tabla con los barcos y capitanes correspondientes

Vista creada:

Visualización:

Crear Función:
Sintaxis:
Delimiter //
Create procedure 'nombre función'(in parámetro(tamaño), in parámetro(tamaño))
Begin
Insert into 'tabla'(campo1, campo2) values(parametro1,parametro2);
End
//
- Enunciado: Crear una función que permita insertar datos a la tabla Capitan
Creación:

Uso:

Copia Base de Datos
https://remingtonedu-my.sharepoint.com/:u:/g/personal/luis_rendon_6273_miremington_edu_co/Eeo4pHvD2UJJuvT90wltm1YB_7rcMUDV_kuzduy1aLU4pw?email=javier.ospina%40uniremington.edu.co&e=VpVOtN