2014-09-19 56 views
1

我想学习一些核心数据,当涉及到数据库(我知道核心数据不是,它是'对象图管理器')时,我的知识总体有限,所以我在某种程度上需要一些帮助找出我需要存储什么,以及在哪里。我有三个实体,我想在我的模型创建:我如何设置核心数据模型以及在这种情况下的关系?

  • Team
  • Player
  • GameResult

一支球队拥有的属性teamName(串),而是一个团队(以这种情况下)也应该有4名球员与它相关联。这对我来说已经变得非常棘手:我如何在Team实体中添加/表示玩家(对象)属性?

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

一个GameResult然而将有几个属性:

  • homeTeam
  • awayTeam
  • homeTeamScore
  • awayTeamScore
  • dateForPlayedGame

两个homeTeam和awayTeam我想象寿ld是一个实体类型Team的实例,我也不明白我可以如何表示。我猜测我还需要建立一些关系:一支球队可以有很多球员(我的情况是4个),一名球员可以属于很多球队(尽管在同一场比赛中不是主队和客场球队)。

我真的很感谢一些想法和指导如何建立这个模型。我可能有一个实体Game。我应该有这个而不是GameResult并让gameResult成为Game的一个属性,还是应该将GameResult作为一个实体?你们有什么感想?正如我之前提到的:我对数据库的知识(一般来说)非常有限......正如大家所看到的。

回答

0

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

您希望团队和玩家之间有“一对多”的关系。当你创建一对一关系时,你的模型会自动将一个NSSet放置在你的托管对象中,该对象包含团队中的一个队员列表。

玩家实体将现在只能作为一个字符串名称的属性,最好一个唯一的ID(?) - 能够跟踪个人成绩的后面。

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

两个homeTeam和awayTeam我想应该是一个实体型团队的一个实例,我也想不明白我怎么能代表。

我可能会考虑Team实体中指示“Home or Away”的属性。但如果你不喜欢那个,还有其他的选择。我只是想为只有两种可能的价值的简单事情,这可能是一件容易的事情。没有什么可以阻止两者使用相同的实体。

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

不知道会有什么不同。对我来说就像一个游戏实体,其中包括“游戏结果”的属性是合理的。游戏总是有结果,结果总是游戏。所以,我不明白你为什么需要这两个。

我不想说你没有通用的数据库知识会更好,但你差不多。我不得不忘记我所知道的关于SQL Server能够掌握Core Data的所有信息。

我可以说的最好的事情是,一旦“光线来临”,它将变得简单并且对您来说非常有意义。我最大的问题是不得不忘掉我所知道的关于关系数据库的许多东西。

我可以说的主要事情是记住,一切都是关于被管理的对象。您将您的关系建立到模型中,然后您将处理相关实体的NSSets托管对象。

说实话,它只是使太多的感觉是很容易理解;)

注意:其一,你所能做的最好的事情就是鼓捣建立模型,然后生成实体类编辑|创建NSManaged对象子类。然后研究这些类并理解它们中的每个关系集。至少,这就是让事情变得清晰的原因。

GLTY。

+1

谢谢你的指导。正是我需要能够开始! :) – 2014-09-19 04:56:50

+1

如果遇到问题,请随时发回。如果我在附近,我会尽力回应。 – RegularExpression 2014-09-19 05:19:03