GraphGists

Entrega Neo4J - Repositorios de Información

Introducción

Somos Marcos Álvarez García (UO251182), Tomás Argüelles Di Renzo (UO253628) y Daniel Villanueva Pérez (UO251399), y este es nuestro proyecto de Neo4J para la asignatura de Repositorios de Información.

Dominio de aplicación

La base de datos representa una entidad bancaria. El liderato de esta es llevado por el CEO, que manda trabajo a los grupos de empleados (Ingeniero DevOps, Pasante, Gestor y Becario) a través de los encargados de grupo. De los empleados se puede saber el nombre, DNI, año de nacimiento, sueldo, grupo de trabajo, si fueron enchufados en su puesto, si son encargados, los estudios que tienen, y cursos adicionales que hayan hecho.

Sin embargo, como no se puede obviar el lado humano de los trabajadores, en el grafo también se refleja qué empleados ayudan, aprecian u odian a sus compañeros.

Los clientes del banco tienen cuentas de distintos tipos (corriente, ahorro o nómina) en las que guardan su dinero. Los gestores son asignados a las cuentas los clientes y se encargan de resolver las dudas o incidencias de sus dueños.

U4iWdXu

Representación gráfica de la base de datos

lmWalaK

Se han eliminado nodos de la instancia para facilitar la visualización.

El ceo manda trabajo a los nodos 1 (que aprecia al ceo), 7, 11 (al que odia el ceo) y 15, que se corresponden con los encargados de gestores, becarios, ingenieros y pasadores respectivamente.

El gestor 1 manda trabajo al resto de gestores (4, 5, 6). Entre ellos 4 gestionan las cuentas 64 (1), 67 (4) y 69 (6), 70(1). El gestor 5 no gestiona ninguna cuenta.

Los clientes 25 y 29 son dueños principales de las cuentas 67 y 70, mientras que 22 (que odia al gestor 1) y 28 (que aprecia al ceo) son dueños secundarios de 64 y 69.

El becario (7) manda trabajo al resto de becarios (8 y 9). 9 aprecia al ingeniero 11.

El ingeniero 11 (que es ayudado por el gestor 5) manda trabajo al ingeniero 12.

El pasador 15 manda trabajo al resto de pasadores (16 y 19). 16 ayuda al gestor 1, y aunque 19 es apreciado por el ceo, este odia al ceo.

Setup: Crear empleados, clientes y cuentas

1-Información del CEO

Objetivo: recuperar la información del ceo de la base de datos.

match(n) where n:ceo return n

2-Número de clientes guardados en la base de datos

Objetivo: recuperar el número de Clientes guardados en la base de datos

match(n) where n:Cliente return count(n)

3-Empleados odiados

Objetivo: conocer los empleados odiados por los clientes para estudiar sus casos y disciplinarlos si es necesario

match (n)-[:ODIA]->(m)
where n:Cliente AND not m:Cliente
return m

4-Empleados jubilables

Objetivo: conocer los empleados que empiezan a envejecer para poder reponerlos en caso de jubilación (Al ceo no se le puede reponer)

match (n)
where n.nacido<=1975 and not (n:Cliente or n:ceo)
return n

5-Empleado más odiado de la plantilla

Objetivo: encontrar cuál es el empleado más odiado de la plantilla. De esta manera, se podrá hablar con él y tratar de solucionar posibles conflictos que puedan surgir entre compañeros.

match()-[o:ODIA]->(m)
where not m:Cliente
with m, count(o) as odio
order by odio DESC
return m
limit 1

6-Camino más corto

Objetivo: Encontrar el camino más corto entre el Pasador 19 y la Ingeniera 14

MATCH path=shortestPath((p:Pasador {nombre:'Emerson Bridges'})-[*0..10]-(c:Ingeniero {nombre:'Jannat Mckinney'}))
RETURN path