【问题标题】:Core Data object graph design decision核心数据对象图设计决策
【发布时间】:2025-11-26 13:25:01
【问题描述】:

我正在设计一个跟踪 Game 对象数据的应用程序。每个Game 都有一个name、一个date 和其他属性。我遇到的问题是因为我希望用户能够添加更多名称(例如)以在应用程序中进行选择。 (在这种情况下来自 UITableView)。因此,用户会看到一个可供选择的名称列表,如果他们想要的名称不在列表中,他们可以将其添加到列表中。

我的解决方案是我目前有一个名为GameName 的第二个实体,这样当用户添加新的Game 时,我可以向用户显示这些游戏名称的列表以供他们选择。我只是在所有GameName 对象上调用NSFetchRequest 并将它们显示在UITableView 中。不必创建 Game 对象来执行此操作。

我的困境是我想知道这是否是一个好习惯。似乎如果我这样做,我最终会得到很多只有一个属性的实体,以便允许用户从可自定义的列表中进行选择并添加到自定义列表中。

我希望这是有道理的。我可以根据要求澄清任何事情。

【问题讨论】:

    标签: iphone ios database core-data


    【解决方案1】:

    您的方法很好,通常用于数据库设计。您要添加的实体在数据库中称为“域表”。见this page,尤其是这段:

    在规范化数据模型中,参考域通常在参考表中指定。按照前面的示例,一个 Gender 引用表将恰好有两条记录,每个允许值一条记录——不包括 NULL。引用表通过使用外键与数据库中的其他表正式相关。

    当然,您可能希望在 GameNameGame 实体之间建立一个可选关系。

    【讨论】:

    • 非常感谢您的链接和建议。我对我现在所做的事情感觉好多了。