이번에는 실제 우리 생활에서 쓰이는 어플리케이션 중 하나를 선정해 데이터베이스를 만들어 보려고 한다. 개인적인 분석과 의견이 들어가있기 때문에 절대적으로 정확하지 않으며 내용도 많이 부실하겠지만, 이를 통해서 평소에 사용하는 어플에 어떤 데이터들이 필요하고, 사용되는지 알아본다.
DB의 개념 및 구성 요소 파악, ERD 설계 방법론
어떤 어플로 ERD 설계를 할까 고민하다가 평소에 관심이 많고, 요즘 이라기엔 이미 많이 뜨고있는 당근 마켓이 생각났다. 그래서 ERD 설계는 당근 마켓 어플로 진행했다 🥕🥕!!
# 검색할 사용자 ID 설정
SET @userID = 'carrot1';
# 프로필1 사용자 데이터 불러오기
SELECT PI.data AS profile_image, U.nickname, U.manner_temperature, U.retrade_rate, U.reply_rate,
L1.name AS location1, UL1.auth AS location1_auth, UL1.auth_count AS auth_count1,
L2.name AS location2, UL2.auth AS location2_auth, UL2.auth_count AS auth_count2,
date_format(U.create_date, '%Y년 %c월 %e일') AS date
FROM Users AS U
INNER JOIN UserLocations AS UL1
ON U.id=@userID COLLATE utf8mb4_unicode_ci AND U.location1=UL1.id
INNER JOIN Locations AS L1
ON UL1.location=L1.id
INNER JOIN UserLocations AS UL2
ON U.id=@userID COLLATE utf8mb4_unicode_ci AND U.location2=UL2.id
INNER JOIN Locations AS L2
ON UL2.location=L2.id
INNER JOIN ProfileImages AS PI
ON U.profile_img=PI.id;
실제 당근 마켓에서 어떻게 데이터베이스를 만들어서 운영하는지는 모르지만, 일부 데이터를 쿼리로 뽑아보면 얼추 비슷하게 나오는 것을 확인했다. 그리고 하면서 느낀거지만 ERD 설계 때는 조회가 잘 된다고 생각한 것 들이 막상 쿼리로 작성하면 안 될 때가 있다.
데이터와의 관계들을 고려해서 일부 수정을 한 다음 API 설계도 진행할 예정이다.
[1] : 라이징캠프
[2] : DA 가이드 - 개념 데이터 모델 작성
[3] : DA 가이드 - 논리 데이터 모델 이해
[4] : OKKY - SQL을 자동으로 생성해주는 사이트를 만들었습니다