⭐ 1. 스키마 설계의 중요성
처음 백엔드 공부를 시작할 때 스키마 설계를 잘하는 것과 그에 따라 ERD를 잘 그려두는 것이 굉장히 중요하다고 배웠는데, 그때는 잘 와닿지가 않았다. 속으로는 내심 '그냥 하다가 안 맞으면 바꾸면서 하면 되는 거 아니야?' 란 생각을 했으나 관계형 데이터베이스에서 이는 큰 착각임을 시간이 갈수록 알게 됐다.
무엇이든 기초 토대가 중요하다 하였다 건물을 세우려면 지반을 튼튼하게 다져야 하고, 고중량의 웨이트를 들려면 코어가 단단히 받쳐줘야 한다. 이처럼 처음 스키마를 잘 설계해두는 것이 이후 개발에 있어 굉장히 중요하다는 것을 깨달았다.
⭐ 2. 테이블 간의 관계
테이블 간의 관계를 잘 매핑해두는 것은 굉장히 중요하고(JPA 활용 시) , 막상 이해를 한 것 같다가도 공부를 위한 프로젝트 진행 시 처음 스키마 설계에서 팀원들 간의 테이블 간 의견이 분분하다. 현재 진행 중인 캠프와는 별개로 마음이 맞는 사람들과 가볍게 Side-Project를 진행하려 했으나, 정작 개발에 들어가기에 앞서 이런 문서적인 측면에서부터 허둥지둥 호흡이 맞지 않았다. 그만큼 이 테이블 간의 관계에 있어서 다양하게 생각하기 나름의 연관관계가 매핑이 되기 때문에, 물론 가장 효율적인 매핑은 존재하겠지만 절대적으로 그것만이 정답이라고 할 수는 없는 것 같다.
⭐ 2.1 1:1 관계
하나의 레코드가 다른 테이블의 레코드 한 개와 연결된 경우이다.
위 그림과 같이 bookcard_id를 FK로써 도서이용카드 테이블과 bookcard_number가 한 명의 회원과 연결되었고, 그 반대도 같다면 이는 1:1 관계이다. 그러나 이러한 1:1 관계는 자주 사용하지 않는다 bookcard_number를 도서관 회원 테이블에 포함시켜 테이블을 만드는 것이 훨씬 효율적인 경우가 많기 때문이다.
⭐ 2.2 1:N 관계
하나의 레코드가 서로 다른 여러 개의 레코드와 연결된 경우이다.
1:1 관계와 달리 위 구조에서는 하나의 유저가 여러 개의 도서이용카드를 가질 수 있다, 실제로 카드를 분실했거나 재발급 받는 등, 카드 번호는 다르지만 그 카드는 한 회원에게만 적용되므로 이러한 관계를 1:N (일대다) 관계라 하고 관계형 데이터베이스에서 가장 흔히 볼 수 있는 관계이다.
⭐ 2.3 N:M 관계
여러개의 레코드가 다른 테이블의 여러개의 레코드와 관계가 있는 경우이다.
다대다 관계를 위해 스키마를 디자인할 때에는, Join 테이블을 만들어 관리한다.
> 스키마 설계에 있어서 우리가 가장 어려워하고, 헷갈리는 부분이지 않을까 싶다. 그만큼 다대다 매핑은 꼼꼼히 따져서 설계해야 한다고 생각이 든다
조인 테이블은 예시 그림을 봐도 잘 이해가 가지 않는다. 그냥 많이 생각해보고 다양하게 의견을 나누는 것이 중요하다고 생각이 된다.
+ 스키마 설계나 ERD 작성을 하며 추가적으로 배우는 것들이나 디벨롭된 생각이 있으면 추가 작성