寻求核心数据模型设计建议

时间:2011-05-16 19:15:36

标签: ios core-data data-modeling

我在Core Data中遇到以下建模问题。学生可以参加课程。 课程包含以下字段:

title
date
grade
type

课程可以是以下三种类型之一:

lessontype1

subtype11 subtype12 subtype13

lessontype2

subtype21 subtype22 subtype23 subtype24

lessontype3

 subtype31 subtype32 subtype33 subtype34 subtype35

如何将lesson.type设置为这三种课程中的任何一种?有没有更好的方法来模拟这种情况?

1 个答案:

答案 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{

}

核心数据模型旨在模拟真实世界的对象,事件或条件以及它们之间的关系。设计模型的第一步是了解那些真实世界的事物以及它们之间的关系。