Но это же проще запретить программно, чем городить огород в базе. К тому же обычно это вообще autogenerated поле (если это те id, которые мне представляются)
Да тут даже дело не в том, что это не получается сделать в ROOM, а в том, что валидацию можно сделать множеством других, более очевидных и простых способов
понимаю, что само понятие "ForeignKey" - внешний ключ, и правильнее было бы создать дочернюю таблицу, но хотелось уйти от избыточной информации, там есть сортировка и пришлось бы создавать еще поля для этого
Без обид, но из прочитанного я понял, что у тебя немного неправильное представление о построении таблиц. Тебе, конечно, виднее, но это само по себе странно звучит - "там есть сортировка и пришлось бы создавать еще поля для этого".
Почитай о том, как вообще строятся таблицы, просто нет вообще никакой проблемы в том, чтобы отсортировать каким либо способом - программно, либо докинуть какой нибудь ORDER BY в запрос
приложение - фамильное древо, периодически добавляются потомки и предки, айдишники идут по нарастающей, и порядок детей по возрасту у предка приходится сортировать мудреным способом