Objective-C和像SQLite这样的RDBMS之间的交互是什么?

时间:2011-01-13 17:36:23

标签: objective-c sqlite class-design data-modeling rdbms

我想学习如何从Objective-C将数据保存到RDBMS,我真的不知道从哪里开始学习它。我学习RDBMS吗?我是否学习数据建模?

我想知道在对数据建模时是否存在技术或特殊注意事项,以免遇到任何陷阱?即有没有经验法则,如“不要子类”或“总是封装你的属性。”

在我有限的经验中,将Objective-C类转换为关系数据库非常困难。看起来CoreData可能会让我开始走上正确的道路,但似乎CoreData有点让我觉得很多事情是理所当然的(我很想知道SQL调用带来了什么。 ...)。或者我理解这个框架错了吗?

我正在寻找任何能让我开始更好地理解RDBMS以及Objective-C模型类通常如何与它们进行数据存储交互的资源。

编辑:

为了回答我自己的好奇心,我选择了Joe Celko的Smarties SQL和Clare Churcher的Beginning Database Design。通过非SQL语言(在我的例子中是Objective-C),SQL和数据库中编写的控制器类之间的交互,它们都没有给出太多帮助。有一个缺失的链接,我只是不理解......

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

很抱歉,回到你身边需要很长时间。你问的不是Objective-C的具体内容。我第一次将面向对象的代码连接到RDBMS是NextStep中的Enterprise Object Frameworks。但从那时起,这个想法就被大多数面向对象语言所复制,包括Java和Ruby(参见ActiveRecord)。

从概念上讲,在编程方面通常有一个实体类用于表示表的每一行。在某些情况下,例如CoreData或WebObjects,映射用于在应用程序代码和数据库之间创建接口。由于此映射,开发人员可以使用通用实体类的实例来表示数据。当然,很多时候,该类被子类化为添加特定实体的特定方法。

例如,假设您有一个联系人表,其中包含一个名称列和一个姓氏列。通常在应用程序中,您希望显示全名。在实体类的子类中,可以添加一个方法,将第一个和最后一个名称作为单个字符串返回。

在其他框架中,例如ActiveRecord,我相信你必须总是有一个代表每个表的子类。

从概念上讲,我发现面向对象的编程与RDBMS很好地吻合。

表(联系人) - >班级(联系方式)

行 - >类的实例(aContact)

列(firstName) - >属性(又名实例变量,属性)(firstName)

关系:

to-one (father) -> Properties (father, an instance of Contact)

to-many (emailAddresses) -> Array (emailAddresses, an array of instances of EmailAddress class)

希望这能更好地回答你的问题,