sql - 许多其他实体引用的 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 个是外键。没有技术问题,我只是问这是否是一种不良做法,以及是否有更好的方法来做到这一点。
解决方案
推荐阅读
- sql - 结合 AND OR 和 NOT?
- kubernetes - chown:更改“/var/lib/mysql/”的所有权:在 kubernetes 的启动 pod 中不允许操作
- user-interface - Vscode 缩进指南:如何减少(而不是隐藏)太多/激进的垂直线?
- python - 全局名称“a”是否与模块在同一个命名空间中?
- python - 如何使用turtle python进行可控的病毒模拟
- java - 应用程序启动方法中的 JavaFx 异常和应用程序启动方法中的异常
- node.js - nodejs express中的ajax xmlhttprequests
- python - 如何使用 Python 突出显示基于其他文本的单元格中的特定文本?
- c# - 如何在 C# 中打印 FlowLayoutPanel?
- javascript - 减少javascript中的嵌套对象