【问题标题】:What is the interaction between Objective-C and RDBMSes like SQLite?Objective-C 和 SQLite 等 RDBMS 之间的交互是什么?
【发布时间】:2011-01-13 17:36:23
【问题描述】:

我想学习如何从 Objective-C 将数据持久化到 RDBMS,但我真的不知道从哪里开始学习。我要学习 RDBMS 吗?我要学习数据建模吗?

我想知道在对数据进行建模时是否有一些技术或特殊考虑因素,以免陷入任何陷阱? IE。是否有诸如“不要子类化”或“始终封装您的属性”之类的经验法则。

根据我有限的经验,将 Objective-C 类转换为关系数据库非常困难。看起来 CoreData 可能会让我走上正确的道路,但 CoreData 似乎也给了我很多理所当然的事情(我很想知道 SQL 调用的幕后情况...)。还是我对这个框架的理解有误?

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

编辑:

为了回答我自己的好奇心,我选择了 Joe Celko 为 Smarties 编写的 SQL 以及 Clare Churcher 的《Beginning Database Design》。它们都没有真正通过用非 SQL 语言(在我的情况下为 Objective-C)、SQL 和数据库之间的交互来提供太多帮助。缺少一个我只是不明白的链接...

【问题讨论】:

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


    【解决方案1】:

    【讨论】:

    • BaseTen 看起来很有趣,但它并没有真正让我深入了解 RDBMS 和 Objective-C 如何协同工作以保持模型数据(本地或外部)的背景和理论。我可以看到如何使用这个框架来说明理论、示例和最佳实践,但是仅仅通过学习另一个框架的语法并不能理解这些“高级”概念。当然,如果它确实并且我错过了重点,我将不胜感激您能分享任何进一步的理解。
    【解决方案2】:

    抱歉,这么久才回复您。您要问的不是Objective-C特有的。我第一次介绍将面向对象的代码连接到 RDBMS 是 NextStep 中的 Enterprise Object Frameworks。但从那以后,这个想法已经被大多数面向对象的语言所复制,包括 Java 和 Ruby(参见 ActiveRecord)。

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

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

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

    从概念上讲,我发现面向对象编程与 RDBMS 非常吻合。

    表(联系人)-> 类(联系人)

    行 -> 类实例 (aContact)

    列(名字)-> 属性(又名实例变量、属性)(名字)

    关系:

    to-one (father) -> Properties (father, an instance of Contact)
    
    to-many (emailAddresses) -> Array (emailAddresses, an array of instances of EmailAddress class)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 2014-07-25
      • 2018-03-02
      • 1970-01-01
      相关资源
      最近更新 更多