MySQL
의 무료 관리 툴인 Workbench
는 기존 만들어진 DB 스키마를 기준으로 ERD(Entity Relationship Diagram)를 추출하는 Reverse Engineer
툴을 제공한다.
User
테이블과 Cart
테이블은 1:1
관계를 맺었다.@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
public class User extends UserBase {
... (생략) ...
@OneToOne(fetch = FetchType.LAZY, orphanRemoval = true)
@JoinColumn(name = "CART_ID")
private Cart cart;
... (생략) ...
}
해당 엔티티를 Reverse Engineering
하면 1:1
관계가 👉 1:N
관계로 인식된다.
이와 같은 문제가 Capstone 프로젝트 당시에도 발생했는데, 이번 기회에 짚고 넘어가려 한다.
StackOverflow
에서 동일한 문제를 겪고 있는 질문을 찾았다.
after reverse Engineer MySQL Workbench change 1:1 relationship to 1:n
Mysql Workbench, Reverse Engineering
의 한계라고 한다.
1:N 관계에서 N은 1: 0...N 관계만을 나타내는 것이 아니라 1: 0...1 관계도 포함한다.
Mysql Workbench에서 Model을 Reverse Engineering을 이용해 ERD를 만들 때 발생하는 한계라고 한다.
인터넷에 있는 내용이니 직접 테스트를 해보자. 🤔
혹시 Mysql Workbench가 멍청해서 단방향 연관 관계를 인식하지 못하는 건가 ❓
@Entity
@Getter
@NoArgsConstructor
public class Cart {
... (생략) ...
@OneToOne(mappedBy = "cart")
private User user;
... (생략) ...
}
1:1 단방향 연관 관계
를 1:1 양방향 연관 관계
로 바꿔서 테스트해도 동일한 문제가 발생한다.
Mysql Workbench Reverse Engineering
기능을 통해 만든 ERD는 공유하기 전에 체크해 봐야겠다.