티스토리 뷰

 

내 질문:

CREATE TABLE post_likes ( 

like_id INT AUTO_INCREMENT PRIMARY KEY,

post_id INT NOT NULL,

user_id VARCHAR(50) NOT NULL,

created_at DATETIME DEFAULT CURRENT_TIMESTAMP,

UNIQUE KEY unique_like (post_id, user_id)

);

 

CREATE TABLE post_comments (

comment_id INT AUTO_INCREMENT PRIMARY KEY,

post_id INT NOT NULL,

user_id VARCHAR(50) NOT NULL,

content TEXT NOT NULL,

created_at DATETIME DEFAULT CURRENT_TIMESTAMP

);

 

이 SQL이 무슨 의미인지 알기 쉽게 설명해줄래?

한 줄 한 줄 무슨 의미인지 해석해줬으면 좋겠어.

 

 

좋아 👍 이건 SNS 프로젝트에서 좋아요 + 댓글 기능 만들 때 쓰는 테이블이야.
한 줄씩 쉽게 풀어서 설명해줄게.


✅ 1. post_likes 테이블 (좋아요 저장)

 
CREATE TABLE post_likes (
 

👉 post_likes라는 테이블을 만든다는 뜻
→ 게시글에 누른 "좋아요"를 저장하는 공간


 
  like_id INT AUTO_INCREMENT PRIMARY KEY,
 

👉 좋아요의 고유 번호

  • INT : 숫자 타입
  • AUTO_INCREMENT : 자동으로 1,2,3… 증가
  • PRIMARY KEY : 이 테이블에서 유일한 값 (중복 없음)

➡️ 쉽게 말하면
좋아요 하나하나를 구분하는 ID


 
  post_id INT NOT NULL,
 

👉 어떤 게시글에 좋아요를 눌렀는지 저장

  • INT : 숫자 (posts 테이블의 글 번호)
  • NOT NULL : 반드시 값이 있어야 함

➡️ "몇 번 글에 좋아요인지"


 
  user_id VARCHAR(50) NOT NULL,
 

👉 누가 좋아요 눌렀는지

  • VARCHAR(50) : 최대 50자 문자열
  • NOT NULL : 반드시 있어야 함

➡️ 너 프로젝트 기준 👉 tb_member.id랑 연결됨


 
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
 

👉 좋아요 누른 시간

  • DATETIME : 날짜 + 시간
  • DEFAULT CURRENT_TIMESTAMP : 자동으로 현재 시간 저장

➡️ "언제 눌렀는지 기록"


 
  UNIQUE KEY unique_like (post_id, user_id)
 

👉 핵심 🔥
같은 사람이 같은 글에 좋아요 2번 못 누르게 막는 기능

➡️ (post_id, user_id) 조합이 중복되면 에러 발생

예:

  • (글1, userA) → OK
  • (글1, userA) → ❌ 중복 (막힘)

 
);
 

👉 테이블 생성 끝


✅ 2. post_comments 테이블 (댓글 저장)

 
CREATE TABLE post_comments (
 

👉 댓글을 저장하는 테이블


 
  comment_id INT AUTO_INCREMENT PRIMARY KEY,
 

👉 댓글 고유 번호
(자동 증가 + 기본키)


 
  post_id INT NOT NULL,
 

👉 어떤 글에 달린 댓글인지


 
  user_id VARCHAR(50) NOT NULL,
 

👉 댓글 작성자
➡️ 이것도 tb_member.id랑 연결됨


 
  content TEXT NOT NULL,
 

👉 댓글 내용

  • TEXT : 긴 글 저장 가능
  • NOT NULL : 비어 있으면 안 됨

 
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
 

👉 댓글 작성 시간 자동 저장


 
);
 

👉 끝


🔥 전체 요약

post_likes

👉 "누가 어떤 글에 좋아요 눌렀는지"

  • 중복 좋아요 방지 있음 (중요!)

post_comments

👉 "누가 어떤 글에 어떤 댓글을 썼는지"


💡 너 프로젝트 기준 연결 구조

  • post_likes.user_id → tb_member.id
  • post_comments.user_id → tb_member.id
  • post_id → posts.id