사이먼's 코딩노트
[SpringBoot] 음악 커뮤니티 사이트 제작 (2) 본문
[음악 커뮤니티 사이트 제작]
- 지난번 포스팅에 이어 이번에는 E-R 다이어그램을 통해 데이터베이스 설계에 대해서 설명드릴 예정입니다.
- 데이터베이스 설계 후 프로젝트에 작성된 엔티티 코드는 따로 포스팅되지 않을 예정이니 코드를 보고 싶으시다면 아래 깃허브 리포지터리를 방문 후 참고 부탁드립니다.
- 깃허브 리포지터리 주소 : https://github.com/psm817/Apollon
GitHub - psm817/Apollon
Contribute to psm817/Apollon development by creating an account on GitHub.
github.com
[ERD 소개 및 설명]
- 아래 사진은 실제 DB 설계와 함께 작성된 ERD(Entity Relationship Diagram)이다.
- 테이블은 총 12개로 설계되어 있고 각 테이블별 컬럼의 의미와 외래키를 이용한 테이블간의 참조 관계에 대해서 살펴봅시다.
- 모든 테이블에는 고유 번호인 id와 등록날짜인 createDate, 수정날짜인 modifyDate 컬럼이 속한다.
- member는 회원을 의미하는 테이블이며 공통 컬럼을 제외하고 실제 로그인에 필요한 ID인 username를 비롯한 회원정보를 담아두는 password, nickname, email, image로 구성되어있다.
- 여기서 image는 프로필 사진으로, 사진이 직접 저장되는 것이 아니라 image를 가지고 있는 해당 파일의 경로를 varchar 타입으로 받아 저장해둔다.
- playList는 회원 각 개인이 원하는 음악을 담고 들을 수 있는 플레이리스트를 의미하는 테이블이며 공통 컬럼을 제외하고 각 플레이리스트가 회원당 1개 존재하기 때문에 member의 id와 1대1 관계로 연결된 member_id로 구성되어있다.
- studio는 회원 각 개인이 관리 및 담당하는 스튜디오를 의미하는 테이블이며 공통 컬럼을 제외하고 활성화 상태를 나타내는 active, 방문자 수를 나타내는 visit, 각 스튜디오가 회원당 1개 존재하기 때문에 member의 id와 1대 1 관계로 연결된 member_id로 구성되어있다.
- 여기서 active는 기본값을 1로 하여 1은 활성화 상태, 0은 차단 상태를 의미하고 visit는 기본 값을 0으로 주었다.
- studio_likers는 개인 스튜디오에 좋아요(추천)을 남긴 회원과 해당 스튜디오를 의미하는 테이블이며 좋아요를 누른 member의 id와 1대 1 관계로 연결된 likers_id와 좋아요를 누른 studio의 id와 1대 1 관계로 연결된 studio_id로 구성되어있다.
- comment는 각 스튜디오에 작성된 방명록을 의미하는 테이블이며 공통 컬럼을 제외하고 방명록 제목을 나타내는 title, 방명록 내용을 나타내는 content, 방명록을 작성한 회원을 나타내기 위해 member의 id와 N대 1 관계로 연결된 member_id, 방명록을 남긴 스튜디오를 나타내기 위해 studio의 id와 N대 1 관계로 연결된 studio_id로 구성되어있다.
- music은 등록된 음악을 의미하는 테이블이며 공통 컬럼을 제외하고 음악 제목을 나타내는 musicTitle, 음악 설명을 나타내는 musicContent, 등록된 음악의 저장 경로를 나타내는 musicMp3, 음악의 앨범 사진 경로를 나타내는 thumbnailImg, 음악을 업로드한 회원을 나타내기 위해 member의 id와 1대 1 관계로 연결된 member_id, 플레이리스트에 저장되는 음악을 나태내기 위해 playList의 id와 N대 1 관계로 연결된 playlist_id, 음악을 업로드한 스튜디오를 나타내기 위해 studio의 id와 N대 1 관계로 연결된 studio_id로 구성되어있다.
- music_genres는 음악의 장르를 의미하는 테이블이며 music의 id와 1대 1 관계로 연결된 music_id와 여러가지 장르를 담을 수 있는 genres로 구성되어있다.
- playlist_music_play_list는 개인 플레이리스트에 담겨진 음악을 의미하는 테이블이며 music의 id와 1대 1 관계로 연결된 music_play_list_id와 playList의 id와 1대 1 관계로 연결된 playlist_id로 구성되어있다.
- music_music_likers는 음악에 좋아요(추천)을 남긴 회원과 해당 음악을 의미하는 테이블이며 좋아요를 누른 member의 id와 1대 1 관계로 연결된 music_likers_id와 좋아요를 누른 music의 id와 1대 1 관계로 연결된 music_id로 구성되어있다.
- music_music_play_counts는 음악의 재생 횟수를 의미하는 테이블이며 음악을 재생시킨 member의 id와 1대 1 관계로 연결된 music_play_counts_id와 music의 id와 1대 1 관계로 연결된 music_id로 구성되어있다.
- post는 커뮤니티의 게시물을 의미하는 테이블이며 공통 컬럼을 제외하고 조회수를 나타내는 view, 게시물 제목을 나타내는 title, 게시물 내용을 나타내는 content, 게시글의 타입을 나타내는 board_type과 게시물을 작성한 회원을 나타내기 위해 member의 id와 N대 1 관계로 연결된 author_id로 구성되어있다.
- 여기서 board_type은 상수들의 집합으로 enum 타입을 사용하여 게시판의 유형을 공지, 자유, 친목으로 나누었고, view는 기본값을 0으로 주었다.
- postComment는 커뮤니티의 각 게시물에 작성한 댓글을 의미하는 테이블이며 공통 컬럼을 제외하고 댓글 내용을 나타내는 content, 댓글을 작성한 회원을 나타내기 위해 member의 id와 N대 1 관계로 연결된 author_id, 댓글을 남길 게시물을 나타내기 위해 post의 id와 N대 1 관계로 연결된 post_id로 구성되어있다.
반응형
'프로젝트 > [SpringBoot] 음악 커뮤니티 사이트 제작' 카테고리의 다른 글
[SpringBoot] 음악 커뮤니티 사이트 시연 영상 (2) | 2024.06.26 |
---|---|
[SpringBoot] 음악 커뮤니티 사이트 제작 (5) (0) | 2024.06.26 |
[SpringBoot] 음악 커뮤니티 사이트 제작 (4) (0) | 2024.06.26 |
[SpringBoot] 음악 커뮤니티 사이트 제작 (3) (0) | 2024.06.25 |
[SpringBoot] 음악 커뮤니티 사이트 제작 (1) (0) | 2024.06.24 |