2023๋…„ 3์›” 22์ผยท3๋ถ„ ์ฝ๊ธฐ

๊ณ„๋‹จ์‹ ์‚ญ์ œ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์—์„œ Cascade Delete์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์‹ญ์‹œ์˜ค. ๊ฐ€์ด๋“œ๋Š” ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๊ตฌํ˜„, ์ด์  ๋ฐ ์œ„ํ—˜์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

๊ณ„๋‹จ์‹ ์‚ญ์ œ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์˜ค๋Š˜๋‚ ์˜ ๋””์ง€ํ„ธ ํ™˜๊ฒฝ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ๋Šฅ์ธ ๊ณ„๋‹จ์‹ ์‚ญ์ œ๋Š” ์ƒ์œ„-ํ•˜์œ„ ๊ด€๊ณ„์—์„œ ๊ด€๋ จ ๋ ˆ์ฝ”๋“œ ์ฒ˜๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ† ๋ก ์€ Cascade Delete, ๊ตฌํ˜„, ์žฅ์ , ๋‹จ์  ๋ฐ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์‹ฌ์ธต์ ์ธ ์ดํ•ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ๊ธฐ๋ณธ ์‚ฌํ•ญ, ๊ธฐ๋ณธ ํ‚ค ๋ฐ ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด, ๊ณ„๋‹จ์‹ ์‚ญ์ œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ์ž ์žฌ์  ํ•จ์ • ๋ฐ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ํ˜„์ƒ๊ณผ ํ•จ๊ป˜ MySQL, PostgreSQL ๋ฐ SQL Server์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๋…ผ์˜ํ•ฉ๋‹ˆ๋‹ค.

Cascade Delete์— ๋Œ€ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ์™€ ์ „๋žต์„ ํƒ๊ตฌํ•จ์œผ๋กœ์จ ๋…์ž๋Š” ์ •๋ณด์— ์ž…๊ฐํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ณ  ์œ„ํ—˜์„ ์™„ํ™”ํ•˜๋ฉด์„œ ์ด์ ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํฌ๊ด„์ ์ธ ๋ถ„์„์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž, ๊ฐœ๋ฐœ์ž ๋ฐ IT ์ „๋ฌธ๊ฐ€๋Š” ๊ด€๋ จ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋” ์ž˜ ๊ด€๋ฆฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์„ ํ–ฅ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SQL Server์—์„œ Cascade DELETE ์‚ฌ์šฉํ•˜๋Š” ์™ธ๋ž˜ ํ‚ค๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

SQL Server์—์„œ Cascade DELETE ์‚ฌ์šฉํ•˜๋Š” ์™ธ๋ž˜ ํ‚ค๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ๊ด€๋ จ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์™ธ๋ž˜ ํ‚ค๋Š” ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ๋‘ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š” ์—ด ๋˜๋Š” ์—ด ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. Cascade DELETE ์˜ต์…˜์€ ์ƒ์œ„ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์‚ญ์ œ๋  ๋•Œ ํ•ด๋‹น ํ•˜์œ„ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ œ๊ฑฐํ•˜๋Š” ๊ทœ์น™์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 'Orders' ์™€ 'Order_Items'๋ผ๋Š” ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์ด ์žˆ๋Š” ์ „์ž ์ƒ๊ฑฐ๋ž˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค 'Order_Items.''Orders' ํ…Œ์ด๋ธ”์—๋Š” ์ผ๋ฐ˜ ์ฃผ๋ฌธ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜๋ฉฐ 'Order_Items' ํ…Œ์ด๋ธ”์—๋Š” ๊ฐ ์ฃผ๋ฌธ๊ณผ ๊ด€๋ จ๋œ ๊ฐœ๋ณ„ ํ•ญ๋ชฉ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. 'Order_Items' ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ฐธ์กฐํ•˜์—ฌ 'Order_Items' ํ…Œ์ด๋ธ”์—์„œ Cascade DELETE ๋กœ ์™ธ๋ž˜ ํ‚ค๋ฅผ ์ •์˜ํ•˜๋ฉด 'Orders''Orders' ' ํ…Œ์ด๋ธ”์—์„œ ์ฃผ๋ฌธ์ด ์‚ญ์ œ๋  ๋•Œ 'Order_Items' ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๊ด€๋ จ ํ•ญ๋ชฉ์ด ๋„ ์ž๋™์œผ๋กœ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ์ƒ์œ„ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์—ฐ๊ฒฐ์ด ์—†๋Š” ๊ณ ์•„ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๊ณ„๋‹จ์‹ ๋™์ž‘์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์—์„œ ๊ณ„๋‹จ์‹ ๋™์ž‘์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‹œ์Šคํ…œ์˜ ํ•œ ๋ถ€๋ถ„์—์„œ์˜ ์ž‘์—… ๋˜๋Š” ๋ณ€๊ฒฝ์ด ์‹œ์Šคํ…œ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ ์ผ๋ จ์˜ ๊ด€๋ จ ์ž‘์—… ๋˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋™์ž‘์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์›น ๊ฐœ๋ฐœ ์˜ CSS (Cascading Style Sheets), ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ๊ณ„๋‹จ์‹ ์—…๋ฐ์ดํŠธ ๋ฐ ์‚ญ์ œ ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ด๋ฒคํŠธ ์ „ํŒŒ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ปจํ…์ŠคํŠธ์—์„œ ๊ด€์ฐฐ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปจํ…์ŠคํŠธ์—์„œ ๊ณ„๋‹จ์‹ ๋™์ž‘์€ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์‚ญ์ œ์™€ ๊ฐ™์€ ํŠน์ • ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์ž‘์—…์ด ์ƒ์œ„ ํ…Œ์ด๋ธ”์—์„œ ์ˆ˜ํ–‰๋˜์–ด ๊ด€๋ จ ํ•˜์œ„ ํ…Œ์ด๋ธ”์—์„œ ํ•ด๋‹น ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—๋Š” ๊ฐ ์ž‘์—…์ด ํŠน์ • ํ”„๋กœ์ ํŠธ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” "Projects" ํ…Œ์ด๋ธ”๊ณผ "Tasks" ํ…Œ์ด๋ธ”์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ…Œ์ด๋ธ” ๊ฐ„์— ๊ณ„๋‹จ์‹ ๋™์ž‘์ด ์žˆ๋Š” ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜๋ฉด "Projects" ํ…Œ์ด๋ธ”์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ญ์ œํ•˜๋ฉด "Tasks" ํ…Œ์ด๋ธ”์—์„œ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ์ž‘์—…์ด ์ž๋™์œผ๋กœ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ณ ์•„ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•  ๋•Œ ์ƒํ˜ธ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋™๊ธฐํ™”๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ํ•˜์—ฌ ์‹œ์Šคํ…œ ์ „์ฒด์—์„œ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

PostgreSQL DELETE ์บ์Šค์ผ€์ด๋“œ

PostgreSQL DELETE CASCADE๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ƒ์œ„ ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ ์‚ญ์ œ๋ฅผ ํ•˜์œ„ ํ…Œ์ด๋ธ”์˜ ๊ด€๋ จ ๋ ˆ์ฝ”๋“œ๋กœ ์ž๋™ ์ „ํŒŒํ•˜์—ฌ ๊ณ ์•„ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‚จ์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ฐธ์กฐํ•˜๋Š” CASCADE ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‹ ํ…Œ์ด๋ธ”์— ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด "Authors" ๋ฐ "Posts" ๋ผ๋Š” ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์ด ์žˆ๋Š” ๋ธ”๋กœ๊ทธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค. "Authors" ํ…Œ์ด๋ธ”์—๋Š” ๊ฐœ๋ณ„ ์ž‘์„ฑ์ž์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜๋ฉฐ "Posts" ํ…Œ์ด๋ธ”์—๋Š” ํ•ด๋‹น ์ž‘์„ฑ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์˜ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. "Posts" ํ…Œ์ด๋ธ”์—์„œ DELETE CASCADE๋กœ ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด์„ ์ •์˜ํ•˜์—ฌ "Authors" ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ์ž‘์„ฑ์ž๊ฐ€ "Authors" ํ…Œ์ด๋ธ”์—์„œ ์‚ญ์ œ๋  ๋•Œ "Posts" ์˜ ๋ชจ๋“  ๊ด€๋ จ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์ด "Posts" ํ…Œ์ด๋ธ”๋„ ์ž๋™์œผ๋กœ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์—์„œ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ๊ณ ์•„ ๊ฒŒ์‹œ๋ฌผ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๊ด€๋ จ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์œ„ ํ…Œ์ด๋ธ”์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ํ•จ๊ป˜ ์—…๋ฐ์ดํŠธ๋˜๊ฑฐ๋‚˜ ์ œ๊ฑฐ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

Postgres์—์„œ DELETE Cascade๋ฅผ ์–ธ์ œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ?

Postgres์˜ DELETE CASCADE๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ด€๋ จ ํ…Œ์ด๋ธ” ๊ฐ„์— ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ๋ฐ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ, ํŠนํžˆ ์ƒ์œ„ ํ…Œ์ด๋ธ”์—์„œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์ž ์žฌ์ ์œผ๋กœ ํ•˜์œ„ ํ…Œ์ด๋ธ”์— ๊ณ ์•„ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‚จ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. DELETE CASCADE๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒ์œ„ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ œ๊ฑฐ๋  ๋•Œ ํ•˜์œ„ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๊ด€๋ จ ๋ ˆ์ฝ”๋“œ๋„ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋˜์–ด ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์—”ํ„ฐํ‹ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด "Courses" ๊ณผ "Enrollments.""Courses" ํ…Œ์ด๋ธ”์—๋Š” ๊ฐœ๋ณ„ ์ฝ”์Šค์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜๋ฉฐ "Enrollments" ํ…Œ์ด๋ธ”์—๋Š” ๊ฐ ์ฝ”์Šค์— ๋“ฑ๋กํ•œ ํ•™์ƒ์ด ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ์ฝ”์Šค๊ฐ€ "Courses" ํ…Œ์ด๋ธ”์—์„œ ์‚ญ์ œ๋œ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด "Enrollments" ํ…Œ์ด๋ธ”์—์„œ ๋ชจ๋“  ๊ด€๋ จ ๋“ฑ๋ก ๋ ˆ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. "Enrollments" ํ…Œ์ด๋ธ”์—์„œ DELETE CASCADE๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด์„ ๊ตฌํ˜„ํ•˜๊ณ  "Courses" ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ์ฝ”์Šค๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๋“ฑ๋ก ๋ ˆ์ฝ”๋“œ๋„ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

์ฃผ์˜ํ•ด์„œ ๋‹ค๋ฃจ์ง€ ์•Š์œผ๋ฉด ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ์†์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ DELETE CASCADE ์‚ฌ์šฉ์˜ ์˜๋ฏธ๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ณ„๋‹จ์‹ ์‚ญ์ œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์— ํ•ญ์ƒ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‰๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

Postgres์—์„œ DELETE Cascade๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•?

Postgres์—์„œ DELETE CASCADE๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ•˜์œ„ ํ…Œ์ด๋ธ”๊ณผ ์ƒ์œ„ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•  ๋•Œ CASCADE ์˜ต์…˜์„ ์ง€์ •ํ•˜์—ฌ ํ•˜์œ„ ํ…Œ์ด๋ธ”์— ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ƒ์œ„ ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์‚ญ์ œ๋  ๋•Œ ํ•˜์œ„ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๊ด€๋ จ ๋ ˆ์ฝ”๋“œ๋„ ์ž๋™์œผ๋กœ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ Postgres์—์„œ DELETE CASCADE๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‹จ๊ณ„๋ณ„ ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค.

  • ๋จผ์ € ์ƒ์œ„ ๋ฐ ํ•˜์œ„ ํ…Œ์ด๋ธ”์„ ์ •์˜ํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด "Authors" ์™€ "Books.""Authors" ํ…Œ์ด๋ธ”์—๋Š” ๊ฐœ๋ณ„ ์ €์ž์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๊ณ  "Books" ํ…Œ์ด๋ธ”์—๋Š” ํ•ด๋‹น ์ €์ž๊ฐ€ ์“ด ์ฑ…์˜ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ ํ‚ค ์—ด์ด ์žˆ๋Š” ์ƒ์œ„ ํ…Œ์ด๋ธ”(์˜ˆ: "Authors," ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • ์ƒ์œ„ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ ํ‚ค ์—ด์ด ์žˆ๋Š” ํ•˜์œ„ ํ…Œ์ด๋ธ”(์˜ˆ: "Books" ์„ ๋งŒ๋“ค๊ณ  DELETE CASCADE ์˜ต์…˜์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด๊ณผ DELETE CASCADE๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ €์ž๊ฐ€ "Authors" ํ…Œ์ด๋ธ”์—์„œ ์‚ญ์ œ๋  ๋•Œ "Books" ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๊ด€๋ จ ์ฑ…์ด ์ž๋™์œผ๋กœ ์ œ๊ฑฐ๋˜์–ด ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ๊ณผ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์‹ ์ค‘ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ์†์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ DELETE CASCADE๋ฅผ ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณ„๋‹จ์‹ ์‚ญ์ œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์— ํ•ญ์ƒ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‰๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

DELETE Cascade๋Š” Postgres์—์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

Postgres์˜ DELETE CASCADE๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ๊ณผ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ํ•„์ˆ˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ์ƒ์œ„ ํ…Œ์ด๋ธ”์—์„œ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ํ•˜์œ„ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๊ด€๋ จ ๋ ˆ์ฝ”๋“œ๋„ ์ž๋™์œผ๋กœ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. Postgres์—์„œ DELETE CASCADE๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ์„ค๋ช…ํ•˜๋Š” ์‹ค์šฉ์ ์ธ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

"Professors" ๋ฐ "Courses" ๋ผ๋Š” ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์ด ์žˆ๋Š” ๋Œ€ํ•™ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. "Professors" ํ…Œ์ด๋ธ”์€ ๊ฐœ๋ณ„ ๊ต์ˆ˜์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  "Courses" ํ…Œ์ด๋ธ”์€ ์ด๋Ÿฌํ•œ ๊ต์ˆ˜๊ฐ€ ๊ฐ€๋ฅด์น˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๊ณผ์ •์€ ํ•œ ๋ช…์˜ ๊ต์ˆ˜์™€ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ ํ‚ค ์—ด์ด ์žˆ๋Š” "Professors" ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • " "Professors""Courses" " ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ณ  DELETE CASCADE ์˜ต์…˜์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ์ด์ œ ๋‘ ๋ช…์˜ ๊ต์ˆ˜์™€ ๋ช‡ ๊ฐœ์˜ ๊ณผ์ •์„ ๊ฐ๊ฐ์˜ ํ…Œ์ด๋ธ”์— ์‚ฝ์ž…ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ์‹œ์ ์—์„œ "Courses" ํ…Œ์ด๋ธ”์—๋Š” ํ•ด๋‹น ๊ต์ˆ˜์™€ ์—ฐ๊ฒฐ๋œ ์„ธ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. "Professors" ํ…Œ์ด๋ธ”์—์„œ ๊ต์ˆ˜ John Doe(ID: 1)๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๊ฒฝ์šฐ:

DELETE CASCADE ์ œ์•ฝ ์กฐ๊ฑด์œผ๋กœ ์ธํ•ด Postgres๋Š” "Courses" ํ…Œ์ด๋ธ”์—์„œ ๊ด€๋ จ ๊ณผ์ •( 'Math 101' and 'Physics 101')์„ ์ž๋™์œผ๋กœ ์ œ๊ฑฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ถ„๋ฆฌ๋œ ๊ณผ์ • ๋ ˆ์ฝ”๋“œ๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š๊ณ  ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์šฉ ๋…ธ์ฝ”๋“œ ํ™•์ธ
ํ•ต์‹ฌ ๊ฐœ๋…์„ ๋ช‡ ๋ถ„ ๋งŒ์— ๋ฐฐ์šฐ๊ณ  ์˜ค๋Š˜ ๋ฐ”๋กœ ์ž‘๋™ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ฑ์„ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”.
ํ”Œ๋žซํผ ์ฒดํ—˜

๊ฒฐ๋ก ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋Š” ์ ์  ๋” ๋””์ง€ํ„ธํ™”๋˜๋Š” ์„ธ์ƒ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ณ„๋‹จ์‹ ์‚ญ์ œ๋Š” ์ƒ์œ„-ํ•˜์œ„ ๊ด€๊ณ„์—์„œ ๊ด€๋ จ ๋ ˆ์ฝ”๋“œ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ„์†Œํ™”ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ๊ธฐ๋ณธ ์‚ฌํ•ญ, ๊ธฐ๋ณธ ํ‚ค ๋ฐ ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด, ๊ณ„๋‹จ์‹ ์‚ญ์ œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํƒ์ƒ‰ํ•˜์—ฌ ๊ตฌํ˜„, ์žฅ์ , ๋‹จ์  ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ์ดํ•ด๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

MySQL, PostgreSQL ๋ฐ SQL Server์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์‹ค์šฉ์ ์ธ ์˜ˆ์™€ ์„ค๋ช…์„ ํ†ตํ•ด ๋…์ž๋Š” ์ž ์žฌ์  ์œ„ํ—˜์„ ์™„ํ™”ํ•˜๋ฉด์„œ Cascade Delete์˜ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹ฌ์ธต ๋ถ„์„์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž, ๊ฐœ๋ฐœ์ž ๋ฐ IT ์ „๋ฌธ๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์„ ํ–ฅ์ƒํ•˜๊ณ  ๊ด€๋ จ ๋ ˆ์ฝ”๋“œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜์—ฌ ๊ถ๊ทน์ ์œผ๋กœ ๋ณด๋‹ค ๊ฐ•๋ ฅํ•˜๊ณ  ์•ˆ์ •์ ์ธ ๋ฐ์ดํ„ฐ ์ธํ”„๋ผ์— ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‰ฌ์šด ์‹œ์ž‘
๋ฉ‹์ง„๋งŒ๋“ค๊ธฐ

๋ฌด๋ฃŒ ์š”๊ธˆ์ œ๋กœ AppMaster๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.
์ค€๋น„๊ฐ€ ๋˜๋ฉด ์ ์ ˆํ•œ ๊ตฌ๋…์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋‹ค
๊ณ„๋‹จ์‹ ์‚ญ์ œ | AppMaster