ПОЛЬЗОВАТЕЛЬ - это ЧЕЛОВЕК, а у ЛИЦА есть КОМПАНИЯ - пользователь -> человек - один к одному, человек -> компания - многие к одному.
person_id - это FK в таблице USER. company_id - это FK в таблице PERSON.
ЛИЦО может не быть ПОЛЬЗОВАТЕЛЕМ, но ПОЛЬЗОВАТЕЛЬ всегда остается ЛИЦОМ.
Если бы company_id был в пользовательской таблице, я мог бы создать уникальный ключ на основе имени пользователя и company_id, но это не так, и было бы дублированием данных, если бы это было.
В настоящее время я использую правило уникального имени пользователя / идентификатора компании в коде оболочки менеджера RoseDB, но это кажется неправильным. Я хотел бы определить уникальное правило на уровне БД, если могу, но я не уверен, как именно к нему подойти. Я пробовал что-то вроде этого:
alter table user add unique(used_id,person.company_id);
но это не работает.
Прочитав документацию, я не могу найти пример, который бы делал что-либо хотя бы отдаленно похожее. Я пытаюсь добавить несуществующую функциональность или что-то здесь не хватает?