Backend Ddevelopment
โ๐[Backend Development] ๋ฌดํ depth ๋๊ธ ์ ๋ ฌ ๊ตฌ์กฐ๋ ๋ฌด์์ผ๊น์?โ
โ
๋ฌดํ Depth ๋๊ธ ์ ๋ ฌ ๊ตฌ์กฐ
- ๋ฌดํ depth ๋๊ธ์ ํ์ด์ง ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ ์งํ๋ฉด์ ์ ๋ ฌํ๋ ์ ๋ต์ด ํ์ํฉ๋๋ค.
- ๋ณดํต parent_comment_id + comment_id ์ ๋ ฌ ๋ฐฉ์์ ์ฌ์ฉํ๋ 2-depth ๋๊ธ๊ณผ๋ ๋ฌ๋ฆฌ, ๋ฌดํ depth์ ๊ฒฝ์ฐ ๋๊ธ์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ ์งํ ์ ์๋๋ก ์ ๋ ฌ ๋ฐฉ์์ด ๊ฐ์ ๋์ด์ผ ํฉ๋๋ค.
๐1๏ธโฃ ํธ๋ฆฌ ๊ตฌ์กฐ ๊ธฐ๋ฐ ์ ๋ ฌ ๋ฐฉ๋ฒ
- ๋ฌดํ depth์ ๋๊ธ์ ์ ๋ ฌํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ด ๊ฐ๋ฅํฉ๋๋ค.
1๏ธโฃ ์ ๋ ฌ ๋ฐฉ์
- root_comment_id (์ต์์ ๋ถ๋ชจ ID) ์ค๋ฆ์ฐจ์
- path (ํธ๋ฆฌ ์์) ์ค๋ฆ์ฐจ์
-
comment_id (์์ฑ ์์) ์ค๋ฆ์ฐจ์
- ์ด๋ ๊ฒ ์ ๋ ฌํ๋ฉด ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ ์งํ๋ฉด์ ๋๊ธ์ ์๊ฐ์์ผ๋ก ์ ๋ ฌํ ์ ์์ต๋๋ค.
๐2๏ธโฃ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ ์งํ๋ ์ ๋ ฌ ํ๋
ํ๋๋ช
|
์ค๋ช
|
comment_id |
๋๊ธ์ ๊ณ ์ ID (๊ธฐ๋ณธ ํค) |
parent_comment_id |
๋ถ๋ชจ ๋๊ธ์ ID (์ต์์ ๋๊ธ์ด๋ฉด NULL) |
root_comment_id |
์ต์์ ๋ถ๋ชจ ๋๊ธ์ ID (์ต์์ ๋๊ธ์ด๋ฉด ์๊ธฐ ์์ comment_id) |
depth |
๋๊ธ์ ๊น์ด (0๋ถํฐ ์์) |
path |
ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ํ๋ด๋ ์ ๋ ฌ์ฉ ๋ฌธ์์ด |
๐3๏ธโฃ ์ ๋ ฌ ์์ SQL ์์
๐ ๋ฌดํ Depth ์ ๋ ฌ์ ์ํ ORDER BY
SELECT * FROM comment
WHERE article_id = ?
ORDER BY root_comment_id ASC, path ASC, comment_id ASC
LIMIT ?, ?;
๐ ์ ๋ ฌ ๊ธฐ์ค.
-
1. root_comment_id ASC โ ์ต์์ ๋ถ๋ชจ ๋๊ธ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
-
2. path ASC โ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ ์งํ๋ฉด์ ์ ๋ ฌ
-
3. comment_id ASC โ ๊ฐ์ depth ๋ด์์ ์์ฑ ์์๋๋ก ์ ๋ ฌ
๐4๏ธโฃ path ํ๋๋?
-
ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํํํ๊ธฐ ์ํด path ํ๋๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
- path๋ ๋ถ๋ชจ-์์ ๊ด๊ณ๋ฅผ ๋ช
ํํ๊ฒ ํ์ฌ ์ ๋ ฌ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, path๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ ์ฅ๋ ์ ์์ต๋๋ค.
comment_id |
parent_comment_id |
root_comment_id |
depth |
path |
1 |
NULL |
1 |
0 |
00001 |
2 |
1 |
1 |
1 |
00001.00002 |
3 |
1 |
1 |
1 |
00001.00003 |
4 |
2 |
1 |
2 |
00001.00002.00004 |
5 |
4 |
1 |
3 |
00001.00002.00004.00005 |
- ๐ ์ ๋ ฌ ์ ORDER BY path ASC๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ ์งํ๋ฉด์ ์ ๋ ฌ ๊ฐ๋ฅ!
๐5๏ธโฃ ์ ๋ฆฌ
- โ
๋ฌดํ depth ๋๊ธ ์ ๋ ฌ์ ์ํค path ๋๋ lft/rgt ๋ฐฉ์์ด ํ์
- โ
์ ๋ ฌ ์์๋ root_comment_id ASC, path ASC, comment_id ASC ๋ฐฉ์ ์ฌ์ฉ
- โ
ํ์ด์ง ์ฒ๋ฆฌ ์ LIMIT ?,? ์ ์ฉ ๊ฐ๋ฅ
- ๐ ๊ธฐ์กด 2-depth ๋ฐฉ์์ฒ๋ผ parent_comment_id ์ ๋ ฌ๋ง์ผ๋ก๋ ๋ฌดํ depth ์ ๋ ฌ์ด ์ด๋ ค์ฐ๋ฏ๋ก path๋ฅผ ํ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ ์ ํฉ๋๋ค.