๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋งฅ๋ฝ์—์„œ Self-Join์€ ํ…Œ์ด๋ธ” ์ž์ฒด๋ฅผ ์กฐ์ธํ•˜๋Š” ํŠน์ • ์œ ํ˜•์˜ SQL ์ฟผ๋ฆฌ ์ž‘์—…์œผ๋กœ, ์ผ๋ฐ˜์ ์œผ๋กœ ๋™์ผํ•œ ํ…Œ์ด๋ธ”์˜ ํ–‰ ๊ฐ„์˜ ๊ณ„์ธต์ , ์žฌ๊ท€์  ๋˜๋Š” ๋ณต์žกํ•œ ๊ด€๊ณ„์™€ ๊ด€๋ จ๋œ ์ฟผ๋ฆฌ์— ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ํ…Œ์ด๋ธ”์˜ ํ–‰์ด ํ…Œ์ด๋ธ” ์ž์ฒด ๋‚ด์˜ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ–‰๊ณผ ๊ด€๋ จ๋  ์ˆ˜ ์žˆ๋Š” ๊ด€๊ณ„ ์ถ”์ถœ์ด ํ•„์š”ํ•œ ํŠธ๋ฆฌ ๊ตฌ์กฐ, ์กฐ์ง ์ฐจํŠธ ๋˜๋Š” ๋ฐ์ดํ„ฐ ํ‘œํ˜„์œผ๋กœ ์ž‘์—…ํ•  ๋•Œ ํŠนํžˆ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์ฒด ์กฐ์ธ์€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์„ ๊ฒฐํ•ฉํ•˜์—ฌ ํŠน์ • ํ†ต์ฐฐ๋ ฅ์„ ์–ป๋Š” ๋ฐ ์ฃผ๋กœ ์ดˆ์ ์„ ๋งž์ถ˜ INNER JOIN, OUTER JOIN ๋˜๋Š” CROSS JOIN๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์กฐ์ธ ์œ ํ˜•๊ณผ ๋‹ฌ๋ฆฌ ์ž์ฒด ์กฐ์ธ์€ ๋‹จ์ผ ํ…Œ์ด๋ธ” ๋‚ด์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” Self-Join์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์ธต์  ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ƒ์œ„-ํ•˜์œ„ ์—ฐ๊ฒฐ ๋˜๋Š” ํ˜•์ œ ๊ด€๊ณ„์™€ ๊ฐ™์€ ๊ณต์œ  ๋˜๋Š” ์ผ์น˜ํ•˜๋Š” ์—ด ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ–‰ ๊ฐ„์˜ ๋ณธ์งˆ์ ์ธ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ†ต์ฐฐ๋ ฅ ์žˆ๋Š” ์ฟผ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์ฒด ์กฐ์ธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ…Œ์ด๋ธ” ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ์ธ๋˜๋Š” ํ…Œ์ด๋ธ” ๋‚ด์˜ ์ค‘๋ณต ์—ด ์ด๋ฆ„ ๊ฐ„์˜ ๋ช…ํ™•์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด EmployeeID, FirstName, LastName ๋ฐ ManagerID์™€ ๊ฐ™์€ ์—ด์ด ํฌํ•จ๋œ Employee ํ…Œ์ด๋ธ”์—์„œ ManagerID๋Š” EmployeeID๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ ํ‚ค์ด๋ฉฐ Self-Join ์ฟผ๋ฆฌ๋Š” ํ•ด๋‹น ๊ด€๋ฆฌ์ž์™€ ํ•จ๊ป˜ ์ง์› ๋ชฉ๋ก์„ ๊ฒ€์ƒ‰ํ•˜๋„๋ก ์„ค๊ณ„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SQL ์ฟผ๋ฆฌ๋Š” ์ง์›์˜ ๊ฒฝ์šฐ 'e', โ€‹โ€‹๊ด€๋ฆฌ์ž์˜ ๊ฒฝ์šฐ 'm'๊ณผ ๊ฐ™์€ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜์—ฌ Employee ํ…Œ์ด๋ธ”์„ ๋‘ ๋ฒˆ ํ™œ์šฉํ•˜๋Š” ๋™์‹œ์— ํ˜ผ๋™์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด SELECT ์ ˆ์— ์—ด ์ด๋ฆ„์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

AppMaster ์˜ no-code ํ”Œ๋žซํผ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜๋™ ์ฝ”๋”ฉ ์—†์ด๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ ์ž์ฒด ์กฐ์ธ์„ ๋ชจ๋ธ๋ง, ์„ค๊ณ„ ๋ฐ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ์›ํ™œํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์˜ ์ง๊ด€์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค(BP) ๋””์ž์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ) ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์‹œ๊ฐ์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ ๊ตฌ์„ฑ๋˜๋ฉด AppMaster ๊ธฐ๋ณธ Go(golang) ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, Vue3 ํ”„๋ŸฐํŠธ์—”๋“œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, Android์šฉ Kotlin/ Jetpack Compose ๋˜๋Š” iOS์šฉ SwiftUI ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ฃผ๋ฌธํ˜•์œผ๋กœ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ „ํŒŒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์  ๋ถ€์ฑ„๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•˜๋Š” AppMaster ์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ์ˆ  ์Šคํƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ผ๊ด€๋˜๊ณ  ์•ˆ์ •์ ์ด๋ฉฐ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์•„ํ‚คํ…์ฒ˜ ๋‚ด์—์„œ Self-Join ์ฟผ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. PostgreSQL ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”์ง„๊ณผ ํ”Œ๋žซํผ์˜ ํ˜ธํ™˜์„ฑ์€ ์„ฑ๋Šฅ์ด๋‚˜ ๊ธฐ๋Šฅ์„ ํฌ์ƒํ•˜์ง€ ์•Š๊ณ  ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ํ†ตํ•ฉ์„ ๋‹จ์ˆœํ™”ํ•˜๋ฏ€๋กœ ์ถ”๊ฐ€์ ์ธ ๋‹ค์–‘์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

AppMaster ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— Self-Joins๋ฅผ ํ†ตํ•ฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ๋‹จ์ผ ํ…Œ์ด๋ธ” ๋‚ด์— ์ˆจ๊ฒจ์ง„ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ ๊ด€๊ณ„๋ฅผ ๋ชจ๋ธ๋งํ•˜๊ณ  ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์กฐ์ง ๊ตฌ์กฐ, ์ง€๋ฆฌ์  ์œ„์น˜ ๋˜๋Š” ์ œํ’ˆ ๋ฒ”์ฃผ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋งŽ์€ ๊ฐ€๋Šฅ์„ฑ์ด ์ œ๊ณต๋˜๋ฉฐ, ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ตœ์ข… ์‚ฌ์šฉ์ž์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฒฝํ—˜์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ด€๊ณ„์™€ ๊ณ„์ธต์  ๊ตฌ์กฐ๊ฐ€ ๋งŽ์€ ๊ณต๊ธ‰๋ง ๊ด€๋ฆฌ, ์˜๋ฃŒ ๋˜๋Š” ๊ธˆ์œต๊ณผ ๊ฐ™์€ ํŠน์ • ์‚ฐ์—…์—์„œ๋Š” Self-Join ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์˜์‚ฌ ๊ฒฐ์ • ๋ฐ ๋ถ„์„์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

์š”์•ฝํ•˜์ž๋ฉด, Self-Join์€ ํ…Œ์ด๋ธ” ์ž์ฒด๋ฅผ ์กฐ์ธํ•˜์—ฌ ๋‹จ์ผ ํ…Œ์ด๋ธ” ๋‚ด ํ–‰ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ฐพ๋Š” ๋ฐ ์ดˆ์ ์„ ๋งž์ถ˜ ๊ณ ๊ธ‰ SQL ์ฟผ๋ฆฌ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” ๋ณ„์นญ๊ณผ ์ ์ ˆํ•œ ์—ด ์ฐธ์กฐ๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ Self-Joins๋Š” ๋ณต์žกํ•œ ๊ณ„์ธต์  ๊ด€๊ณ„๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋“œ๋Ÿฌ๋‚ด๊ณ  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ „์ฒด ๊ธฐ๋Šฅ๊ณผ ์‘๋‹ต์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ํ•„์ˆ˜ ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AppMaster ์˜ no-code ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋ผ๋„ ์ž์‹ ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ Self-Join ์ž‘์—…์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ์‚ฐ์—… ์ „๋ฐ˜์— ๊ฑธ์ณ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ด€๊ณ„๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ์•ˆ์ •์ ์ด๋ฉฐ ํšจ์œจ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .