Home > Backend Development > ๐Ÿ“š[Backend Development] ์ตœ๋Œ€ 2depth ๋Œ“๊ธ€ ์ •๋ ฌ ๊ตฌ์กฐ๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

๐Ÿ“š[Backend Development] ์ตœ๋Œ€ 2depth ๋Œ“๊ธ€ ์ •๋ ฌ ๊ตฌ์กฐ๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?
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

๐Ÿ“Œ ์ •๋ ฌ ๊ธฐ์ค€.

    1. parent_comment_id ASC โžž ๊ฐ™์€ ๋ถ€๋ชจ ๋Œ“๊ธ€์„ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ™”.
    1. 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 ?, ?๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์˜ค๋ž˜๋œ ์ˆœ์œผ๋กœ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ