首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对具有相同字段和功能的多个实体进行建模

如何对具有相同字段和功能的多个实体进行建模
EN

Stack Overflow用户
提问于 2012-09-25 13:58:01
回答 1查看 362关注 0票数 0

我有两个实体,比如ClientCompany (都是用户的子类)。

每个事件都有一个事件列表:ClientEventsCompanyEvents

我们最初将这些表拆分(而不是使用 events 表)的原因是,每种类型的事件都不能混合(一次只能对一种事件进行操作)。这也将导致有2个较小的表而不是一个大表。

  1. 这是个好办法吗?(大表数据量~1M) 也许不需要将这些表分割成两部分,只需要使用继承?
  2. 将其建模为实体的最佳方式是什么?

两种类型实体的属性和操作是相同的,因此我可以将其建模为:

代码语言:javascript
复制
 @MappedSuperclass  
 public abstract class **Event** {...}  
 @Entity @Table(name="client_event")  
 public class **ClientEvent** {...}  
 @Entity @Table(name="company_event")  
 public class **CompanyEvent** {...}

现在是否有一种方法可以在DAO中查询每种类型的特定事件而不重复方法(使用hibernate或JPA,也许泛型在这里是有用的)?

  1. 在这种情况下(两个独立的存在,但属性和操作相同)是否有“经验法则”来建模数据库表和实体?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-25 14:29:39

它取决于表的大小(事件总数)、希望将这些事件保存在活动表中的时间、新事件的频率以及对旧事件的检索。

如果新事件不频繁,可以保留一个表。如果新事件非常频繁,并且需要经常搜索它们,那么最好有两个单独的表。

通过将这些旧事件归档到一个表中,可以加快搜索/检索速度。

简而言之,任何设计都取决于企业的需要。

多个表将使您能够更快地搜索,而单个表将使您更容易访问和简化代码/设计。

对于访问,您可以使用相同的方法,只需将事件类型作为参数传递,并在此基础上构建查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12584526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档