2011-05-16 61 views
1

我在Core Data中有以下建模問題。學生可以接受教訓。 的教訓具有以下字段:
尋求核心數據模型設計建議

title 
date 
grade 
type

的教訓可以是三種類型之一:

lessontype1

subtype11 subtype12 subtype13 

lessontype2

 
subtype21 subtype22 subtype23 subtype24 

lessontype3

 subtype31 subtype32 subtype33 subtype34 subtype35 

如何設置lesson.type任何這三種類型的教訓呢?有沒有更好的方法來模擬這種情況?

+0

是類型和子類的類嗎?或者他們只是一些指標?還有什麼取決於類型? – 2011-05-16 19:23:37

+0

@Nick Weaver是的課程類型是類,子類型是字段。如果課程類型改變了它們的顯示方式並添加更改。 – Sam 2011-05-18 08:22:00

回答

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{ 

} 

核心數據模型旨在模擬真實世界的對象,事件或條件以及它們之間的關係。設計模型的第一步是瞭解這些現實世界中的事物及其之間的關係。

+0

我認爲第三個解決方案是最優雅的解決方案。但由於其簡單的性質和較低的班級開銷,我將與第一個一起工作。 – Sam 2011-05-18 08:24:12