2014-03-06 47 views
0

我有玩家實體和遊戲實體。在CoreData中建立關係

一個玩家到很多遊戲關係。

所以玩家有位置屬性

  • 進攻
  • 防禦

當我創建的球員,該球員加入到我設置的位置進攻還是防守球隊。

但是對於不同的遊戲,玩家可以擁有進攻位置或防守位置,並且該位置不能被球隊中的球員覆蓋。所以如果我創造了位置進攻的第10號球員,它不能被修改,因爲球隊中的每個球員都佔據了位置。但是對於遊戲,如果我們想要的話,我們可以爲玩家設置新的位置。因此,假設對於id = 10的遊戲,我擁有id = 7的球員,其位置=進攻,但是我希望這個球員id = 7的球員對於id = 12的遊戲擁有陣地防守。

對於遊戲ID爲10,我們有位置的進攻球員

Game 
id = 10 
player.id = 7 
player.position = offense 

ID爲12的比賽,我們有相同的玩家

Game 
id = 12 
player.id = 7 
player.position = defense 

所以陣地防禦正如你可以看到我用不同的遊戲,但使用相同的播放器,如果我將設置新的參數player.position我會覆蓋previ這個價值並不好,因爲它會存儲最新的位置,當我獲得玩家時,我將擁有最後修改位置的玩家。

我想使這是在接下來的方式:

我的球員的實體,所以做出對短號遊戲中每個玩家不同的位置,我需要複製這個實體,並設置我想要的位置,但問題那就是我會重複玩家,並且它不好,因爲更好的方式是爲每個遊戲使用相同的玩家(一個玩家),並有另一個對象來保存具體玩家的具體遊戲參數。

它有道理嗎?或者,也許我需要另一種方法來解決這個問題。無論如何,我認爲最好的方式是不要複製玩家。

+0

您是否考慮過使用實體「玩家屬性」或「玩家技巧」來保存數據,如位置和其他屬性以及player.id?而你的實體遊戲喜歡這個遊戲 ID = 10 player.id = 7 playerSkill.position =進攻 playerSkill.idplayer = 7 playerSkill.speed = 9 .... ???? –

+0

不知道我完全理解這個設置,但也許你可以在遊戲和玩家之間引入第三個實體,也許稱之爲PlayerPosition。它會提及遊戲和玩家,以及玩家對比賽的位置。通過這種方式,玩家的原始位置將被單獨保留,然後您可以查詢他在防守時所扮演的角色。 –

+0

@ SonGoku68是的,我認爲每個玩家應該有一對多的關係。在你的建議中,一個玩家將擁有許多技能。我對嗎?我會爲每個遊戲參數化這個技能。正確? –

回答

1

我對這些情況的解決方案應該是這樣的

Game 
id = 10 
player.id = 7 
playerSkill.position = offense 
playerSkill.idPlayer = 7 
playerSkill.speed = 9 

Player 
id 
name 
nationality 
... 

PlayerSkill 
position 
idPlayer 
speed 
.... 

所以你必須每場比賽,他的技能的球員,你可以創建同一個玩家的新遊戲,並創建新的技能