设计核心数据数据库

designing core data database

我正在努力学习 osx,我想了解有关核心数据的更多信息。我已经阅读了部分文档和一些书籍,现在我正在对核心数据进行一般性的实验。

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

table products
productID
categoryID
etc....

table Categories
categoryID
etc.....

我的问题是:

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

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

此致,约翰

如果你阅读 Apple Core Data Programming Guide,你可以得到一个想法并澄清你的疑惑

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

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

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

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

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

您可以在您的实体中定义和使用它们一样多的属性 "primary keys"。但是,您将无法使 "record"(对象)独一无二,因为它没有 "object with a specific property is unique" 的意义。这种逻辑是你必须编程添加的。

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

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

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

希望能有所帮助,