Core data 核心数据-关系还是属性?

Core data 核心数据-关系还是属性?,core-data,Core Data,我有一个非常基本的、功能强大的清单应用程序,我想改进它 本质上,它只是一个37000(和不断增长的)项目的列表 现在,我有两个实体: 1) 检查表:包括以下属性:名称、编号、图像名称、组名称等-共14个。都是弦 2) 关键词:这包括一个属性:words,具有一对多nameKeywords关系。这将存储用于搜索的规范化名称 我的问题是:在这种情况下是否有理由使用多个实体?我是否应该删除关键字关系并将其作为附加属性添加?或者应该走另一条路,最小化属性并添加更多实体 我想让它尽可能简单(我不是一个

我有一个非常基本的、功能强大的清单应用程序,我想改进它

本质上,它只是一个37000(和不断增长的)项目的列表

现在,我有两个实体:

1) 检查表:包括以下属性:名称、编号、图像名称、组名称等-共14个。都是弦

2) 关键词:这包括一个属性:words,具有一对多nameKeywords关系。这将存储用于搜索的规范化名称

我的问题是:在这种情况下是否有理由使用多个实体?我是否应该删除关键字关系并将其作为附加属性添加?或者应该走另一条路,最小化属性并添加更多实体

我想让它尽可能简单(我不是一个经验丰富的程序员,这个应用程序也不是收入来源——它在商店里是免费的)——但我想让搜索更高效,如果可能的话,让我的用户满意。现在,当用户搜索一个项目时,它会在关键字实体中搜索规范化名称,但如果用户试图搜索所有项目,则可能需要一段时间

像往常一样,如果这个问题太模糊,我道歉。我很乐意根据需要提供澄清和代码片段


Zack

为了提高搜索速度,您可以对属性使用索引,但如果您可以显示数据库的模型,这会有所帮助

我不确定我是否遵循了有关
nameKeywords
关系的部分。它将关键字与关键字联系起来?清单和关键词之间有什么关系吗?@TomHarrington-我附上一张关系和模型的截图!请给出一个字符串的例子,这些字符串实际上存储在特定清单的关键字中。不同的检查表会有相同的搜索关键字吗?我想知道你的关系是否应该是多对多,每个关键字记录包含一个单词?例如,搜索“wibble”将返回一个与匹配此搜索的所有检查表相关的关键字。如果关键字的数量远远少于检查表的数量,这将使搜索更加有效。是否是这种情况将取决于您的数据。@ANDY边缘名称关键字是规范化名称中的所有单词,用空格分隔。例如,Marty McFly会得到一个规范化的名称Marty McFly,关键字是Marty和McFly,这样当有人搜索“ma”或“mc”时,Marty McFly会出现在列表中。如果多个检查表共用这些关键字,则使用多对多关系。在这种情况下,只有一个属性为“marty”的关键字实体,它与normalisedName中包含“marty”的每个检查表都有关系。这样,您可以搜索较少数量的实体。如果常见的关键字很少,那么就不用担心关键字实体,只需使用normalisedName字段。您可能希望在此字段的开始和结束处添加一个空格,以便通过在搜索文本前添加空格来启动样式搜索。我已使用指向数据库模型图像的链接更新了此问题-谢谢!