我正在尝试学习osx,我想了解更多有关核心数据的信息。我已经阅读了文档的一些部分和一些书籍,我现在正在试验核心数据。
尝试制作琐碎的mac app,我在数据库设计问题上运行: 假设在RDBMS中你会有像这样的id,primaryKeys和foreignKeys
table products
productID
categoryID
etc....
table Categories
categoryID
etc.....
我的问题是:
任何关于核心数据的链接(除了来自苹果的核心数据编程指南)都将受到赞赏。
问候,约翰
答案 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是一个面向对象设计的持久性框架。
核心数据不是一个快速学习的简单事物。您需要花一些时间来了解您可以做什么,最重要的是,为什么以及在哪些情况下您应该这样做。
我强烈建议您阅读核心数据编程指南:
希望能提供帮助,
琼
答案 1 :(得分:0)
如果您阅读Apple 核心数据编程指南,您可以了解并澄清您的疑虑