채팅 메시지 정보를 저장하는 테이블은 온라인 커뮤니케이션 플랫폼에서 사용자 간의 대화 내용을 기록하고 관리하는 데 중요합니다. 이 테이블은 메시지 ID, 발신자 ID, 수신자 ID, 메시지 내용, 전송 시간, 읽음 상태 등의 정보를 포함할 수 있습니다. 다음은 채팅 메시지 정보를 저장하기 위한 테이블 생성을 위한 SQL 쿼리문 예제와 각각의 설명입니다.
1. 기본 채팅 메시지 테이블 생성
CREATE TABLE chat_messages (
message_id INT AUTO_INCREMENT PRIMARY KEY,
sender_id INT,
receiver_id INT,
message TEXT,
timestamp TIMESTAMP,
read_status BOOLEAN,
FOREIGN KEY (sender_id) REFERENCES users(user_id),
FOREIGN KEY (receiver_id) REFERENCES users(user_id)
);
설명: 메시지 ID, 발신자 ID, 수신자 ID, 메시지 내용, 전송 시간, 읽음 상태를 저장합니다.
2. 사용자 정보 테이블 생성
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(100)
);
설명: 사용자의 사용자명, 이메일 등 기본 정보를 저장합니다.
3. 채팅방 정보 테이블 생성
CREATE TABLE chat_rooms (
room_id INT AUTO_INCREMENT PRIMARY KEY,
room_name VARCHAR(100),
created_at TIMESTAMP
);
설명: 채팅방의 이름과 생성 시간을 저장합니다.
4. 채팅방 참가자 테이블 생성
CREATE TABLE room_participants (
participant_id INT AUTO_INCREMENT PRIMARY KEY,
room_id INT,
user_id INT,
join_date TIMESTAMP,
FOREIGN KEY (room_id) REFERENCES chat_rooms(room_id),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
설명: 채팅방에 참가한 사용자와 참가 시간을 기록합니다.
5. 채팅방 메시지 테이블 생성
CREATE TABLE room_messages (
message_id INT AUTO_INCREMENT PRIMARY KEY,
room_id INT,
sender_id INT,
message TEXT,
timestamp TIMESTAMP,
FOREIGN KEY (room_id) REFERENCES chat_rooms(room_id),
FOREIGN KEY (sender_id) REFERENCES users(user_id)
);
설명: 채팅방 내의 메시지와 발신자, 전송 시간을 저장합니다.
6. 메시지 첨부 파일 테이블 생성
CREATE TABLE message_attachments (
attachment_id INT AUTO_INCREMENT PRIMARY KEY,
message_id INT,
file_url TEXT,
upload_time TIMESTAMP,
FOREIGN KEY (message_id) REFERENCES chat_messages(message_id)
);
설명: 메시지에 첨부된 파일의 URL과 업로드 시간을 저장합니다.
7. 메시지 삭제 기록 테이블 생성
CREATE TABLE message_deletions (
deletion_id INT AUTO_INCREMENT PRIMARY KEY,
message_id INT,
deleted_by INT,
deletion_time TIMESTAMP,
FOREIGN KEY (message_id) REFERENCES chat_messages(message_id),
FOREIGN KEY (deleted_by) REFERENCES users(user_id)
);
설명: 삭제된 메시지와 삭제한 사용자, 삭제 시간을 기록합니다.
8. 읽음 확인 테이블 생성
CREATE TABLE read_receipts (
receipt_id INT AUTO_INCREMENT PRIMARY KEY,
message_id INT,
reader_id INT,
read_time TIMESTAMP,
FOREIGN KEY (message_id) REFERENCES chat_messages(message_id),
FOREIGN KEY (reader_id) REFERENCES users(user_id)
);
설명: 메시지를 읽은 사용자와 읽은 시간을 기록합니다.
9. 메시지 반응 테이블 생성
CREATE TABLE message_reactions (
reaction_id INT AUTO_INCREMENT PRIMARY KEY,
message_id INT,
reactor_id INT,
reaction_type VARCHAR(50),
reaction_time TIMESTAMP,
FOREIGN KEY (message_id) REFERENCES chat_messages(message_id),
FOREIGN KEY (reactor_id) REFERENCES users(user_id)
);
설명: 메시지에 대한 반응 유형(예: 좋아요, 웃음 등)과 반응한 사용자, 반응 시간을 저장합니다.
10. 메시지 전달 기록 테이블 생성
CREATE TABLE message_forwards (
forward_id INT AUTO_INCREMENT PRIMARY KEY,
original_message_id INT,
forwarded_by INT,
forward_date TIMESTAMP,
new_message_id INT,
FOREIGN KEY (original_message_id) REFERENCES chat_messages(message_id),
FOREIGN KEY (forwarded_by) REFERENCES users(user_id),
FOREIGN KEY (new_message_id) REFERENCES chat_messages(message_id)
);
설명: 메시지의 전달(재전송)한 사용자, 전달 날짜, 원본 메시지 ID, 새 메시지 ID를 저장합니다.
관련 전문용어 설명
CREATE TABLE: 새로운 테이블을 생성하는 SQL 명령어입니다.
INT, VARCHAR, BOOLEAN, TIMESTAMP, TEXT: 데이터 유형을 나타냅니다.
AUTO_INCREMENT: 자동으로 숫자를 증가시키는 속성입니다.
PRIMARY KEY: 각 행을 고유하게 식별하는 주 키입니다.
FOREIGN KEY: 다른 테이블의 주 키를 참조하는 외래 키입니다.
'SQL' 카테고리의 다른 글
공지사항 테이블 생성: 웹사이트 공지사항 정보를 저장하기 위한 테이블을 생성합니다. (0) | 2024.01.01 |
---|---|
블로그 포스트 테이블 생성: 블로그 포스트 정보를 저장하기 위한 테이블을 생성합니다. (0) | 2024.01.01 |
주식 거래 테이블 생성: 주식 거래 정보를 저장하기 위한 테이블을 생성합니다. (0) | 2024.01.01 |
제품 레시피 테이블 생성: 제품 레시피 정보를 저장하기 위한 테이블을 생성합니다. (1) | 2024.01.01 |
고객 리워드 테이블 생성: 고객 리워드 정보를 저장하기 위한 테이블을 생성합니다. (0) | 2024.01.01 |