Después de un intenso trabajo de refundición, recopilación, y poda despiadada, he establecido la que, de momento, es la estructura "definitiva" del proyecto Intriga.
La tenéis en esta imagen:
Estas son las tablas con relación. A ellas hay que sumar otras 9 tablas sin relación de las que ya se hablará luego.
El concepto de estas entidades y relaciones, en seudo-código sería (en negrita el nombre de las tablas):
Una empresa tiene usuarios que son personas que están en sedes.
Los usuarios tienen equipos adscritos
Los equipos envían datos al colector que levanta alertas que tienen categorías y umbrales asociados a acciones a tomar.
Si hay software propio en la empresa entonces:
Los programas (incluido el propio Intriga, claro) tienen una jerarquía de permisos asociados a sus usuarios que controla sus capacidades dentro de los mismos
Los programas registran sesiones que tienen alertas que tienen categorías y umbrales asociados a acciones a tomar.
Los programas registran un log de actividades realizadas por los usuarios.
He tenido que simplificar mucho la estructura original y en caso de empresas complejas habría, quizá que retocar algo, pero de momento, para empezar a levantar la carpa del circo, vale.
Hay cositas que pulir aún y saldrán a la luz pero hay una que me trae un poco de cabeza porque no se me ocurre cómo hacerlo:
Si os fijáis hay un "corte" en la estructura de las relaciones: La tabla colector, que recibe los datos de los equipos, debería estar relacionada con la tabla equipos... pero no se me ocurre cómo. Es decir: ¿Cómo identificar unívocamente un equipo... teniendo en cuenta que casi todo (nombres, piezas, etc.) puede cambiarse? Si le pongo el número de serie del disco, por ejemplo, el usuario puede cambiarlo por avería o mejora y ya se fastidió, lo mismo con las memorias, la placa base, el hostname o lo que sea. ¿Un fichero camuflado en la tripas del SO? con la frecuencia de actualización del sistema y la afición al cambio de distros... tampoco vale ¿Una combinación de varias cosas? quizá pero ¿cuales?
En principio me incliné por el número de serie de la placa base pero la forma de obtenerlo que conozco (el comando dmidecode) no siempre la ofrece...
A ver qué se os ocurre.
Saludos.
En el caso del Autónomo que tiene clientes, el autónomo es la Empresa, los clientes son los Usuarios. La titularidad de las máquinas sería "Externa" y el nivel de datos a recibir por el colector habría, quizá que limitarlo... más o menos.