Core data 我如何建立核心数据模型?在这种情况下,与什么关系?

Core data 我如何建立核心数据模型?在这种情况下,与什么关系?,core-data,Core Data,我正试图学习一些核心数据,而对于数据库(我知道核心数据不是,它是一个“对象图管理器”),我的知识一般有限,所以我需要一些帮助来弄清楚我到底需要存储什么以及存储在哪里。我想在模型中创建三个实体: 团队 Player GameResult 一个团队具有属性teamName(string),但是一个团队(在本例中)也应该有4个与之关联的玩家。这对我来说已经很难理解了:如何在团队实体中添加/表示玩家(对象)作为属性 Player实体现在将只有一个name属性作为字符串,最好是一个唯一的ID(?),以

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

  • 团队
  • Player
  • GameResult
一个团队具有属性
teamName
(string),但是一个团队(在本例中)也应该有4个与之关联的玩家。这对我来说已经很难理解了:如何在
团队
实体中添加/表示玩家(对象)作为属性

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

但是,
GameResult
还有一些属性:

  • 主队
  • 阿瓦泰姆
  • 主队得分
  • awayTeamScore
  • dateForPlayedGame
我想homeTeam和awayTeam都应该是实体类型
Team
的一个实例,我也不知道如何表示它。我猜我还需要建立一些关系:一个球队可以有很多球员(在我的情况下是4名),一名球员可以属于很多球队(但不是同一场比赛中的主队和awayTeam)

我真的希望能就如何建立这一模式提供一些想法和指导

编辑:我应该有一个
Game
实体。我应该用这个而不是
GameResult
,并让GameResult成为
Game
的一个属性,还是应该将
GameResult
作为一个实体?你们觉得怎么样?正如我之前提到的:我对数据库的了解非常有限(一般来说)…正如大家所看到的

如何在团队实体中添加/表示球员(对象)作为属性

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

玩家实体现在只有一个名为字符串的属性,最好是一个唯一的ID(?),以便以后能够跟踪单个结果

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

我想homeTeam和awayTeam都应该是实体类型团队的一个实例,我也不知道如何表示

我可能会考虑团队实体中表示“主场或客场”的属性。但如果你不喜欢,还有其他选择。我只是觉得对于一件只有两个可能值的简单事情来说,这可能是一件容易的事情。没有什么可以阻止对两者使用相同的实体

编辑:我应该有一个游戏的实体。我应该用这个而不是gameResult,让gameResult成为gameResult的一个属性,还是应该让GameResultas成为一个实体?你们觉得怎么样?正如我之前提到的:我对数据库的了解非常有限(一般来说)…正如大家所看到的

不知道会有什么不同。在我看来,一个包含“游戏结果”属性的游戏实体是有意义的。一场比赛总是有结果的,结果总是一场比赛的结果。所以,我不明白你为什么两者都需要

我不想说,如果没有一般的数据库知识,您会过得更好,但您几乎做到了。为了能够掌握核心数据,我不得不忘记所有关于SQL Server的知识

我能说的最好的一句话是,一旦“灯亮了”,它就会变得简单,对你来说意义重大。我最大的问题是不得不忘记我所知道的关于关系数据库的很多知识

我能说的主要一点是记住,一切都与托管对象有关。将关系构建到模型中,然后处理相关实体的托管对象集

说实话,这太有道理了,不容易理解;)

注意:您可以做的最好的事情之一是修改模型的设置,然后生成实体类编辑器|创建NSManaged对象子类。然后研究这些类并理解其中的每个关系集。至少这让我明白了


GLTY.

感谢您的指导。这正是我开始工作所需要的!:)如果遇到问题,请随时发回。如果我在附近,我会尽力回应。