2012-12-18 22 views
0

這裏的情況是:用戶表包含與其他用戶的數據,如國家,年齡,性別等重疊數據域設計,以存儲用戶的國家,年齡組等

在MySQL中,我將使用三個或兩個表格。在存儲國的情況下,我將使用三個表:一個是用戶表,另一個是國家表,最後一個是加入這兩個表。 (當然,我可以用兩個表,如果一個用戶有一個國家。)

EX)用戶(ID,otherUserInfo), userCountry(id_user,id_country), 國家(ID,國家名稱)

作爲Grails新手,我想知道代表這種模式的最佳方式是什麼。是否需要創建2-3個域類?或者是有一些神奇的功能(像許多其他Grails功能(:)這樣做在一個領域類

回答

2

更可能的是,你可以有兩個做

class User { 
    //other user info 

    //if user only has one country 
    Country country 

    //if user has many countries 
    static hasMany = [countries: Country] 
} 

class Country { 
    //country info 
} 

因爲你很可能不要。 「不想一個Country屬於User,你不需要在Country類的任何指示關係回到User。Grails的/格姆將處理在這兩種情況下創建鏈接的實體。

如果用戶有很多國家,您需要存儲其他信息您需要創建您自己的連接表的關係。例如,如果您需要保留用戶對該國的訪問次數:

class User { 
    //other user info 

    static hasMany = [userCountries: UserCountry] 
} 

class UserCountry { 
    static belongsTo = [user: User] 
    Country country 
    int numberOfVisits 
} 

class Country { 
    //country info 
} 
+0

謝謝!正是我想要的 – jjj