lo que pasa es que si lo haces con una sola tabla, puedes dejar los campos vacios que no necesitas para empleado, viceversa para cliente y todos los que no apliquen para el que es solo usuario, no es lo mejor pero tampoco te ocupa espacio aunque los dejes vacios.
de la otra manera la consulta para identificar los empleados y los clientes es la siguiente:
Para trabajadores:
Código:
select * from usuarios, empleados where empleados.idUsuario = usuarios.idUsuario and usuarios.identificador = 1;
Para clientes
Código:
select * from usuarios, clientes where clientes.idUsuario = usuarios.idUsuario and usuarios.identificador = 2;
para todos los demas:
Código:
select * from usuarios where identificador = 0;
Donde 1 = Empleado, 2 = Cliente y 0 = Solo Usuario.
En cuanto al id del usuario, asi esta bien, ya que si no es ni cliente ni usuario simplemente no va a estar relacionado en ninguna otra tabla.
La relación entre la tabla usuarios - empleados/clientes seria de 1 a 1 con una participación parcial por parte de usuarios que quiere decir que cuando al menos una entidad en usuarios NO participa en alguna relación de empleados o clientes.