티스토리 뷰
내 질문:
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
'몸부림의 흔적' 카테고리의 다른 글
| # 초보자도 알기 쉬운 SQL 핵심 개념과 문법 그리고 예시까지. (0) | 2026.05.04 |
|---|---|
| # PHP에서 $pdo (PDO)가 무슨 의미인지, 어떻게 사용되는지. $stmt는 무엇인가. pdo와 stmt의 관계에 관하여! (0) | 2026.05.02 |
| # SQL은 왜 대문자로 쓸까? / SQL에서 DESC란? / SQL에서 JOIN이란? (0) | 2026.04.30 |
| # 웹 프로그래밍에서 $_SESSION 이란? / SQL 처음 공부할 때 알아두면 좋은 개념에 대해서 (0) | 2026.04.29 |
| # 초보자가 자주 헷갈리는 php 문법 top 10 (0) | 2026.04.27 |
- Total
- Today
- Yesterday
- 로즈마리 물꽂이
- 구조체와 배열의 차이
- 구조체 개념 이해하기 쉽게
- 컴파일러와 인터프리터 차이
- 파충류 동반자
- JavaScript
- php
- cost let var 비교
- sql 핵심 개념
- 자바스크립트 주요 키워드
- sql 문법
- 컴파일러 인터프리터 비교
- 컴파일러 언어
- 국제운전면허증 발급
- php 개념
- CRUD
- 클래스랑 구조체 차이
- php문법
- 컴포즈 커피
- $stmt
- 에어프라이어 청소
- 프리지아
- 호이스팅 개념
- 로즈마리
- PHP 문법
- 나무 같은 사람이 되고 싶다
- 톰 더 글로우 시그니처
- 은구비공원
- 클래스 개념
- SQL 개념
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
