我的Spring Boot实体是否规范化,如果不是,我该怎么做?

Are my Spring Boot entities normalised if not How can I do so?

提问人:shiningStar 提问时间:8/7/2023 最后编辑:philipxyshiningStar 更新时间:8/10/2023 访问量:59

问:

我有一个表与另一个表有 oneToMany 关系

 public class UserDetails {
    @Id
    @Column(nullable = false)
    private String userId;

    @OneToMany(targetEntity = Books.class,
            cascade = CascadeType.ALL,
            orphanRemoval = true,
            fetch = FetchType.EAGER)
    @JoinColumn(name = "userId",
            referencedColumnName = "userId",
            updatable = true,
            insertable = true)
    private List<Books> books = new ArrayList<>();

}

我的 Books 实体在哪里

public class Books {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @JsonIgnore
    private Long id;

    @Column(nullable = false)
    private String bookName;

    @Column(nullable = false)
    private Double bookPrice;
}

我的实体:

enter image description here

[![enter image description here](https://i.stack.imgur.com/8XHq7.png)](https://i.stack.imgur.com/8XHq7.png)

我可以为不同的用户为同一本书提供不同的价格。

我的实体是否正常化?

如果没有,我可以做出哪些改变?

设计 数据库 规范化

评论

0赞 Shadow 8/7/2023
对我来说,这看起来更像是一种多对多的关系,而不是一对多的关系。您需要为每个用户多次录制同一本书。
1赞 philipxy 8/7/2023
你在这里所说的“正常化”到底是什么意思,你是如何/在哪里被卡住的,遵循什么过程,做了什么?如何询问帮助中心 为什么我不应该上传代码/数据/错误的图片?

答:

0赞 Andrei Lisa 8/7/2023 #1

你的方法看起来不错,但我有一个建议给你,不要使用更多细节,请阅读下一篇文章,如何避免它,以及为什么使用它不是一个好的想法。FetchType.Eager

FetchType.Eager 代码异味

Hibernate 6 指南阅读 eager fetch 类型

评论

0赞 Andrei Lisa 8/7/2023
看起来不错,但就你而言,多对多更好。
0赞 Andrei Lisa 8/7/2023
因为,一个用户可以拥有多本书,一本书也可以拥有多个用户