Grails数据建模困境

时间:2012-08-04 21:53:11

标签: sql database-design grails polymorphism data-modeling

我希望有人可以帮助我决定对这个设计进行建模的最佳方法,听起来应该是一个简单的用例。

我有一个Client域类。我有一个Person命令对象和一个Firm命令对象,它代表一个公司或一个组织。

我也有子类,为了命名,我们可以为ClientSubClass1ClientSubClass2调用它们,它们都扩展为Client

我感到困惑的是,客户应该能够成为一个人或一个公司。

因此,我觉得最好的方法是使用嵌入并将Firm类和Person类嵌入到Client类中,并添加一个标志,指示客户端是个人还是公司。 否则,我无法看到如何使用继承来实现我的需要。

非常感谢任何想法,谢谢。

2 个答案:

答案 0 :(得分:0)

在Grails中,您可以在域类中使用继承,GORM将为您创建和管理数据库中的标志,而无需显式声明。我将创建从Client继承的Person和Firm域类。

命令类主要用于绑定控制器操作请求中的参数,这与数据的存储和检索方式有些无关。

答案 1 :(得分:0)

好吧,回答这个问题并将其打包,我决定创建一个更高级别的Contact域类,它有一个Person和Organization子类(tableperHierarchy false)。

客户端扩展了Person并包含一个嵌入式组织,以及一个标志,用于指示在引用该客户端时是否应该使用Person详细信息或组织详细信息,例如当我想显示客户端的名称时,我知道是否使用嵌入式组织的个人姓名(名称,姓名,姓名缩写,姓氏)或公司名称。

在Contact类定义中,我还使用了一个嵌入的Address类,保存在'src / groovy'中,因此它不会创建自己的表。

所以我有一个很好的组合和继承的混合。