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

标签 ios core-data data-modeling

我在 Core Data 中有以下建模问题。学生可以上课。 类(class)有以下字段:

title
date
grade
type

类(class)可以是以下三种类型之一:

类(class)类型1:

subtype11 subtype12 subtype13

类(class)类型2:

subtype21 subtype22 subtype23 subtype24

类(class)类型3:

 subtype31 subtype32 subtype33 subtype34 subtype35

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

最佳答案

模型的细节取决于您建模的数据的细节。

如果类型只是没有逻辑或行为的标记,那么最简单的模型是:

Student{
    lessons<-->>Lesson.student
}

Lesson{
    title:string
    date:date
    grade:number
    type:string
    subtype:string
    student<<-->Student.lessons
}

如果类(class)具有与每种类型关联的某种行为,那么您可以为每种类(class)创建子实体。

Lesson{
    title:string
    date:date
    grade:number
    student<<-->Student.lessons
}

TypeOne:Lesson{

}

TypeOneSubOne:TypeOne{

}

// ...etc

由于所有 Lesson 子实体都继承自 Lesson,因此它们也可以继承关系。所有不同的子实体都可以在 Student.lesson 关系中。

如果类(class)类型具有与其关联的行为,您也可以将它们分解为单独的实体。

Lesson{
    title:string
    date:date
    grade:number
    type<<-->Type.lessons
    student<<-->Student.lessons
}

Type{
    lessons<-->>Lesson.type
}

TypeOne:Type{

}

TypeOneSubOne:TypeOne{

}

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

关于ios - 寻求核心数据模型设计建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6022213/

相关文章:

ios - 无法从 nib 实例化 UIView。 "warning: could not load any Objective-C class information"

ios - 无法销毁使用 Core Data 和 SQLite 创建的持久存储

ios - 升级到 Xcode 7 会在 CoreData 模型上创建 "Missing current version declaration"警告

database-design - 为无唯一 ID 的数据开发 Cassandra "schema"

联系方式的sql数据库模型

ios - 将移动应用流量从 http 切换到 https

ios - 有没有一种快速的方法可以知道 WKWebView 是否可以在路径加载本地文件?

ios - NSPredicate 不适用于计算字段

ios - 如何通过单击单元格中的按钮来删除 tableView 中的单元格?使用核心数据

mysql - DBDesigner 的问题