El problema es este
Cita: 2 roles distintos en el mismo departamento
o
2 veces el mismo rol en un departamento?
Usuarios
idUsu
....
Departementos
idDep
....
Perfiles
idPerfil
RelUsuDepPerf
idRel
idUsu
idDep
idPerfil
Ahora debes definir un indice único compuesto de los tres identificadores (idUsu,idDep,idPerfil), idRel será la PK. Podrias no poner esa PK simple y definir una PK compuesta de los tres campos (idUsu,idDep,idPerfil), con lo que ya tendrías el indice unico. Yo prefiero la PK simple, pero el modelo relacional puro diria que es incorrecta.
https://dev.mysql.com/doc/refman/5.0...ate-index.html
Este indice evita que alguien tenga el mismo rol varias veces en el mismo departamento pero puede tener mas de un rol en el mismo departameto, si solo se puede tener un rol en un departamento quita el tercer campo