0

情况如下:用户表包含与其他用户数据重叠的数据,例如国家、年龄组、性别等。

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

例如)用户(id,otherUserInfo),userCountry(id_user,id_country),国家(id,countryName)

作为 Grails 的新手,我想知道表示此模式的最佳方式是什么。是否需要创建 2-3 个域类?或者是否有一些神奇的功能(就像许多其他 Grails 功能 (:) 一样在单个域类中执行此操作。

4

1 回答 1

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
}

由于您可能不希望 aCountry属于 ,因此User您不需要Country类中的任何内容来表明与 . 的联系User。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
}
于 2012-12-18T23:14:54.040 回答