我在Core Data中遇到以下建模问题。学生可以参加课程。
课程包含以下字段:
title date grade type
课程可以是以下三种类型之一:
lessontype1 :
subtype11 subtype12 subtype13
lessontype2 :
subtype21 subtype22 subtype23 subtype24
lessontype3 :
subtype31 subtype32 subtype33 subtype34 subtype35
如何将lesson.type
设置为这三种课程中的任何一种?有没有更好的方法来模拟这种情况?
答案 0 :(得分:1)
模型的详细信息取决于您建模的数据的详细信息。
如果类型只是没有与之关联的逻辑或行为的标记,那么最简单的模型将是:
Student{
lessons<-->>Lesson.student
}
Lesson{
title:string
date:date
grade:number
type:string
subtype:string
student<<-->Student.lessons
}
如果课程有某种与每种类型相关的行为,那么您可以为每种课程创建子实体。
Lesson{
title:string
date:date
grade:number
student<<-->Student.lessons
}
TypeOne:Lesson{
}
TypeOneSubOne:TypeOne{
}
// ...etc
由于所有Lesson子实体都从Lesson继承,因此它们也可以继承关系。所有不同的子实体都可以处于Student.lesson
关系中。
如果课程类型具有与之相关的行为,您也可以将它们分解为单独的实体。
Lesson{
title:string
date:date
grade:number
type<<-->Type.lessons
student<<-->Student.lessons
}
Type{
lessons<-->>Lesson.type
}
TypeOne:Type{
}
TypeOneSubOne:TypeOne{
}
核心数据模型旨在模拟真实世界的对象,事件或条件以及它们之间的关系。设计模型的第一步是了解那些真实世界的事物以及它们之间的关系。