Grails 存储用户的域设计';s的国家、年龄组等

Grails 存储用户的域设计';s的国家、年龄组等,grails,gorm,grails-domain-class,Grails,Gorm,Grails Domain Class,情况是这样的:用户表包含的数据与其他用户的数据(如国家、年龄组、性别等)重叠 在MySQL中,我会使用三个或两个表。在存储country的情况下,我将使用三个表:一个是user表,另一个是country表,最后一个连接这两个表。(当然,如果一个用户有一个国家,我可以使用两个表。) ex)用户(id,otherUserInfo), 用户国家(id_用户,id_国家), 国家(id,countryName) 作为Grails的新手,我想知道表示此模式的最佳方式是什么。是否需要创建2-3个域类?或者是

情况是这样的:用户表包含的数据与其他用户的数据(如国家、年龄组、性别等)重叠

在MySQL中,我会使用三个或两个表。在存储country的情况下,我将使用三个表:一个是user表,另一个是country表,最后一个连接这两个表。(当然,如果一个用户有一个国家,我可以使用两个表。)

ex)用户(id,otherUserInfo), 用户国家(id_用户,id_国家), 国家(id,countryName)


作为Grails的新手,我想知道表示此模式的最佳方式是什么。是否需要创建2-3个域类?或者是有一些神奇的特性(像许多其他Grails特性(:)一样)可以在一个域类中实现这一点。

很可能用两个域类就可以实现

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
}
由于您可能不希望
国家/地区
属于
用户
,因此不需要
国家/地区
类中的任何内容来指示与
用户
的关系。Grails/Gorm将处理在这两种情况下创建链接实体的问题

如果用户有多个国家/地区,并且您需要存储有关关系的其他信息,则您需要创建自己的联接表。例如,如果您需要保留用户访问该国家/地区的次数:

class User {
     //other user info

    static hasMany = [userCountries: UserCountry]
}

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

class Country {
    //country info
}