我有2个实体,让我们说客户和公司(用户的子类)。
每个都有一个事件列表: ClientEvents 和 CompanyEvents
我们首先拆分这些表格(而不是使用事件表格)的原因是每种事件都不会混合(您只能在一个表格上运行)一次一种事件)。这也会导致有2个较小的表而不是一个大表。
两种类型的实体的属性和操作都是相同的,因此我可以将其建模为:
@MappedSuperclass
public abstract class **Event** {...}
@Entity @Table(name="client_event")
public class **ClientEvent** {...}
@Entity @Table(name="company_event")
public class **CompanyEvent** {...}
现在有一种方法可以查询每种类型的特定事件而无需在DAO中复制方法(使用hibernate或JPA,也许泛型会在这里使用)? 3.有没有经验法则?在这样的情况下(两个独立的存在但相同的属性和操作)来建模数据库表和实体?
答案 0 :(得分:1)
这取决于表的大小(总计事件数),您希望将这些事件保留在活动表中的时间长度,新事件的频率以及旧事件的检索。
如果新事件不频繁,您可以保留一个表格。如果新事件非常频繁并且您需要经常搜索它们,最好有两个单独的表。
通过将这些旧事件存档到一个表中,您可以更快地进行搜索/检索。
简而言之,任何设计都取决于业务需求。
多个表格可让您更快地搜索,而单个表格可让您轻松访问并简化代码/设计。
对于访问,您可以使用相同的方法,只需将事件类型作为参数传递,然后构建查询。