Исходя из моего понимания вашей проблемы, вы смотрите на нее с исторической точки зрения - «Какое программное обеспечение есть у пользователя и в какой профиль он входит».Вам нужно повернуть это с ног на голову и назначить все программное обеспечение, которое идет с профилем, а затем просто назначить человека на профиль.Затем они получат все программное обеспечение, связанное с профилем.
Итак, в вашем примере SoftwareUsers заменено на SoftwareProfile, и все, что нужно.