【问题标题】:Database design for an inverse to-many relationship in core data核心数据中逆对多关系的数据库设计
【发布时间】:2026-01-06 15:05:03
【问题描述】:

我正在开发一个使用核心数据的个人应用程序。我正在尝试设计一个数据库,该数据库可以帮助我根据我提供的一组特定营养素获取某些食物。这意味着,如果食品中含有任何这些营养成分,则必须退回。所以营养素和食物之间的关系是多对多的。

按照关系数据库的方法,我可以使用 3 个表来做到这一点; 1 表示营养素,1 表示食物,以及包含营养 ID 和 foodItemID 的映射表。这种方法很好,可以很容易地工作。但由于核心数据不是关系数据库,我不能在这里应用这种方法。

我的想法是不使用映射表,而是将营养素直接作为字符串包含在食物表中,其中每个营养素用“-”分隔,然后使用 NSPredicate 获取结果。我不太确定这种方法,如果有任何关于如何使用核心数据技术解决此问题的想法,我将不胜感激。

【问题讨论】:

    标签: ios swift core-data database-design relationships


    【解决方案1】:

    不要使用映射表。只需分配一个反向多对多关系的多对多关系,Core Data 就会创建映射表。

    如果您决定,稍后您需要诸如关系的数量之类的东西然后您需要第三个实体来连接。然后,该实体将与 Food 建立一对多关系,与 Nutrient 建立一对多关系,并且其中的每一个都将具有一对一的逆向关系。然后,该中间实体将包含有关关系的元信息(数量、计量单位等)。

    【讨论】: