2012-04-10 63 views
1

我有一個基本的設計問題,爲我的應用程序建模實體之間的關係。 Apple文檔狀態反向關係對於數據庫完整性非常重要。我有三個實體,團隊,球員,比賽用下面的關係核心數據模型設計 - 逆關係

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

上述關係是直接的,一個團隊可以有很多的球員,玩家可以屬於多個團隊。

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

在我的Match實體中,我有兩個屬性homeTeam和awayTeam。目前,他們的目的地被設置爲無反向關係的團隊。儘管應用程序有效,但我不喜歡事實上與團隊匹配沒有任何反向關係。 所以,我想找出什麼是爲Team實體設置反向關係的最佳方法。另外,我不能與球隊建立一對一的反比關係,因爲一支球隊可以打很多比賽。所以,我最初的想法是我可以在Team中進行屬性匹配,並使它們與Match匹配。這種情況會起作用嗎?或者是否需要創建兩個反向關係屬性,如homeMatches,team中的awayMatches?

感謝您的任何想法。

Javid

回答

0

我覺得你homeMatches,awayMatches想法應該很好地工作。

另一件跳到我身上的是你的關係,一個玩家屬於多個團隊。我認爲對於多個團隊來說,這不應該是真實的,這意味着你可能需要一些中間的表格(也許稱爲RosterEntry),它可以用一個團隊來描述一個玩家的時間。然後團隊和玩家將與RosterEntry成爲一對多。

+0

其實你剛剛提出了一個很好的觀點。我剛剛意識到我沒有處理這種混亂的情況,即一名球員最終可能以兩支球隊相互競爭。不過,我認爲如果一名球員存在於兩支球隊中,只要他們不相互對抗,這應該不成問題。感謝您的意見。 – user320587 2012-04-10 16:31:17

1

我是否需要創建兩個反向關係屬性,如homeMatches,團隊中的awayMatches?

是。逆關係需要反映原始關係。

要了解原因,考慮,如果你對Team一個matches關係,其設定爲在MatchhomeTeamawayTeam的逆會發生什麼:它看起來不錯的關係的一個方向 - 呼叫allStarGame.awayTeam = redTeam應該添加aMatchredTeammatches的關係。但是當你反其道而行時會發生什麼?也就是說,如果您撥打[redTeam addMatchesObject:allStarGame],所有StarGame的關係中的哪一個被使用?它沒有定義......這就是爲什麼每個關係都需要一個明顯的逆轉。

+0

感謝您的評論。這說得通。 – user320587 2012-04-10 16:28:01