Notice
Recent Posts
Recent Comments
Link
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Jiny

250130 본문

Study

250130

Jieun13 2025. 1. 31. 01:54

1월 동안 스프링부트 프로젝트를 3개 정도 개발을 해봤는데, 
그냥 막 적으니까 아무래도 이대로는 안 되겠다는 생각이 들더라고... 
보통 프로젝트를 할 때 백엔드 아키텍처, 데이터베이스 테이블을 먼저 설계하고 개발을 시작한다고 하는데
나는 냅다 인텔리제이를 켜고 무작정 개발을 시작했으니... 

코드가 늘어날 수록 복잡해지고 꼬이는 기분이라서 이번에는 처음부터 천천히 설계를 다 하고 개발을 하기로 했다.
그런데 문제는 데이터 베이스 설계 방법을 모른다! 
그것만 모르는 게 아니라 프로젝트가 어떻게 돌아가야 정상적인 건지도 모른다. ㅋㅋㅋㅋㅋㅜㅜ
그렇지만 이제부터라도 공부하면 되는 거니까~

 


 

ERM(Entity-Relationship Model)은 데이터베이스를 설계할 때 엔티티(Entity), 관계(Relationship), 속성(Attribute) 간의 구조를 시각적으로 표현하는 모델이다. 

ERM의 주요 개념은 엔티티, 속성, 관계, 카디널리티가 있는데
이 중에서 카디널리티란 엔티티 간에 몇 개의 인스턴스가 서로 연결되는 지에 대한 표현이다.
One to One, One To Many, Many To Many 등이 있는데,

One to One은 1:1로 연결되는 개념으로 
One To Many는 1:N으로 연결되는 개념으로 하나의 유저가 여러 개의 포스트를 작성한다. 
Many To Many는 유저가 여러 개의 그룹에 속할 수도 있고, 하나의 그룹에 여러 명의 유저가 속한다. 

 


 

일단 해봐야 이해할 수 있을 것 같아서
독서 모임 서비스 기획 내용을 기반으로 ERD 설계라는 걸 해보려고 했다. 

찾아보니까 사이트도 여러 개가 있긴 한데, 사용하기 편리하고 무료인 ERD Cloud를 선택했다. 

https://www.erdcloud.com/

 

ERDCloud

Draw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool.

www.erdcloud.com

 

일단 이게 오늘 만들어 본 ERM이다. 

스프링 부트 프로젝트에서 Domain 폴더 안에 들어가는 Entity 클래스들의 구성 요소만 집어넣고 화살표를 그리면 끝나는 줄 알았는데
생각보다 어렵더라고... 이게 맞는지도 모르겠다. 
틀렸으면 앞으로 천천히 공부하면서 고쳐보겠음!

 

유저는 여러 개의 그룹을 가질 수 있고, 그룹은 여러 명의 유저를 가질 수 있으므로 
이 관계는 중간에 맵핑 테이블을 하나 만들어서 각각의 식별자를 외래키로 가져올 수 있도록 했다. 

세션은 차시 별 독서 토론을 할 수 있도록 구분하는 단위이다. 세션 1은 첫 번째 독서 모임이라는 뜻이다. 
그룹 당 여러 번의 독서 토론을 할 수 있어야 하므로 OneToMany의 관계이고, 
세션 당 한 권의 책에 대해 토론하게 되므로 OneToOne의 관계이다. 
  *그런데 방금 생각해보니까 등록한 책을 여러 그룹에서 사용하게 된다면 OneToOne이 아닐 수도....? 일단 더 고민해봐야지... 

세션에서 그룹의 멤버들이 여러 개의 발제문을 작성하게 될 것이고,
힌 개의 발제문에 대한 의견도 여러 개가 달릴 것이다. 
댓글은 의견에도 달릴 수 있고, 대댓글의 형태로 댓글에도 달릴 수 있다. 
그리고 발제문과 의견, 댓글은 유저가 작성하는 것이므로 user_id를 외래 키로 가져온다. 


일단 오늘은 여기까지... 차차 공부하면서 더 수정하고 추가해보도록 해야겠다.