在这种情况下,我如何建立核心数据模型以及与啥关系?

Posted

技术标签:

【中文标题】在这种情况下,我如何建立核心数据模型以及与啥关系?【英文标题】:How do i set up a core data model and with what relationships in this case?在这种情况下,我如何建立核心数据模型以及与什么关系? 【发布时间】:2014-09-19 04:21:57 【问题描述】:

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

Team Player GameResult

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

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

GameResult 不过会有更多属性:

主队 客队 homeTeamScore awayTeamScore dateForPlayedGame

我想 homeTeam 和 awayTeam 都应该是实体类型 Team 的一个实例,我也不明白我该如何表示。我猜我也需要建立一些关系:一个球队可以有很多球员(在我的例子中是 4 个),一个球员可以属于很多球队(虽然不是同一场比赛中的主队和客队)。

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

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

编辑:我应该有一个游戏实体。我应该有这个而不是 GameResult 并让 gameResult 成为 Game 的一个属性,或者我应该仍然有 GameResult 作为一个实体吗?你们有什么感想?正如我之前提到的:我对数据库的了解非常有限(一般而言)......每个人都可以看到。

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

我不想说没有一般数据库知识你会更好,但你差不多。为了掌握核心数据,我必须忘记我所知道的关于 SQL Server 的一切。

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

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

说实话,它太容易理解了;)

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

GLTY。

【讨论】:

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

以上是关于在这种情况下,我如何建立核心数据模型以及与啥关系?的主要内容,如果未能解决你的问题,请参考以下文章

核心数据 - 如何在不触发错误的情况下检查对象关系是不是存在

iCloud 中基于 SQLite 的核心数据中的有序关系

Objective C - 核心数据和建立关系?

如何在 iOS 中建立多对多关系? (核心数据)

Actor 模型:在这种特定情况下如何实现数据完整性?

用户分析模型