在使用Grails进行数据建模时,使用常见的一对多关联的“最佳实践”方法是什么?

时间:2012-08-16 17:23:57

标签: database-design grails

举个例子:

该应用程序包含不同类型联系人的域类,例如

经理,ShopSteward,飞行员,棒球教练等

它们都是单独的类,因此在数据库中都有自己的单独表。

常见的要求是记录多个电子邮件地址。为了避免重复的代码,我会在src / groovy中创建一个名为EmailAddress的@Validatable类,当然包含emailAddress,以及该地址的可选标签。

现在,为了让所有这些不同的Domain类能够针对它们记录多个电子邮件地址,最好是创建新的Domain类来扩展EmailAddress并链接回关系的所有者方?

E.g。

class ManagerEmailAddress extends EmailAddress {
  static belongsTo = [Manager]
}

&安培;添加

 hasMany = [emails:ManagerEmailAddress]

到Manager类?或者,为了识别拥有的实体,是否有一个具有大量鉴别器的单个EmailAddresses表更好?

提前感谢您的意见/回复。

1 个答案:

答案 0 :(得分:1)

在不同的表/类上复制相同的结构很少是一个好主意(table-per-concrete-class会减少代码重复)。与鉴别器的备用数据库关系是父表应该合并的信号。

因此,提取像PersonContact这样的公共超类并将Emails连接到该类可能是有意义的。