我对基于平面缓冲区方案的Redux-ORM模型中关系的正确定义有疑问。
我有以下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',blueSquadByTeamId : fk({to:'Team',relatedName:'blueSquad'}),redSquadByTeamId : fk({to:'Team',relatedName:'redSquad'}),}
因为如果我根据命名约定将'as'字段添加到其他定义中...
allMembersByTeamId : fk({to:'Team',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”中间模型,但我想避免这种情况。
我有点困惑,我不知道我是否很好地理解了表之间的关系。请告诉我我是否正确,如果没有,那么肯定。 所以最后我有两个问题。平面缓冲区方案到Redux-ORM模型的这种映射是否有意义?但是,如果这是一个“很多”关系,我应该注意什么?