▼ 현 상황에서 대댓글 기능을 구현할 수 없다는 것을 알았음

멘토님께서 계층형 데이터베이스에 대해 알아보라고 말씀해주심
조사한 내용: 계층형 데이터베이스
Adjacency List
각 댓글이 부모 댓글을 참조하도록 하는 방식
-- 예시
CREATE TABLE posts (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE comments (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
post_id BIGINT NOT NULL,
parent_id BIGINT NULL, -- 부모 댓글 ID (NULL이면 최상위 댓글)
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE,
FOREIGN KEY (parent_id) REFERENCES comments(id) ON DELETE CASCADE
);
Nested Set
left와 right 값을 이용해 부모와 자식 관계를 표현
장점: 빠른 조회
단점: 삽입/수정의 어려움
-- 예시
CREATE TABLE comments (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
post_id BIGINT NOT NULL,
content TEXT NOT NULL,
left INT NOT NULL,
right INT NOT NULL,
FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE
);
Closure Table
모든 부모-자식 관계를 저장하는 별도의 연결 테이블
장점: 다단계 조회
단점: 공간 비용
-- 예시
CREATE TABLE comment_tree (
ancestor BIGINT NOT NULL,
descendant BIGINT NOT NULL,
depth INT NOT NULL,
PRIMARY KEY (ancestor, descendant),
FOREIGN KEY (ancestor) REFERENCES comments(id) ON DELETE CASCADE,
FOREIGN KEY (descendant) REFERENCES comments(id) ON DELETE CASCADE
);
가장 무난한 Adjacency List 사용

자기 자신을 참조하여 생긴 key를 parentCommentId로 만들어주었다