设计核心数据库

时间:2015-01-12 10:22:36

标签: ios objective-c macos core-data

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

尝试制作琐碎的mac app,我在数据库设计问题上运行: 假设在RDBMS中你会有像这样的id,primaryKeys和foreignKeys

table products
productID
categoryID
etc....

table Categories
categoryID
etc.....

我的问题是:

  1. 核心数据中主键的等价物是什么?
  2. 核心数据中外键的等价是多少?
  3. 如何确保记录在表格中是唯一的?
  4. 任何人都可以澄清核心数据库中的设计概念吗?
  5. 任何关于核心数据的链接(除了来自苹果的核心数据编程指南)都将受到赞赏。

    问候,约翰

2 个答案:

答案 0 :(得分:2)

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

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

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

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

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

2. What is the eqivalent of the foreign key in 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是一个面向对象设计的持久性框架。

核心数据不是一个快速学习的简单事物。您需要花一些时间来了解您可以做什么,最重要的是,为什么以及在哪些情况下您应该这样做。

我强烈建议您阅读核心数据编程指南:

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

希望能提供帮助,

答案 1 :(得分:0)

如果您阅读Apple 核心数据编程指南,您可以了解并澄清您的疑虑

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