TJ *_*ers 9 database core-data ios
我意识到这可能是很多人的常识,所以如果这看起来像一个愚蠢的问题,请道歉.
我正在尝试学习iOS编程的核心数据,我反复阅读并听说它说核心数据(CD)不是关系数据库.但是关于这一点的其他内容却很少,或者为什么超越学术意识才知道这一点很重要.我的意思是至少在功能上,似乎你可以使用CD,好像它是大多数事物的数据库 - 存储和获取数据,运行查询等.从我对它的基本理解,我真的不知道它与数据库.
我并不怀疑这种区别很重要.我相信很多聪明人都不会浪费时间在这一点上,如果它没有用的理解.但是我希望有人能够解释 - 最好是用例子 - CD不是关系数据库如何影响我们如何使用它?或者,如果我没有被告知CD不是关系数据库,那么这会如何对我作为Objective-C/Swift程序员的表现产生负面影响?
如果将CD视为关系数据库,那么有人可能会尝试做错吗?或者,关系数据库不能做什么或者CD设计用的做得不好?
谢谢大家的集体智慧.
Tom*_*ton 12
人们强调"不是关系数据库"的角度,因为具有一定数据库经验的人容易因为尝试过于直接地应用他们的经验而导致Core Data出现特定错误.一些例子:
核心数据可以并且通常可以充当数据库,但是根据其他关系数据库来考虑核心数据是一个很好的方法.
核心数据是一项具有许多强大功能和工具的技术,例如:
名单继续..
Core Data的持久性部分由SQLite支持,SQLite是一个关系数据库.
我认为人们强调Core Data不是关系数据库的原因之一是因为它不仅仅是持久性,而且可以在不使用持久性的情况下利用它.
通过将Core Data视为关系数据库,我假设您的意思是对象之间的关系由id映射,即Customer有customerId,product有productId.这肯定是不正确的,因为Core Data允许您在对象模型之间定义强大的关系,使事情易于管理.
例如,如果您希望让您的客户拥有多个产品并希望在删除客户时删除所有产品,则Core Data使您无需管理customerIds/productIds并确定如何格式化复杂的SQL查询匹配您的内存模型.使用Core Data,您只需更新模型并保存上下文,SQL就是为您完成的.(事实上,您甚至可以通过传递'-com.apple.CoreData.SQLDebug 1'作为启动参数来打开调试以打印出SQL Core Data正在执行的操作.
在性能方面,Core Data进行了一些严格的优化,使访问数据变得更加容易,而无需深入研究SQL,并发或验证.
| 归档时间: |
|
| 查看次数: |
3558 次 |
| 最近记录: |