1

アプリケーションのエンティティ間の関係をモデル化する際の基本的な設計上の質問があります。Appleのドキュメントによると、逆の関係はデータベースの整合性にとって非常に重要です。チーム、プレーヤー、マッチの3つのエンティティがあり、次の関係があります

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

上記の関係は単純で、チームには多くのプレーヤーを含めることができ、プレーヤーは複数のチームに属することができます。

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

私のMatchエンティティには、homeTeamとawayTeamの2つのプロパティがあります。現在、宛先は逆の関係のないチームに設定されています。アプリケーションは機能しますが、チームの試合と逆の関係がないという事実は好きではありません。だから、私はチームエンティティの逆の関係を設定するための最良の方法を理解しようとしています。また、チームは多くの試合を行うことができるため、チーム間で1対1の逆の関係を設定することはできません。ですから、私の最初の考えは、チームでプロパティマッチを作成し、それらをマッチと逆の関係にすることができるということです。このシナリオは機能しますか?または、チーム内にhomeMatches、awayMatchesなどの2つの逆の関係プロパティを作成する必要がありますか?

考えてくれてありがとう。

Javid

4

2 に答える 2

1

チームで homeMatches、awayMatches のような 2 つの逆関係プロパティを作成する必要がありますか?

うん。逆の関係は、元の関係を反映する必要があります。

その理由を理解するために、 on が bothとonの逆に設定されたmatches関係があるとどうなるか考えてみてください。関係の一方の方向については問題ないように見えます。呼び出しはの関係に追加する必要があります。しかし、それを逆にするとどうなるでしょうか。つまり、 を呼び出した場合、allStarGame のどのリレーションシップが使用されるでしょうか? それは未定義です...そのため、各関係には明確な逆が必要です。TeamhomeTeamawayTeamMatchallStarGame.awayTeam = redTeamaMatchredTeammatches[redTeam addMatchesObject:allStarGame]

于 2012-04-10T16:26:39.673 に答える
0

あなたの homeMatches、awayMatches のアイデアはうまくいくと思います。

もう 1 つ気になったのは、1 人のプレーヤーが複数のチームに所属している関係です。一度に複数のチームに当てはまらないと思います。これは、1 つのチームでの 1 人のプレーヤーの時間を説明するテーブル (おそらく RosterEntry と呼ばれる) が必要になることを示唆しています。Team と Player は RosterEntry で 1 対多になります。

于 2012-04-10T16:23:28.147 に答える