В этой модели есть два уникальных значения: username и auth_id.
Итак, поскольку все пользователи не принадлежат к одной и той же группе сущностей, мы не можем проверять уникальность с помощью транзакций.И именно поэтому существует модель Unique: для обеспечения уникальности этих двух свойств.
Согласен, это очень сложно.Но как еще вы это сделаете?(честный вопрос)
Обновление: подробнее о том, почему именно таким образом проверяется уникальность.
Существует только два способа (безопасно) применить ограничение уникальности хранилища данных: транзакцииили используя ключ объекта.Транзакции ограничены до 5 групп объектов, и, используя ключ, вы ограничены 1 уникальным свойством.Если вы не хотите использовать ключ (потому что, скажем, свойство может быть изменяемым, например, электронное письмо), или вам действительно нужно больше уникальных свойств в том же виде, вам нужно создатьспециализированный вид только для проверки уникальности.Более или менее то, что сделано там в ссылке, которую вы разместили.