Estoy desarrollando 3-4 programas interdependientes. Llámalos foo bar baz y auth. Quiero que sean independientes el uno del otro. Imagínese si licenciara cada programa a otras compañías. Algunas compañías pueden querer foo y bar, otras pueden solo querer baz, etc. También parece una buena práctica mantener la autenticación independiente también.
Contexto: auth se encarga de la autenticación para todos los sistemas. La tabla principal de usuarios en auth tiene user_id, correo electrónico, contraseña, primero, último
foo también tiene una tabla de usuarios que tiene campos específicos para la aplicación: user_id, role_id, etc.
Cada sistema tiene su propia base de datos. En el pasado, he creado una clave foránea de cada aplicación para la autenticación db. Eliminé los permisos de actualización de los otros dbs pero otorgué acceso selecto a ciertos campos relevantes. Esto parece una mala solución porque crea una dependencia estrecha, pero me permitió normalizar el db para que no tuviera que almacenar el nombre y el correo electrónico de los usuarios en las bases de datos foo, bar o baz.
¿Sería mejor almacenar la información en todas las bases de datos? ¿O sería mejor almacenar el Id. De autenticación en foo bar y baz y usar una API para obtener la información del usuario usando el authId?
Del mismo modo, podría tener clientes en los 3 sistemas. Claro que parece malo crear una dependencia en una base de datos de autenticación, pero ¿qué pasa con la base de datos del cliente en los 3?
O es la mejor solución para tener una base de datos central. Una tabla de usuarios.
¿Otras sugerencias?
foo bar
los ejemplos son a menudo demasiado abstractos para ser buenas ilustraciones.