본문 바로가기
클론코딩

LMS Web 클론코딩 7 (ERD 설계, 도메인 테이블 설계)

by zho 2024. 1. 19.

2024/01/19

오늘은 ERD(Entity Relationship Diagram) 설계, 도메인 테이블 설계라고도 불리는 것을 해봤다. 내가 생각했을 때 ERD설계를 하는 이유는 다음과 같다. 여러 데이터가 있는 모든 서비스는 데이터(객체) 간의 관계가 있을 것이고 이 관계를 미리 설계하지 않고 개발을 한다면 개발 속도가 느려지고 문제가 생기면 어디서 문제가 생겼는지 확인하기가 어려울 것이다. 물론 작은 서비스라면 큰 문제가 없을 수도 있겠지만 서비스가 커지고 유지보수까지 본다면 ERD설계는 중요하다고 생각된다. 

 

그래서 어떻게 할까?

막상 하려니 머리속으로 생각했던 테이블을 어떻게 나누고 어떤 데이터들이 필요하고 어느 데이터 간의 관계가 있는지 정확히 모르고 있었다는 것을 깨달았다. 그래서 일단 종이에 막 적기 시작했다. 하다가 중간에 랩실 형한테 헷갈리는 개념과 ERD 설계 방법에 대해서 좀 물어보고 도움을 많이 받았다.

1차 ERD 설계

User와 Courses사이에 있는것은 UserCourse라는 것인데, 이는 JPA에서 자동으로 생성되긴 하지만 직접 만들어주는 것 나중에 테이블을 수정하는 데에 도움이 된다고 했다. UserCourse는 user_id와 course_id를 가지고 있는데, User에서 일대다 연결 또 courses에서 일대다 연결을 하여 중간 처리 역할을 해준다. (한 유저가 여러 개의 과목을 수강할 수 있고, 한 과목에 여러 명의 학생이 있을 수 있기 때문에)

 

일단 1차적으로 그려보고 erdcloud라는 서비스로 erd를 그려보았다. 여기서는 배달의 민족, 당근마켓 등의 erd 설계를 볼 수 있어 어떻게 설계했는지 보고 배울 수도 있고, 설치 없이 웹상에서 erd설계를 위한 기능이 잘 구현되어 있어 좋다. 

2차 ERD 설계

 

 

 

문제

테이블들을 다 그리고 관계를 선으로 이으려고 하는데 Identifying Relationship과 Non - Identifying Relationship의 차이에 대해서 아직 잘 이해하지 못하여서 알아보는 중에 있다.

728x90