테이블 명세서
|
회원 정보
|
|||
|
Table
|
user
|
||
|
컬럼명
|
데이터 타입
|
제약 조건
|
설명
|
|
id
|
VARCHAR(20)
|
PRIMARY KEY / NOT NULL
|
로그인 ID
|
|
password
|
VARCHAR(100)
|
NOT NULL
|
비밀번호
|
|
nickname
|
VARCHAR(50)
|
NOT NULL
|
표시용 닉네임
|
|
created_at
|
DATETIME
|
DEFAULT CURRENT_TIMESTAMP
|
가입일시
|
|
|
|
|
|
|
채팅방 정보
|
|||
|
Table
|
chatroom
|
||
|
컬럼명
|
데이터 타입
|
제약 조건
|
설명
|
|
room_id
|
INT
|
PRIMARY KEY / AUTO_INCREMENT
|
채팅방 고유번호
|
|
room_name
|
VARCHAR(50)
|
NOT NULL
|
채팅방 이름
|
|
room_type
|
ENUM('open','group')
|
NOT NULL
|
채팅방 유형(오픈/그룹)
|
|
creator_id
|
VARCHAR(20)
|
FOREIGN KEY REFERENCES user(id)
|
생성자 ID
|
|
created_at
|
DATETIME
|
DEFAULT CURRENT_TIMESTAMP
|
생성일시
|
|
|
|
|
|
|
방 참가자
|
|||
|
Table
|
chatroom_user
|
||
|
컬럼명
|
데이터 타입
|
제약 조건
|
설명
|
|
room_id
|
INT
|
NOT NULL, FK REFERENCES chatroom(room_id)
|
참여한 채팅방 ID
|
|
user_id
|
VARCHAR(20)
|
NOT NULL, FK REFERENCES user(id)
|
참여한 사용자 ID
|
|
joined_at
|
DATETIME
|
DEFAULT CURRENT_TIMESTAMP
|
입장 시각
|
|
PRIMARY KEY
|
(room_id, user_id
|
|
복합키
|
|
|
|
|
|
|
채팅 메시지
|
|||
|
Table
|
chat_message
|
||
|
컬럼명
|
데이터 타입
|
제약 조건
|
설명
|
|
message_id
|
INT
|
PRIMARY KEY / AUTO_INCREMENT
|
메시지 고유번호
|
|
room_id
|
INT
|
NOT NULL, FK REFERENCES chatroom(room_id)
|
방 ID
|
|
sender_id
|
VARCHAR(20)
|
NOT NULL, FK REFERENCES user(id)
|
보낸 사용자 ID
|
|
message
|
TEXT
|
NOT NULL
|
메시지 내용
|
|
send_at
|
DATETIME
|
DEFAULT CURRENT_TIMESTAMP
|
전송 시각
|
테이블은 총 4개로 구성
user : 회원정보(회원가입, 로그인, 이후 채팅에서 식별자)
chatroom : 채팅방을 open 또는 group 채팅방으로 나누어 관리하고, 채팅방 생성자 확인
chatroom_user : 생성된 채팅방에 입장, 퇴장 인원을 관리함
chat_message : 모든 채팅 내역을 방ID, 보낸ID, 시각을 기준으로 저장함
ERD

chatroom_user의 room_id는 chatroom(room_id) 외래키(foreign key) / user_id는 user(id) 외래키
chatroom의 creator_id는 user(id) 외래키
chat_message의 room_id는 chatroom(room_id) 외래키 / sender_id는 user(id) 외래키
'LMS 7 > 개발일지' 카테고리의 다른 글
| 25.07.17 개발일지 / 채팅 프로그램 5팀 (0) | 2025.07.29 |
|---|---|
| 25.07.16 개발일지 / 채팅 프로그램 5팀 (0) | 2025.07.29 |
| 25.07.14 개발일지 / 멀티스레드를 통한 채팅프로그램 구상 (2) | 2025.07.29 |
| 25.07.12 학습일지 / mySQL, C (0) | 2025.07.29 |
| 25.07.10 학습개발일지 / mySQL (0) | 2025.07.28 |