티스토리 뷰

Project 여담/2주차

10월 12일 : DB설계

xoo | 수진 2023. 10. 12. 17:36

DB설계 과정도 순탄치 않았다..

툴을 처음 사용하다보니 우왕좌왕 😂

 

예를 들어 논리적 데이터 모델링을 잘 해놓지않아 중복되고 불필요한 데이터를 뽑아내는 상황이 발생했다.

우리는 중간에 다시 돌아가 개념적 데이터 모델링 단계부터 다시 시작했고, entity(개체), attribute(속성), relation(관계)을 간단하게 정의하는 단계를 거쳤다.

이전과 같은 실수를 또 하지않기 위해 정규화 과정을 생각하며 논리적 데이터 모델링을 거쳤고, 결과적으로 DB툴을 이용해 정리하였다.

 

ERD CLOUD를 사용해 작성한 모습

 

먼저 회원정보를 나타내는 Member 테이블을 보자.

회원 관리에 필요한 기본적인 컬럼들을 작성했고, 사용자들마다 고유의 값을 가지는 아이디를 PK로 지정했다.

프로필 이미지를 제외하고는 모두 다 NOT NULL을 지정하여 NULL 값을 갖지 못하게 해주었다.

다른 테이블들과의 관계를 보면, 회원은 여러 개의 게시글을 등록할 수 있기 때문에 board테이블과 일대다 관계를 맺는다.

여행계획도 마찬가지로 여러 개를 갖을 수 있기 때문에 Travel 테이블과 일대다 관계,  공유여행 계획 SharedTravel 테이블과도 마찬가지로 일대다 관계, 좋아요한 글도 여러 개 갖을 수 있으니 user_like_list 테이블과도 일대다 관계를 맺는다.

 

여행계획 Travel 테이블을 보면 각각의 일정마다 고유한 값인 travleId를 PK로 갖고, FK로는 userId를 갖는다. 그 외에 필요한 컬럼들이 있고 여행 계획을 세울 땐 빈 값이 있어서는 안되기 때문에 모든 컬럼에 NOT NULL을 지정해주었다.

 

여행일정 Plan 테이블은 Travel의 상세한 일정들을 담는다고 생각하면 된다. 식당, 숙소 등 장소들과 item 그 주소들이 핵심 컬럼이다. 하나의 여행계획에서 여러 가지의 아이템들이 담길 수 있으니 여행계획 Travel 테이블과 다대일 관계를 맺게 되고, FK로 travelId와 userID를 갖게 된다.

 

공유여행계획 SharedTravel 테이블은 userId와 travelId를 FK로 갖으면서 TcontentId 라는 PK를 갖고있다.

여러 개의 댓글을 가질 수 있으므로 공유여행계획댓글 테이블인 commentsOfTravel과 일대다 관계를 갖고있다.

 

게시판 board 테이블도 크게 다를 건 없다!

 

 


 

 

 

막상 DB를 설계해보니 굉장히 헷갈리는 것도 많고 어려웠다.

곰곰히 생각해보며 만들게 되는...

여행테이블, 공유여행테이블이 모호한 점이 있어서 한번 더 팀 회의를 갖은 후, 이 ERD를 토대로 Oracle developer를 사용해 SQL문을 작성할 예정이다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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 31
글 보관함