2012-08-26 140 views
0

我正在設計一個grails應用程序,許多多對多關係讓我難堪。 這是我迄今爲止...針對多對多關係的grails域類設計

域類

  • 學生
  • 測試
  • 問題

這裏測試和問題將有M2M關係。可能由映射類表示,如果我錯了,請糾正我。

TestConfig 

這個類可以有many questionsmany tests

但是我仍然對如何設計我的數據模型時學生進行測試和嘗試問題感到困惑。 一個可能被稱爲Attempts的課程,如果學生或考試或兩者都屬於同一類,那麼該課程將會有答案(可能是錯誤的)。

我想設計一個「嘗試」類,以便當我查看它的一個實例時,我可以知道它屬於哪個測試以及哪個學生接受了它。

我現在的類看起來像下面

class Questions { 
    String question 
    String questionType 
    int points 
    String tags 
    String option_1 
    String option_2 
    String option_3 
    String option_4 
    boolean isOption_1_Correct 
    boolean isOption_2_Correct 
    boolean isOption_4_Correct 
    boolean isOption_3_Correct 
} 

class Students { 
    String firstName 
    String lastName 
    String email 
    String password 
} 

class Tests { 
    String name 
    String tags 
    String description 
    int duration 
    String instruction 
} 

------編輯---------

我想我已經找到了這裏有用http://www.databaseanswers.org/data_models/online_exams/index.htm

+1

嘗試閱讀。一個好的開始是:http://stackoverflow.com/questions/574001/what-books-do-you-suggest-for-understanding-object-oriented-programming-design-d –

回答

0

從我所瞭解的一個學生有很多測試和測試有很多問題

這裏是文檔

http://grails.org/doc/2.1.0/guide/GORM.html#manyToMany

class Student { 
    // a list named tests which contains Test object 
    static hasMany = [tests:Test] 
    String name 
} 

class Test { 
    static belongsTo = Student 

    // a list named students which contains Student objects 
    // a list named questions which contains Quention objects 
    static hasMany = [students:Student,questions:Question] 
    String title 
} 

class Question { 
    static belongsTo = Test 
    static hasMany = [tests: Tests] 
    String data 
}