Объявите PK как (UserID, RoleID). (Примечание: порядок важен)
Объявите UserID как FK со ссылкой на таблицу Users.
Объявите RoleID как FK со ссылкой на таблицу Roles.
Если вам повезет, ваша СУБД предоставит вам составной индекс (UserID, RoleID) в указанном порядке.
Если повезет, это ускорит объединение пользователей и ролей. Хорошая СУБД предоставит вам объединение слиянием для объединения без каких-либо ограничений, кроме условия объединения. Трехстороннее объединение также должно выполняться довольно быстро, при условии, что количество ролей невелико.
Когда вы присоединяетесь к UserRoles и Roles, не присоединяясь к Users, вы можете обнаружить, что это очень медленно. Как часто вы это делаете, и насколько важна скорость в этом случае? Если это важно, вы можете создать индекс только для RoleID.