У меня есть две модели: Person
и Team
Допустим, модели просты (достаточно предположить базовые типы string / int):
team:
id
name
ownerId
и
person:
id
name
Я хочу представить ассоциации между этими двумя моделями, чтобы Человек мог принадлежать ко многим Командам, а Команда может принадлежать ко многим Людям (то есть отношениям между многими).
Комусделать это прямо в Sequelize:
Team.belongsToMany(Person, {through: 'TeamPerson'})
Person.belongsToMany(Team, {through: 'TeamPerson'})
Это создаст новую таблицу с именем TeamPerson
с обоими teamId
и personId
.Я предполагаю, что первичный ключ этой таблицы является составной частью обоих идентификаторов.
Я также хочу, чтобы у каждой команды был капитан:
Team.belongsTo(Person {as: 'captain'})
Это добавит captainId
к модели команды.
Вот моя проблема, я хочу, чтобы Человек мог создать Команду, но я не хочу, чтобы они могли создавать две команды с одинаковым именем.Однако я хочу разрешить другим лицам создавать команду с тем же именем, что и другие лица.Таким образом, у идентификатора пользователя 1 не может быть двух команд с именем «Соколы», но у идентификатора пользователя 1 может быть одна команда с именем «Соколы», а у идентификатора пользователя 2 может быть команда с именем «Соколы».
По сути, имя и captainId должны быть составным первичным ключом таблицы Team.Кто-нибудь может дать мне совет, как мне этого добиться?