Детали вашей модели зависят от деталей данных, которые вы моделируете.
Если типы являются просто маркерами, с которыми нет логики или поведения, то простейшей моделью будет:
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
Поскольку все сущности урока наследуются от урока, они также могут наследовать отношения. Все различные сущности могут быть в отношениях Student.lesson
.
Если с типами уроков связано поведение, вы также можете разбить их на отдельные объекты.
Lesson{
title:string
date:date
grade:number
type<<-->Type.lessons
student<<-->Student.lessons
}
Type{
lessons<-->>Lesson.type
}
TypeOne:Type{
}
TypeOneSubOne:TypeOne{
}
Базовая модель данных предназначена для моделирования реальных объектов, событий или условий и отношений между ними. Первым шагом в разработке модели является понимание этих реальных вещей и отношений между ними.