1

在为我的应用程序建模实体之间的关系时,我有一个基本的设计问题。Apple doc 指出反向关系对数据库完整性非常重要。我有三个实体,Team,Player,Match,具有以下关系

Team <--->> Player
Player <--->> Team

上面的关系很简单,一个 Team 可以有很多玩家,一个 Player 可以属于多个团队。

Match:
homeTeam <---> Team
awayTeam <---> Team

在我的 Match 实体中,我有两个属性 homeTeam 和 awayTeam。目前,他们的目的地设置为没有反向关系的团队。尽管应用程序有效,但我不喜欢与团队比赛没有反向关系的事实。因此,我试图弄清楚为 Team 实体设置反向关系的最佳方法是什么。此外,我无法在球队之间建立一对一的反向关系,因为一个球队可以打很多场比赛。所以,我最初的想法是我可以在 Team 中有一个属性匹配,并使它们与 Match 成反比关系。这种情况会奏效吗?或者我是否需要在 Team 中创建两个反向关系属性,例如 homeMatches、awayMatches?

感谢您的任何想法。

贾维德

4

2 回答 2

1

我是否需要在 Team 中创建两个反向关系属性,例如 homeMatches、awayMatches?

是的。反向关系需要反映原始关系。

要了解原因,请考虑如果您的matches关系Team设置为两者homeTeamawayTeamon的倒数,会发生什么情况Match:对于关系的一个方向来说,看起来没问题——调用allStarGame.awayTeam = redTeam应该添加aMatchredTeam' 的matches关系中。但是当你反过来做时会发生什么?也就是说,如果您调用[redTeam addMatchesObject:allStarGame],将使用 allStarGame 的哪个关系?它是未定义的......这就是为什么每个关系都需要一个不同的逆。

于 2012-04-10T16:26:39.673 回答
0

我认为你的 homeMatches, awayMatches 想法应该很好用。

让我感到震惊的另一件事是你的关系,其中一名球员属于不止一支球队。我认为这不应该同时适用于多支球队,这表明您可能需要在中间放置一张桌子(可能称为 RosterEntry)来描述一名球员在一支球队的时间。然后 Team 和 Player 将与 RosterEntry 是一对多的。

于 2012-04-10T16:23:28.147 回答