【问题标题】:designing core data database设计核心数据库
【发布时间】:2015-03-10 02:05:28
【问题描述】:

我正在尝试学习 osx,我想了解更多关于核心数据的信息。我已经阅读了部分文档和一些书籍,现在我正在试验一般的核心数据。

试图制作微不足道的 mac 应用程序,我在数据库设计问题中运行: 假设在 RDBMS 中你会有像这样的 ids、primaryKeys 和 foreignKeys

table products
productID
categoryID
etc....

table Categories
categoryID
etc.....

我的问题是:

  1. 什么是核心数据中的主键?
  2. 核心数据中外键的等价物是什么?
  3. 如何确保该记录在表中是唯一的?
  4. 谁能阐明核心数据数据库的设计理念?

任何关于核心数据的链接(除了来自苹果的核心数据编程指南)将不胜感激。

问候,约翰

【问题讨论】:

  • 如果您阅读 Apple 指南,您至少能够回答您的问题 4(关键字是 object graph 而不是 database)。外键称为关系,主键是 Core Data 自己的objectID,要使记录唯一,您必须在保存之前实现自己的验证。请在以后提出更具体的问题。
  • 我想这一切都是凭经验而来的。一开始,即使是显而易见的事情看起来也很复杂。您能否发布一个带有代码示例的链接,说明如何获取作为主键的 objectID?
  • 这个问题没有显示任何代表 OP 进行研究或努力的迹象。拜托,SO 不是你的谷歌
  • @user2417624 Core Data 有它供内部使用。您不应该将objectID 用于您自己的目的,或者直到您深入了解Core Data 是如何使用它的。但是,在这里你有它:developer.apple.com/library/ios/documentation/Cocoa/Reference/…

标签: ios objective-c macos core-data


【解决方案1】:

首先,您必须了解Core Data 是一个面向对象的持久层,而不仅仅是一个数据库。在这里,您必须将您的思维从记录、关节和查询转变为面向对象的设计。

在这里我试图回答你的问题:

1. What is the equivalent of primary key in core data?

Core Data 有自己的主键系统。每个对象都由一个唯一的“ObjectID”标识,该“ObjectID”将在内部用作主键。

您可以在实体中定义尽可能多的属性并将它们用作“主键”。但是,您将无法使您的“记录”(对象)唯一,因为“具有特定属性的对象是唯一的”是没有意义的。这种逻辑是你必须以编程方式添加它的人。

2. What is the eqivalent of the foreign key in core data?

外键在 Core Data 中由关系表示。有一对一关系和一对多关系。这意味着一个对象可以有一个指向另一个对象的指针(因此,在数据库中你会有一个“外键”)或者一个对象有一个包含其他对象的集合(例如一个数组)(因此,在数据库中你会有一个额外的表格来表示这个结构)。

3. How do you ensure that record is unique in the table?

如上所述,您不能。在 CoreData 中,每个上下文 (NSManagedObjectContext) 都有唯一的对象 (NSManagedObject),但您无法控制具有特定属性的对象在其他对象中是唯一的。

4. Can anyone clarify the design concept in core data database?

正如在介绍中所说,在这里你不应该从数据库的角度来思考。 Core Data 是一个面向对象设计的持久化框架。

Core Data 不是一个可以快速学习的简单东西。你需要花一些时间来了解你能做什么,最重要的是,为什么以及在什么情况下你应该这样做。

我强烈推荐你阅读核心数据编程指南:

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html

希望对您有所帮助,

【讨论】:

  • 感谢进一步挖掘的指导。
【解决方案2】:

如果您阅读 Apple Core Data Programming Guide,您可以了解并澄清您的疑问

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Articles/cdTechnologyOverview.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    相关资源
    最近更新 更多