Hola a todos,
Quiero plantearos un problema con el que me he encontrado y para el cual se me ocurren un par de soluciones, pero me gustaría saber si alguien conoce una "solución óptima" en el sentido de si existe una especie de "best practice" para resolverlo.
Tengo una BD para gestionar el workflow de una agencia literaria, donde tengo varias tablas que contienen los datos de distintos tipos de usuarios:
EMPLEADOS: Los currelas de la empresa
AUTORES: Usuarios ajenos a la empresa que la proveen con sus obras
PROVEEDORES: Usuarios ajenos, normalmente directores de editoriales que nos dan trabajos para vender en el extranjero
TRADUCTORES: Autónomos que se encargan de mantener la web bien traducida en varios idiomas
(y algunos más)
Todos estos usuarios deben acceder al sistema para hacer cada uno sus tareas: por ejeplo un EMPLEADO puede entrar para emitir una factura, un AUTOR para subir un texto a la BD, un PROVEEDOR para borrar un título que estabamos representando y un TRADUCTOR para corregir el alemán de una página de la web.
Cada uno de estos grupos está alamacenado en su tabla correspondiente, pero todos ellos deben acceder por la misma página de login, se se encargará de validar el par usuario-password de cada uno.
La pregunta principal que os planteo es:
A) ¿Debo incluir los campos LOGIN y PASSWORD en cada una de las tablas mencionadas? o en cambio B) ¿Debo crear una tabla USUARIOS que incluya todos los LOGIN y PASSWORD de todos los tipos de usuarios y luego relacionar cada registro de esta con un registro de una de las otras tablas (p. e, a través de un campo email, que es clave única)?
A) Tiene la ventaja de ser más sencillo de implementar, pero me obliga a ir buscando el par LOGIN-PASSWORD por las varias tablas, una a una y además tendría que implementar funciones para asegurar que no se produzcan repeticiones de este par entre varias tablas
B) Me permite buscar LOGIN_PASSWORD de una sola consulta y evitar las inconsistencias, pero me complica las consultas de acceso a los datos, obligándome a hacer más JOINS, etc.
Alguien tiene una C) que sea mejor que estas dos?
Muchas gracias a todos