У меня есть вопрос о правильном определении отношений в Redux-ORM Models на основе схемы flatbuffer.
У меня есть следующая схема Flatbuffer:
table Team{
allMembers : [Member];
}
, поэтому я создал два модели для Redux-ORM, как показано ниже.
class Team extends Model{}
Team.modelName = 'Team'
Team.fields = {
}
class Member extends Model{}
Member.modelName = 'Member'
Member.fields = {
allMembersById : fk({to:'Team', as:'team', relatedName:'allMembers'}),
}
ситуация усложняется, когда я добавляю следующие поля:
table Team{
allMembers : [Member];
blueSquad : [Member];
redSquad : [Member];
}
Теперь возникает вопрос, стоит ли мне использовать внешние ключи или это другой тип отношений?
class Member extends Model{}
Member.modelName = 'Member'
Member.fields = {
allMembersByTeamId : fk({to:'Team', as:'allMembersTeam', relatedName:'allMembers'}),
blueSquadByTeamId : fk({to:'Team', relatedName:'blueSquad'}),
redSquadByTeamId : fk({to:'Team', relatedName:'redSquad'}),
}
, потому что, если я добавлю поле 'as' к другим определениям в соответствии с соглашением об именах ...
allMembersByTeamId : fk({to:'Team', as:'allMembersTeam', relatedName:'allMembers'}),
blueSquadMembersByTeamId : fk({to:'Team', as:'blueSquadMembersTeam', relatedName:'blueSquadMembers'}),
redSquadMembersByTeamId : fk({to:'Team', as:'redSquadMembersTeam', relatedName:'redSquadMembers'}),
Я могу прочитать это как:
Member.allMembersTeam // <- is a Team where i belong
Member.blueSquadMembersTeam // <- is a Team where i am in blueSquad
Member.redSquadMembersTeam // <- is a Team where i am in redSquad
Что говорит о том, что это уже отношение «многие».
Конечно, я могу добавить промежуточную модель MembersGroup, но я бы хотел ее избежать .
Я немного сбит с толку и не знаю, правильно ли я понимаю взаимосвязь между таблицами. Пожалуйста, скажите мне, если я прав, и определенно, если нет. Итак, наконец, у меня есть два вопроса. Имеет ли смысл это отображение схемы flatbuffer и модели Redux-ORM? Однако, если это отношение «много», на что мне обратить внимание?