[ReSeller Project] Mysql Workbench 8.0.28, Reverse Engineering 툴로 ERD 추출 시, 1:1 관계 👉 1:N 관계로 인식

홍정완·2022년 9월 7일
0

ReSeller Project

목록 보기
9/15
post-thumbnail

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는 공유하기 전에 체크해 봐야겠다.

profile
습관이 전부다.

0개의 댓글