YS's develop story

(ERD설계 및 MySQL연습) 카카오톡 채팅목록 화면 ERD 설계, DataGrip을 사용하여 메시창을 보여주는 MySQL 한방 쿼리 작성하기 본문

기타/라이징프로그래머 2기

(ERD설계 및 MySQL연습) 카카오톡 채팅목록 화면 ERD 설계, DataGrip을 사용하여 메시창을 보여주는 MySQL 한방 쿼리 작성하기

Yusang 2021. 1. 20. 09:06

 

오늘의 목표!!

 

카카오톡 채팅 목록 화면을 ERD설계를 해보고, 이를 보여주는 MySQL 쿼리문을 작성해 봅시다! 

 

DataGrip을 실행 후 kakaoDB라는 데이터 베이스를 생성해 줍시다

 

schemas에 생성된 kakaoDB선택 후 Jump to Query Console 선택

 

웹 기반 ERD설계 사이트 AQueryTool에서 아래와 같이 ERD를 설계했습니다.

https://aquerytool.com/

 

AQueryTool - AQuery.Web

{{source.erd_info.erd_name + '(' + source.erd_info.db_type + ')'}}

aquerytool.com

 

모든 테이블 생성 SQL 옵션을 통해 SQL 쿼리를 생성

 

생성된 SQL 쿼리를 DataGrip에 복사 - 붙여 넣기

 

아래와 같이 테이블이 생성된 것을 확인할 수 있습니다.

 

ERD를 설계할 때 Chat테이블에 contents라는 칼럼을 안 만들었네요 ~

아래와 같이 새로운 칼럼을 추가합시다.

 

채팅방 목록에 보이는 필요한 데이터들을 아래와 같이 임의로 작성해 봅시다...!!

 

카카오톡 채팅 목록 창에서 사용자들에게 제공해야 할 데이터를 아래와 같이 표로 작성했습니다.

이제 우리가 가지고 있는 데이터를 아래와 같이 제공할 수 있도록 한방 쿼리를 작성해 봅시다.

 

 

Room 테이블에 imageUrl칼럼이 필요하기 때문에 아래와 같이 칼럼을 추가해 줍시다!

 

select * from 테이블명 where 칼럼 = ' ' 

아래처럼 userID가 liyusang1인 데이터만을 보여 줍니다.

 

또한 이를 활용하여 아래와 같이 쿼리를 작성할 수 도 있습니다.

Room에서 liyusang1라는 유저가 속한 방만을 가져오는 것이죠.

 

inner join을 활용하여 아래와 같이 쿼리를 작성할 수도 있습니다.

 

as 구문을 추가하여 보이는 이름을 바꿨습니다.

lastChatMessage, lastChatMessageTimeStamp, lastChatMessageType를 추가하면 될 거 같습니다.

 

 

Chat 테이블에서 가장 큰 roomNo를 가져올 수 있도록 max(no) 쿼리를 사용하여 아래와 같이 작성했습니다

첫 번째 방의 가장 큰 메시지 넘버 표시

두 번째 방의 가장 큰 메시지 넘버를 표시한 것입니다. 

 

이어서 작성한 쿼리..

 

쿼리를 합쳐서 아래의 쿼리를 만들어 줍시다.

사용자에게 보여줄 카카오톡 채팅 목록 데이터를 모두 제공하고 있는 것을 확인할 수 있습니다!!

Comments