如何设置核心数据模型以及在这种情况下的关系?

时间:2014-09-19 04:21:57

标签: core-data

我正在尝试学习一些核心数据,而且我对数据库(我知道核心数据不是,它是'对象图管理器')的知识有限,所以我有点需要一些帮助弄清楚我需要存储什么,以及在哪里。我想在我的模型中创建三个实体:

  • Team
  • Player
  • GameResult

团队具有属性teamName(字符串),但团队(在这种情况下)也应该有4个与之关联的玩家。这是我理解的难点:如何在Team实体中添加/表示玩家(对象)作为属性?

Player实体目前只有name属性作为字符串,最好是唯一ID(?) - 以便能够在以后跟踪个别结果。

GameResult还有一些属性:

  • homeTeam
  • awayTeam
  • homeTeamScore
  • awayTeamScore
  • dateForPlayedGame

我认为homeTeam和awayTeam都应该是实体类型Team的实例,我也不明白我的代表性。我猜我也需要建立一些关系:一个团队可以有很多玩家(在我的情况下是4个),玩家可以属于很多团队(不过同一个游戏中的homeTeam和awayTeam)。 / p>

我非常感谢有关如何设置此模型的一些想法和指导。

编辑:我应该有一个Game的实体。我是否应该使用此而不是GameResult并将gameResult设为Game的属性,还是应该将GameResult作为实体?你们有什么感想?正如我之前提到的:我对数据库的知识非常有限(一般而言)......每个人都可以看到。

1 个答案:

答案 0 :(得分:0)

  
    

如何在Team实体中添加/表示玩家(对象)作为属性?

  

你想在团队和玩家之间建立“一对多”的关系。当您创建one-may关系时,您的模型将自动在您的托管对象中放置一个NSSet,其中包含团队中的玩家列表。

  
    

播放器实体现在只有一个名字作为字符串的属性,最好是一个唯一的ID(?) - 以便能够在以后跟踪个别结果。

  

我知道这听起来很奇怪,但不要担心唯一身份证。核心数据将为您处理,您永远不会错过它。你必须信仰这个,直到你看到它在行动;)

  
    

我认为homeTeam和awayTeam都应该是一个实体类型Team的实例,我也不明白我的代表方式。

  

我可能会想到Team实体中的一个属性表示“Home or Away”。但如果您不喜欢那个,还有其他选择。我只想到只有两个可能值的简单事物,这可能是件容易的事。没有什么可以防止对两者使用相同的实体。

  
    

编辑:我应该有一个游戏实体。我应该有这个而不是GameResultand让gameResult成为Gameor的一个属性,我还应该让GameResultas成为一个实体吗?你们有什么感想?正如我之前提到的:我对数据库的知识非常有限(一般而言)......每个人都可以看到。

  

不确定会有什么不同。在我看来,就像一个游戏实体,其中包含“游戏结果”的任何属性都是有意义的。游戏总是有结果,结果总是游戏。所以,我不明白为什么你们两个都需要。

我不想说你没有一般的数据库知识会更好,但你差不多。我不得不忘记我所知道的关于SQL Server能够掌握核心数据的所有内容。

我能说的最好的事情是,一旦“灯光亮起”,它就会很简单,对你来说也很有意义。我最大的问题是不得不忘记我对关系数据库的了解。

我可以说的主要事情是记住所有内容都与托管对象有关。您将关系构建到模型中,从那时起,您将处理相关实体的受管对象的NSSets。

说实话,理解起来太有意义了;)

注意:您可以做的最好的事情之一就是修改设置模型,然后生成实体类。创建NSManaged Object子类。然后研究这些类并理解它们中的每个关系集。这至少使我的事情变得清晰。

GLTY。