情况如下:一个用户表包含与其他用户的数据重叠的数据,例如国家/地区,年龄段,性别等。
在MySQL中,我将使用三个或两个表。在存储国家的情况下,我将使用三个表:一个是用户表,另一个是国家表,最后一个将这两个表连接在一起。 (如果一个用户有一个国家,我当然可以使用两个表。)
ex)用户(id,otherUserInfo),
userCountry(id_user,id_country),
country(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
}
由于您可能不希望
Country
属于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
}
关于grails - 用于存储用户国家/地区,年龄段等的域设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13942169/