๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋งฅ๋ฝ์์ ์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์ ํ์์ ์ธ ์ธก๋ฉด์ผ๋ก, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ณ ํ ์ด๋ธ ๊ฐ์ ์ ์ ํ ๋ฐ์ดํฐ ๊ด๊ณ๋ฅผ ๋ณด์ฅํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๋ค๋ฅธ ํ ์ด๋ธ์ ๊ธฐ๋ณธ ํค์ ํด๋นํ๋ ํ ์ด๋ธ์ ์ด ๋๋ ์ด ์กฐํฉ์ ๋ํ๋ ๋๋ค. ์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด์ ์ฃผ์ ๋ชฉ์ ์ ํ ์ด๋ธ ๊ฐ์ ์ฐ๊ฒฐ์ ์์ฑํ์ฌ ๋ฐ์ดํฐ ๋ถ์ผ์น๋ฅผ ๋ฐฉ์งํ๊ณ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ ๊ฒ์ ๋๋ค.
์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ํ ์ด๋ธ์ ๋ชจ๋ ์ธ๋ ํค ๊ฐ์ด ๊ด๋ จ ํ ์ด๋ธ์ ํญ์ ๋์ํ๊ณ ์ผ์นํ๋ ๊ธฐ๋ณธ ํค ๊ฐ์ ๊ฐ๊ฑฐ๋ null์ด์ด์ผ ํจ์ ๋ณด์ฅํ๋ ์์น์ ๋๋ค. ์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด์ ์ฐธ์กฐ ํ ์ด๋ธ์ ์ผ์นํ๋ ๊ธฐ๋ณธ ํค๊ฐ ์๋ ์ธ๋ ํค ๊ฐ์ ์ฝ์ ํ๊ฑฐ๋, ์กด์ฌํ์ง ์๋ ๊ธฐ๋ณธ ํค๋ฅผ ์ฐธ์กฐํ๋ ๊ธฐ์กด ์ธ๋ ํค๋ฅผ ์ ๋ฐ์ดํธํ๊ฑฐ๋, ๋ค๋ฅธ ํ ์ด๋ธ์ ์ข ์ ๋ ์ฝ๋๊ฐ ์๋ ๋ ์ฝ๋์ ๋๋ค. ์ด ๋ฉ์ปค๋์ฆ์ ์ ์ฒด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์์ ๋ฐ์ดํฐ ์ ํ์ฑ๊ณผ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด์ ํ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ์ ๋ณด๋ฅผ ๋ณ๋์ ๊ด๋ จ ํ ์ด๋ธ๋ก ๋ถํ ํ์ฌ ๋ฐ์ดํฐ ์ค๋ณต์ฑ์ ์ ๊ฑฐํ ์ ์์ผ๋ฏ๋ก ๋์ ์์ค์ ๋ฐ์ดํฐ ์ ๊ทํ๋ฅผ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ ๊ฒ์ ์๋๊ฐ ๋นจ๋ผ์ง๊ณ ์คํ ๋ฆฌ์ง ๊ณต๊ฐ์ด ์ค์ด๋ค๋ฉฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฌ์์ง๋ ๋ณด๋ค ํจ์จ์ ์ด๊ณ ์ฒด๊ณ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๊ฐ ๋ง๋ค์ด์ก์ต๋๋ค. ๋ํ ์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด์ ๊ฐ๋ฐ์๊ฐ ๋น์ฆ๋์ค ๊ท์น์ ํจ๊ณผ์ ์ผ๋ก ์ ์งํ๊ณ ์ ์ฌ์ ์ธ ๋ฐ์ดํฐ ์์์ด๋ ์ด์ ํ์์ ๋ฐฉ์งํ ์ ์๋ ๊ฐ๋ ฅํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๊ตฌ์ถํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด ์ ์ฉ์ ์ฌ์ฉ์๊ฐ ์ฝ๋ฉ ์์ด ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ฐ์ ์ผ๋ก ๋ง๋ค ์ ์๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ธ AppMasterno-code ํ๋ซํผ์ ํต์ฌ ๊ธฐ๋ฅ์ ๋๋ค. AppMaster ์ ํ๋ซํผ์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ํ๋ก์ธ์ค์ ์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด์ ์ํํ๊ฒ ํตํฉํ์ฌ ์ต์ ์ ๋ฐ์ดํฐ ๊ด๊ณ๋ฅผ ๊ฐ์ถ ์ ์ค๊ณ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ์ ๋ณด์ฅํ๊ณ ๊ถ๊ทน์ ์ผ๋ก ๋ค์ํ ๋น์ฆ๋์ค ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ์์ ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด ์์ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (DBMS)์์ ์ ๊ณตํ๋ SQL ๋ฌธ์ด๋ ๊ทธ๋ํฝ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ํํ ์ ์์ต๋๋ค. SQL์์ ๊ฐ๋ฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ํ ์ด๋ธ ์์ฑ ๋๋ ๋ณ๊ฒฝ ํ๋ก์ธ์ค ์ค์ ์ธ๋ ํค๋ฅผ ์ ์ํ์ฌ ๊ด๋ จ ํ ์ด๋ธ์ ์ฐธ์กฐ ์ด๊ณผ ํด๋น ๊ธฐ๋ณธ ํค ์ด์ ์ง์ ํฉ๋๋ค. ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ธฐ ์ํด CASCADE, SET NULL, SET DEFAULT ๋๋ NO ACTION๊ณผ ๊ฐ์ ์ฝ์ , ์ ๋ฐ์ดํธ ๋๋ ์ญ์ ์ํ ์ ํน์ ์์ ์ ๊ฐ์ ํ๋๋ก ์ ์ฝ ์กฐ๊ฑด์ ๊ตฌ์ฑํ ์๋ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด '๊ณ ๊ฐ'๊ณผ '์ฃผ๋ฌธ'์ด๋ผ๋ ๋ ๊ฐ์ ํ ์ด๋ธ์ด ์๋ ์จ๋ผ์ธ ์์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์๊ฐํด ๋ณด์ธ์. 'customers' ํ ์ด๋ธ์๋ 'customer_id'๋ผ๋ ๊ธฐ๋ณธ ํค๊ฐ ํฌํจ๋์ด ์๊ณ , 'orders' ํ ์ด๋ธ์๋ 'customers' ํ ์ด๋ธ์ 'customer_id'๋ฅผ ์ฐธ์กฐํ๋ 'customer_id_fk'๋ผ๋ ์ธ๋ ํค๊ฐ ์์ต๋๋ค. ์ด ์๋๋ฆฌ์ค์์ ์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด์ 'orders' ํ ์ด๋ธ์ ๋ชจ๋ 'customer_id_fk' ๊ฐ์ด 'customers' ํ ์ด๋ธ์ ์ผ์นํ๋ 'customer_id' ๊ฐ์ ๊ฐ๋๋ก ๋ณด์ฅํ์ฌ ๋ ํ ์ด๋ธ์ ํจ๊ณผ์ ์ผ๋ก ์ฐ๊ฒฐํ๊ณ ๊ณ ๊ฐ๊ณผ ๊ณ ๊ฐ ๊ฐ์ ์ ์ ํ ๊ด๊ณ๋ฅผ ์ค์ ํฉ๋๋ค. ๊ฐ๊ฐ์ ์ฃผ๋ฌธ.
AppMaster ํ๋ซํผ์ ๊ตฌ์ถ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด์ ์ํํ ํตํฉ์ ๋ณด์ฅํ๊ธฐ ์ํด AppMaster ๊ณ ๊ฐ์ ์๊ตฌ ์ฌํญ์ ๋ง๋ ์๋ฒ ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ฑ์ ํ์ํ ์ฝ๋ ์์ฑ, ์ปดํ์ผ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์ด ํ๋ซํผ์ ๋ฐฑ์๋์ฉ Go(golang), ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฉ Vue3 ํ๋ ์์ํฌ ๋ฐ JS/TS, ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ Kotlin, Jetpack Compose ๋ฐ SwiftUI ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ์ฌ ๋ค์ํ ๊ธฐ์ ๋ฐ ๊ณ ๋ถํ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ํ์ฅ์ฑ๊ณผ ์ ์์ฑ์ ์ง์ํฉ๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, ์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ค์ํ ์ธก๋ฉด์ผ๋ก, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๊ฐํํ๊ณ ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์งํ๋ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. ์๊ฐ์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๊ธฐ๋ฅ์ ๊ฐ์ถ AppMaster ์ no-code ํ๋ซํผ์ ์์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด ๋ฐ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ํตํฉ์ ๊ฐ์ํํ์ฌ ๋ค์ํ ๊ธฐ์ ๋ฐ ํ๊ฒฝ์ ์ ์ํ๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ํจ์จ์ ์ด๋ฉฐ ์์ ์ ์ธ ์ํํธ์จ์ด ์๋ฃจ์ ๊ฐ๋ฐ์ ๊ธฐ์ฌํฉ๋๋ค. ๊ณ ๋ถํ ํ๊ฒฝ.