“核心数据不是关系数据库。”为什么知道这一点很重要?

2023-11-23

我意识到这对很多人来说可能是常识,所以如果这看起来像一个愚蠢的问题,我深表歉意。

我正在尝试学习iOS编程的核心数据,并且我反复阅读和听到它说核心数据(CD)不是关系数据库。但关于这一点,或者为什么了解超越学术意义的确切内容很重要,却很少有其他的说法。我的意思是至少在功能上,似乎你可以使用 CD,就像它是一个数据库一样,可以完成大多数事情 - 存储和获取数据、运行查询等。从我对它的初步理解来看,我并没有真正看出它与数据库。

我并不质疑这种区别的重要性。我相信,如果理解不了的话,很多聪明人都不会在这一点上浪费时间。但我希望有人能解释一下 - 最好用例子 - CD 不是关系数据库会如何影响我们使用它的方式?或者,如果我没有被告知 CD 不是关系数据库,这会对我作为 Objective-C/Swift 程序员的表现产生怎样的负面影响?

如果将 CD 视为关系数据库,人们可能会尝试错误地执行某些操作吗?或者,是否有一些事情是关系数据库无法做到的,或者做得不如 CD 设计的好?

感谢大家的集体智慧。


人们强调“不是关系数据库”的角度,因为具有一定数据库经验的人很容易在核心数据方面出现特定错误,而这些错误是由于过于直接地应用他们的经验而导致的。一些例子:

  • 创建本质上是 SQL 连接表的实体。这几乎没有必要,而且通常会使事情变得更加复杂并且容易出错。 Core Data 直接支持多对多关系。
  • 在实体中创建唯一的 ID 字段,因为他们认为需要一个 ID 字段来确保唯一性并创建关系。有时创建自定义唯一 ID 很有用,但通常没有用。
  • 根据这些唯一 ID 设置对象之间的关系,而不是使用 Core Data 关系——即保存相关对象的唯一 ID,而不是使用 ObjC/Swift 语义来关联对象。

Core Data 可以而且经常确实充当数据库,但从其他关系数据库的角度来思考它是一个好方法,可以把它搞砸。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“核心数据不是关系数据库。”为什么知道这一点很重要? 的相关文章

  • ViewWillAppear 没有被 UISplitViewController 调用

    背景和目标 我有一个基于 UISplitViewController 的 iPad 应用程序 到目前为止它支持 4 个方向 但现在我想将其锁定为仅横向 我变了shouldAutorotateToInterfaceOrientation左视图
  • 如何防止 RealmSwift 列表中出现重复项?

    如何防止向列表中添加重复项RealmSwift 我有我的User作为领域对象 但真正的数据源是服务器 只是使用领域在本地缓存用户 当我从服务器获取当前用户数据时 我想确保存储在领域中的用户拥有来自服务器的所有播放列表 以及它们的曲目列表等
  • “同时创建 xib 文件”按钮已禁用

    我在创建时遇到这个问题UIView s子类 创建 例如 UIViewControllers or UITableViewCells没关系 为什么会出现这种情况 I create view using cmd N and Xcode Vers
  • iOS Storyboards 我应该使用它们吗? [复制]

    这个问题在这里已经有答案了 我是 iOS 开发新手 尚未创建应用程序 但我向我的朋友寻求建议 他在市场上拥有非常高评价的应用程序 他说不要使用故事板 尽管我很想听取他的建议 但它们似乎确实很有帮助 这是否会在将来给我的应用程序带来问题 我有
  • 是什么导致了这个 iPhone 崩溃日志?

    我有点卡住了 需要解决这个问题 因为我的一个应用程序出现了随机崩溃 而这些崩溃并不总是能够重现 这是崩溃日志之一 Incident Identifier 59865612 9F00 44EA 9474 2BF607AD662E CrashR
  • 暂停视频录制[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试创建一个应用程序 用户可以在其中从相机录制视频 该应用程序的功能之一必须是文件录制中的暂停 例如 用户通过按 开始 按钮开始
  • ITMS-90535 无法使用最新的 Google Signin SDK 发布 iOS 应用程序

    我正在使用 xcode 7 GM 种子并通过 cocoapods 安装了最新的 Google Signin SDKpod Google SignIn 当我尝试将我的应用程序发布到苹果应用程序商店时 我收到附加错误 Help 以下是 Goog
  • Transit MKDirectionsRequest 产生 null 错误 Error Domain=MKErrorDomain Code=5 "(null)"

    我正在尝试使用 MapKit Directions Request 来获取两个坐标之间的交通方向 当我切换到其他 非 Transit 类型时 下面的代码可以工作 但是当我切换到 Transit 时 它会抛出一个错误 该错误在 Apple 文
  • 如何对 SQL 进行多次查询

    我正在尝试创建一个表 并在 PHP 脚本的帮助下在数据库中插入一些值 虽然只插入 1 行 但效果很好 当我尝试输入更多行数时 出现错误 我需要为每个查询编写完整的插入语句 因为我正在使用在线 Excel 到 SQL 查询转换器
  • pg_restore错误:角色XXX不存在

    尝试将数据库从一个系统复制到另一个系统 涉及的版本是9 5 0 源 和9 5 2 目标 源数据库名称是foodb与主人pgdba并且目标数据库名称将被命名foodb dev与主人pgdev 所有命令都在将托管副本的目标系统上运行 The p
  • 使用 Google place API 从 lat long 获取附近的地点

    我正在使用 google place API 即 https maps googleapis com maps api place search json location 33 7167 73 0667 radius 500 type f
  • FireMonkey iOS RAD Studio XE2 - 在从 URL 加载的表单上显示图像

    是否可以将 TImage 放置在 iOS 的 FMX 表单上 并将图像 jpg 从 URL 加载到此 TImage 中以在 iOS 应用程序中显示 我尝试过但没有成功 任何正确方向的提示或指出都会受到赞赏 将 TButton TImageC
  • PrepareForSegue之谜

    我在两个不同的 VC 中有一个prepareForSegue 方法 一个使用一个if声明 而另一个旨在使用switch 除了名称之外 代码几乎相同 这个效果很好 void prepareForSegue UIStoryboardSegue
  • 应用程序传输安全已禁用,但仍然出现 SSL 握手错误

    我在通过 HTTPS SSL 连接到 API 时遇到问题 我已经使用下面的字典完全禁用了应用程序传输安全性 ATS 尽管 SSL 证书通过了 NSCURL 的所有测试
  • 如何将音乐从我的应用程序切换到 iPod

    我在用MusicPlayerController我的应用程序中的对象来播放音乐 我知道当 iPhone ipod 应用程序终止时 可以继续播放我的应用程序音乐 我该怎么做 这涉及到一些事情 您必须在两种音乐播放器之间进行选择 应用程序音乐播
  • 如何更改已上传的 Firebase 存储图像文件名?

    我需要更改已上传到 firebase 存储中的文件名 因为 在 firebase 存储中上传图像后 我将 url 保存在 firebase 数据库中的特定子 文件夹 下 但是 当我将图像移动到另一个子 文件夹 时 我需要根据新名称更改存储中
  • iOS7 中“-webkit-overflow-scrolling: touch” 最初的屏幕外元素被破坏

    既然转基因种子已经发布了 我们现在可以谈谈了 看起来 iOS7 中的 webkit overflow scrolling touch 已损坏 最初不在屏幕上的元素的触摸事件不会触发 或者在某些情况下只是不可靠 这是一个例子
  • 将 iPhone 上的 stderr 写入文件和控制台

    我正在遵循答案中的建议here https stackoverflow com questions 5179108 iphone how to read application logs from device用于将 iOS 设备上的 NS
  • 退出导航控制器

    我试图离开初始视图控制器 并进入空白视图控制器 这很好 但是这会使空白视图控制器也成为导航控制器的一部分 这不是我想要的 我想脱离视图控制器 在视图控制器中 我尝试退出 它会自行弹出 当我尝试视图中的方法时 将出现目标视图控制器 self
  • 在 UIMenuItem 上设置accessibilityLabel

    我正在尝试设置accessibilityLabel of a UIMenuItem而且似乎没有效果 无论如何 VoiceOver 只是读取项目的标题 let foo UIMenuItem title foo action selector

随机推荐

  • 从正在运行的进程注入 DLL 后弹出

    我编写了这个函数来将 DLL 注入到正在运行的进程中 DLL Results CDLL Loader InjectDll DWORD ThreadTeminationStatus LPVOID VirtualMem HANDLE hProc
  • 比较今天或昨天的 NSDate

    好吧 我想这个问题已经被问过一千次了 但由于某种原因 答案并没有真正起作用或有其他问题 无论如何 这就是我的 工作 NSCalendar calendar NSCalendar currentCalendar NSDate currentD
  • Angular 指令不评估 ng-repeat 内部

    我有以下设置 应用程序 指令 var app angular module MyApp app directive adminRosterItem function return restrict E scope displayText t
  • FindFirstFileEx 的文件系统支持,仅限于目录

    我正在使用Windows API函数查找第一个文件Ex因为它提供了仅返回给定目录的子目录 忽略文件 的功能 但是 当我使用 required 标志调用此函数时 我仍然会收到文件和目录 MSDN 文档的FindExSearchLimitToD
  • 合法的数组赋值。是否可以?

    在阅读了 K R 书中有关结构的章节后 我决定做一些测试来更好地理解它们 所以我写了这段代码 include
  • OpenIdConnectAuthenticationHandler:message.State 为 null 或为空

    我正在使用 ASP Net Core 应用程序的 UseOpenIdConnectAuthentication 中间件来针对戴尔云访问管理器令牌提供商进行身份验证 设置以提供 OpenId OAuth2 身份验证 以下是代码 app Use
  • 全文搜索是答案吗?

    好的 我有一个看起来像这样的 mySQL 数据库 ID 一个 int 和记录的唯一 ID 标题 项目的名称 描述 项目描述 我想搜索目前我正在使用的关键字的标题和描述 选择 来自 项目 其中标题类似 key 这是可行的 因为数据库中没有太多
  • Memcached:AWS Elasticache 上的自动发现 python 支持?

    我开始将 AWS Elasticache 与我的 django Web 应用程序结合使用 我首先使用自动发现功能将缓存位置设置为唯一端点 但它似乎不起作用 我使用 pylibmc 1 2 2 和 django pylibmc sasl 0
  • 在 Windows Server 2008 上构建 Windows Phone 7 项目

    我的公司正计划针对 Windows Phone 7 进行开发 但是 我们拥有的构建服务器运行的是 Windows Server 2008 根据Windows Phone SDK 发行说明我了解到该 SDK 仅不支持 Windows Serv
  • 有哪些好方法可以防止人们复制我的源代码? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我有很多定制的 JavaScript 和布局设计 我想阻止人们使用这些 有没有什么实用的方法可以做到这一点 或者我基本上只需要高兴我的 php 代码没有显示 我想让至少让复制我的
  • 如何查看 git 中忽略的文件列表?

    过去几个月我一直在使用 git 我喜欢 git 我想知道是否有一个命令可以显示项目中被忽略的文件列表 我试过这个git status ignored从项目的根目录 但这似乎还不够 您可以使用clean带有选项的命令 n dry run Do
  • awk:对数组a的非法引用

    我正在尝试使用这个 awk 命令 awk F FILENAME ARGV 1 a FNR 1 FILENAME ARGV 2 for i 1 i lt length a i if match 0 a i print a i 1 16 pas
  • Autohotkey 应用程序特定热键

    我是 Autohotkey 的新手 尽管阅读了这个网站和官方文档 但我还是无法弄清楚这一点 我只想让某些热键仅适用于某些应用程序 例如 如果我在某个游戏中按空格键 我希望它发送 坟墓 但如果我不在该游戏中 我希望空格键正常工作 当我不玩游戏
  • ESLint:插件“react”之间存在冲突

    我在一个整体 npm 组件包内有一个 React 应用程序 React 应用程序用作演示站点 它使用此组件包作为 Storybook 之上的集成步骤 local component package storybook demos react
  • OpenMP while 循环

    我有一个运行多次迭代的代码 只有满足条件时 才会保存迭代的结果 这自然地表示为 while 循环 我试图使代码并行运行 因为每个实现都是独立的 所以我有这个 while nit
  • 如何在log4j.xml中设置过滤器

    HI 在我们的 Web 应用程序中 它打印所有日志 就像 Spring 和 JSF jar 文件一样 这对我们来说不是必需的 如何在 log4j xml 文件中设置为仅针对我们的应用程序进行过滤 Updated 以下是我们用于日志记录的配置
  • 编译器错误:“需要类、接口或枚举”

    我已经花了几个小时对该程序进行故障排除 尝试了几种配置 但没有成功 它是用java编写的 有33个错误 从之前的50个减少 源代码 This program is named derivativeQuiz java stored on a
  • SimpleUrlHandlerMapping的Java配置(Spring boot)

    我有一个现有的 Spring Web 应用程序 它使用两个扩展 AbstractController 的控制器 我想将 Spring Boot 集成到应用程序中 以便我们可以将其作为独立应用程序运行 我面临一个问题 因为 Spring 没有
  • Codeigniter:在将表单提交给控制器之前如何加密密码?

    我有一个简单的html登录表单
  • “核心数据不是关系数据库。”为什么知道这一点很重要?

    我意识到这对很多人来说可能是常识 所以如果这看起来像一个愚蠢的问题 我深表歉意 我正在尝试学习iOS编程的核心数据 并且我反复阅读和听到它说核心数据 CD 不是关系数据库 但关于这一点 或者为什么了解超越学术意义的确切内容很重要 却很少有其