Backend Ddevelopment
โ๐[Backend Development] ์ต๋ 2depth ๋๊ธ ์ ๋ ฌ ๊ตฌ์กฐ๋ ๋ฌด์์ผ๊น์?โ

โ
์ต๋ 2 Depth ๋๊ธ ์ ๋ ฌ ๊ตฌ์กฐ ์ค๋ช
.
- ์ต๋ 2 Depth(๊ณ์ธต์ด ์ต๋ 2๋จ๊ณ)๊น์ง๋ง ํ์ฉํ๋ ๋๊ธ ์์คํ
์ ์ ๋ ฌ ๊ตฌ์กฐ๋ ๋น๊ต์ ๋จ์ํ๋ฉด์๋ ํจ์จ์ ์
๋๋ค.
๐๏ธ1๏ธโฃ ๋๊ธ ํ
์ด๋ธ ๊ตฌ์กฐ.
- ์ต๋ 2 Depth ๋๊ธ์ ์ ์ฅํ๋ ํ
์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ๋๋ช
|
์ค๋ช
|
comment_id |
๋๊ธ์ ๊ณ ์ ID (PK) |
parent_comment_id |
๋ถ๋ชจ ๋๊ธ ID (์ต์์ ๋๊ธ์ด๋ฉด NULL) |
article_id |
ํด๋น ๋๊ธ์ด ์ํ ๊ฒ์๊ธ ID |
content |
๋๊ธ ๋ด์ฉ |
created_at |
๋๊ธ ์์ฑ ์๊ฐ |
๐ ํน์ง.
-
์ต์์ ๋๊ธ์ parent_comment_id = NULL (์: ๋๊ธ 1, ๋๊ธ 3)
-
์์ ๋๊ธ์ parent_comment_id = ๋ถ๋ชจ์ comment_id (์: ๋๊ธ2, ๋๊ธ 4, ๋๊ธ 5)
-
2 Depth๊น์ง๋ง ํ์ฉ (๋๊ธ์ ๋๊ธ๊น์ง๋ง ๊ฐ๋ฅ, ๋๋๊ธ์ ๋๋๊ธ์ ๋ถ๊ฐ๋ฅ)
๐๏ธ2๏ธโฃ ์ ๋ ฌ ๋ฐฉ์
- ์ต๋ 2 Depth ๋๊ธ ์ ๋ ฌ์ ๋ค์๊ณผ ๊ฐ์ ์์๋ก ์งํ๋ฉ๋๋ค.
ORDER BY parent_comment_id ASC, comment_id ASC
๐ ์ ๋ ฌ ๊ธฐ์ค.
-
- parent_comment_id ASC โ ๊ฐ์ ๋ถ๋ชจ ๋๊ธ์ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํ.
-
- comment_id ASC โ ์์ฑ๋ ์์๋๋ก ์ ๋ ฌ (์ค๋๋ ๋๊ธ์ด ๋จผ์ ์ถ๋ ฅ๋จ).
๐๏ธ3๏ธโฃ ์ ๋ ฌ ๋ฐ์ดํฐ ์์.
- ์ ์ ๋ ฌ ๋ฐฉ์์ ๋ฐ๋ผ ๋๊ธ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํํ๊ฐ ๋ฉ๋๋ค.
parent_comment_id |
comment_id |
๋ด์ฉ |
NULL |
1 |
๋๊ธ1 (์ต์์ ๋๊ธ) |
1 |
2 |
๋๊ธ2 (๋๊ธ1์ ๋๋๊ธ) |
1 |
4 |
๋๊ธ4 (๋๊ธ 1์ ๋๋๊ธ) |
NULL |
3 |
๋๊ธ3 (์ต์์ ๋๊ธ) |
3 |
5 |
๋๊ธ5 (๋๊ธ 3์ ๋๋๊ธ) |
๐ ์ด ์ ๋ ฌ ๋ฐฉ์์ ์ฅ์ .
- parent_comment_id๋ฅผ ๊ธฐ์ค์ผ๋ก ๋จผ์ ์ ๋ ฌํ์ฌ ์ต์์ ๋๊ธ์ด ๋จผ์ ์ถ๋ ฅ๋จ
- ๊ฐ์ parent_comment_id๋ฅผ ๊ฐ์ง ๋๊ธ(๋๋๊ธ)์ ์์ฑ ์์๋๋ก ์ ๋ ฌ๋จ
- LIMIT ?, ?์ ํ์ฉํ์ฌ ํ์ด์ง ์ฒ๋ฆฌ ๊ฐ๋ฅ
๐๏ธ4๏ธโฃ SQL ์ ๋ ฌ ์์
SELECT * FROM comment
WHERE article_id = ?
ORDER BY parent_comment_id ASC, comment_id ASC
LIMIT ?, ?;
๐๏ธ5๏ธโฃ ํ์ด์ง ์ฒ๋ฆฌ.
- ๊ฐ ํ์ด์ง์์ N๊ฐ ๋๊ธ์ ๋ถ๋ฌ์ฌ ์ ์๋๋ก LIMIT ?,? ์ฌ์ฉ
- ์ต์์ ๋๊ธ๊ณผ ๋๋๊ธ์ ํจ๊ป ๋ถ๋ฌ์ค๊ธฐ ์ํด parent_comment_id ๊ธฐ์ค ์ ๋ ฌ ์ ์ง
- ์ต๋ depth๊ฐ 2์ด๋ฏ๋ก ์ฑ๋ฅ ์ต์ ํ์ ์ ๋ฆฌํจ
โ
6๏ธโฃ ์ ๋ฆฌ.
- โ
์ต๋ 2 Depth ๊ตฌ์กฐ โ parent_comment_id๋ฅผ ํ์ฉํด ๋ถ๋ชจ-์์ ๊ด๊ณ ์ ์ง
- โ
์ ๋ ฌ ์์ โ ORDER BY parent_comment_id ASC, comment_id ASC
- โ
์กฐํ ๊ฒฐ๊ณผ โ ๋ถ๋ชจ ๋๊ธ์ด ๋จผ์ , ๋๋๊ธ์ด ๋ค์ ์ ๋ ฌ๋จ
- โ
ํ์ด์ง ๊ฐ๋ฅ โ LIMIT ?, ?๋ฅผ ํ์ฉํ์ฌ ์ค๋๋ ์์ผ๋ก ํ์ด์ง ์ฒ๋ฆฌ