首页 > 解决方案 > 许多其他实体引用的 SQL 实体 - 最佳实践

问题描述

我目前正在使用关系数据库和 jpa 的环境中工作,其中包含实体的大型实体Parameter通过很多步骤进行转换。每一步都将大实体转换为另一个实体,而Parameter实体四处移动并被其他实体引用。每一步都是持久化的。

在所有情况下,只有一个实体引用了 的集合Parameters,因此主要存在OneToMany关系。这意味着Parameter表有很多外键,目前大约有 8 个外键,感觉很像不好的做法。

对于被许多其他实体引用的实体是否有最佳实践,以防止关系数据库中的一个表包含太多外键?

示例:Parameter是一个类,我们用来表示,在后端生成表单告诉前端“这是一个文本字段”、“这是一个数字字段”、“这是一个下拉列表,允许来自 A 的值到 Z”。它看起来像这样:

@Data
@Entity
public class Parameter {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  private String name;

  //Enum
  private ParameterType type;
}

这意味着,有Form类:

public class Form{
 
  @OneToMany
  @JoinColumn(name="parameterId")
  private List<Parameter> parameters

}

就像Form还有Table其他输入机制一样,都持有一个列表Parameter,所以想象一下还有大约 7 个类都具有该属性

@OneToMany
@JoinColumn(name="parameterId")
private List<Parameter> parameters;

我现在的问题是,数据库表Parameter是一个有 11 列的表,其中只有 3 个是 的值Parameter,其他 8 个是外键。没有技术问题,我只是问这是否是一种不良做法,以及是否有更好的方法来做到这一点。

标签: sqljpaforeign-keysone-to-many

解决方案


推荐阅读