核心数据:与状态的多对多关系
Posted
技术标签:
【中文标题】核心数据:与状态的多对多关系【英文标题】:core data: many-to-many relationship with state 【发布时间】:2012-12-05 23:48:49 【问题描述】:我的应用中有两个实体:Class和Student,它们是多对多的关系,如下:
我的问题是,在我的应用程序中,一个班级的学生有两种状态:通过和失败。我不知道如何将其建模为班级或学生。例如,我应该制作另一个实体来表达学生的身份吗?还是只是为 Class 实体添加一个状态属性?
【问题讨论】:
【参考方案1】:大概你不能为班级添加一个属性,因为如果有 20 名学生上同一堂课,那么他们之间就只有一个属性?
您需要添加一个单独的实体,该实体与班级和学生具有一对一的关系,并且包含状态。反过来,学生和班级都与状态有一对多的关系。
编辑:我想另一种解决方案是将状态直接插入现有关系之间。所以一个班级有一组状态,每个状态都有一个学生。
因此,从班级到身份的关系是一对多的,从身份到学生的关系是多对一的。班级和学生之间没有明确的关系。
【讨论】:
核心数据系统会自动为我创建一个多对多连接表(ClassToStudent Table),我可以给那个表添加status属性吗? 否;无论 Core Data 内部创建或不创建的表都是实现细节,并且特定于后备存储的类型——无论是 SQL、属性列表、XML 还是其他。 Core Data 扩展的每一点功能都足够通用,可以在所有情况下等效地工作。 是的,可能就像介于两者之间的某种“ClassRegistration”MO - 放置“开始日期”、成绩等内容的好地方... 非常感谢,我知道怎么做了【参考方案2】:我建议使用第三个实体来表达学生在特定班级中的状态。例如一组“classStatuses”。由于您以后可能需要存储其他信息,例如成绩、学分、帮助记录等。
最终的方案类似于
班级 - 学生处于多对多关系中。
Student - ClassStatus 一对多。 (图片是学生正在学习的课程及其各自状态的数组)
这样您就可以搜索班级中的学生,搜索学生正在上的课程,查看班级的状态。
【讨论】:
以上是关于核心数据:与状态的多对多关系的主要内容,如果未能解决你的问题,请参考以下文章
核心数据断言 sectionNameKeyPath 重复出现的多对多关系