设计核心数据数据库



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

尝试制作琐碎的mac应用程序,我在数据库设计问题中运行:假设在RDBMS中,你会有id,primaryKeys和外键,就像这样

table products
productID
categoryID
etc....
table Categories
categoryID
etc.....

我的问题是:

  1. 核心数据中的主键等效于什么?
  2. 核心数据中外键的等价是多少?
  3. 如何确保记录在表中是唯一的?
  4. 谁能澄清核心数据数据库中的设计概念?

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

问候,约翰

首先,您必须了解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

希望对您有所帮助,

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

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

最新更新