ios核心数据设计问题

Posted

技术标签:

【中文标题】ios核心数据设计问题【英文标题】:ios Core Data Design Issue 【发布时间】:2015-09-08 10:07:49 【问题描述】:

我正在尝试为我的应用程序创建一个核心数据模型。我在定义属性和关系时遇到问题。这是场景

我有一个合同管理应用程序。所以基本实体是Contract。它有一个租户,但可以有多个房东租户房东可以是个人公司类型。

我已经定义了如下表所示的实体。

我只创建了 LandlordTenant 以便从 Contract 中轻松引用它们。我觉得 Contract 应该与一个房东的名字有一个多对多的关系,因为一个合同可以有多个房东。我遇到的问题是每个房东都可能是个人公司。租户也是如此,尽管它始终是合同

这是房东的更新快照

& 租户实体

你能帮我定义我应该从 ContractLandlord && Tenant 建立什么样的关系(以及反向关系,如果有的话)?

这是我能想到的 ER 图! ;)

你能帮我定义我应该从 ContractLandlord && Tenant (以及反向关系,如果有的话)与他们每个人都是公司还是个人

谢谢

【问题讨论】:

先画出ER图 我添加了 ER 图 @SahebRoy。感谢您与我们联系! 我认为您应该定义一个实体,也许是“交易对手”,然后将 Person 和 Company 都设为 Counterparty 的子实体。那么在合同中,房东和租户的关系都应该与交易对方相关联。 【参考方案1】:

我已经设置了一些类似于您的数据结构。

在这种情况下对我有用的是设置一个实体来定义每个人在合同中扮演的角色,以及另一个实体来定义角色的类型。

所以在你的情况下,我会考虑使用这种结构......

删除实体业主和租户; 添加一个名为 ContractRole 的新实体,其关系为 contractcompanypersoncontractRoleType。 添加一个名为 ContractRoleType 的新实体,其属性为 type 和关系 contractRole; 对现有实体合同公司个人,添加新的关系contractRole; 实体ContractRoleType 将至少有两个types“房东”和“租户”。

因此,对于每个合同,您将输入至少两个 ContractRole 的数据,一个具有 ContractRoleType “Landlord”,另一个具有 ContractRoleType “Tenant”。

我发现这种类型的数据结构非常灵活。

【讨论】:

感谢您的回答。我如何知道 ContractRole 是公司还是个人?也许添加另一个属性? 在我的回答中,我建议类似...添加另一个关系(不是属性)...在这种情况下,关系 contractRoleType 与实体 ContractRoleTypetype /b>。然后,您可以在启动期间将默认类型输入实体 ContractRoleType 实际上,即使我的这个建议也不需要,因为实体 ContractRole 中设置的关系将决定“类型”是“房东”还是“租户” "。

以上是关于ios核心数据设计问题的主要内容,如果未能解决你的问题,请参考以下文章

数据库设计的核心问题

核心数据架构设计

核心数据设计:更好的 1 模型和 2 商店或 2 模型和 2 商店?

iOS 瓶颈:全局变量与核心数据或属性列表

iOS 核心数据关联

iOS核心笔记——多线程-单例设计模式