Yo lo hago así mira, pero yo lo hago por cuestiones de privacidad, no sé si se aplique a lo que tú quieres hacer:
Tengo una tabla en donde tengo almacenados los datos de los usuarios que se pueden "registrar" en el sistema (nombre de la tabla=UsuariosExt), en la tabla UsuariosExt, tengo el tipo de usuario (jerarquía). Cuando una persona X trata de registrarse, forzósamente tiene que estar en la tabla de UsuariosExt, esto lo valido además de con el nombre y apellidos, con una clave para el caso de los alumnos y con el RFC para los demás tipos de usuarios. Yo te recomendaría que el usuario fuera el que se registrara, de esa manera, no tienes tú que estar asignando contraseñas y meterte en cuestiones de ese tipo. Cuando un usuario sí se puede registrar, entonces guardo sus datos (la contraseña entre otras cosas) en una tabla diferente (nombre de la tabla = Usuarios), y ahora tengo por decir algo aplicado en tu caso al PERSONAL en la tabla "UsuariosExt", y los datos necesarios para iniciar sesión (principalmente email, jerarquía y contraseña) de los USUARIOS del sistema en la tabla "Usuarios". Podrías relacionar esas dos tablas por una clave principal y así no duplicas la tabla entera, los datos principales estarían en la tabla UsuariosExt, y los datos para iniciar sesión estarían en la tabla Usuarios, y no serías tú el que tendría que introducirlos, mejor has una página de registro. Así se cumple que no todo el PERSONAL sea usuario del sistema, pero todos los usuarios tienen que ser PERSONAL. Espero que te sirva.
Mi correo es
[email protected]