В поисках рекомендаций по проектированию базовой модели данных - PullRequest
1 голос
/ 16 мая 2011

У меня есть следующая проблема моделирования в Core Data.Студент может брать уроки.Урок имеет следующие поля:

title
date
grade
type

Урок может быть одного из трех типов:

typeontype1 :

subtype11 subtype12 subtype13

тип урока2 :

subtype21 subtype22 subtype23 subtype24

тип урока3 :

subtype31 subtype32 subtype33 subtype34 subtype35

Как установить lesson.type для любого из этихтри типа уроков?Есть ли лучший способ смоделировать этот сценарий?

1 Ответ

1 голос
/ 17 мая 2011

Детали вашей модели зависят от деталей данных, которые вы моделируете.

Если типы являются просто маркерами, с которыми нет логики или поведения, то простейшей моделью будет:

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{

}

Базовая модель данных предназначена для моделирования реальных объектов, событий или условий и отношений между ними. Первым шагом в разработке модели является понимание этих реальных вещей и отношений между ними.

...