๋ ธ์ฝ๋ ์ฑ์์ ํผ ๊ฒ์ฆ์ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฝ์กฐ๊ฑด
ํผ ๊ฒ์ฆ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฝ์กฐ๊ฑด์ ์ฌ์ฉํด ์๋ชป๋ ๋ฐ์ดํฐ๋ฅผ ์ด๊ธฐ์ ์ฐจ๋จํ๊ณ , ๋ช ํํ ์ค๋ฅ๋ฅผ ๋ณด์ฌ์ฃผ๋ฉฐ, ํ ์ ์ฒด์์ ๋ ธ์ฝ๋ ์ฑ์ ์ผ๊ด์ฑ์ ์ ์งํ์ธ์.

์๋ชป๋ ํผ ๋ฐ์ดํฐ๊ฐ ๋น ๋ฅด๊ฒ ํผ์ง๋ ์ด์
์๋ชป๋ ๋ฐ์ดํฐ๋ ํ ๊ณณ์ ๋จธ๋ฌด๋ฅด์ง ์์ต๋๋ค. ํผ์ ์๋ชป๋ ๊ฐ ํ๋๊ฐ ๋ค์ด๊ฐ๋ฉด ์ฑ์ ๋ชจ๋ ๊ณณ์์ ๋ณต์ฌยท์ฐธ์กฐยท์ ๋ขฐ๋๋ฉฐ ํผ์ง๋๋ค.
๋ณดํต์ ์์ ์ค์์์ ์์ํฉ๋๋ค. ๋๊ตฐ๊ฐ ์ด๋ฉ์ผ ๋ค์ ๊ณต๋ฐฑ์ ์ ๋ ฅํ๊ฑฐ๋, ์๋ชป๋ ๊ณ ๊ฐ์ ์ ํํ๊ฑฐ๋, ํ๋๊ฐ ํ์ฉํ๋ฏ๋ก ์์ ์๋์ ๋ฃ๋ ์์ ๋๋ค. ํผ์ด ๋ฐ์๋ค์ด๋ฉด ์์คํ ์ ๊ทธ ๊ฐ์ ์ง์ค๋ก ์ทจ๊ธํฉ๋๋ค.
๊ทธ ์ดํ ํ๊ธ์ ๋น ๋ฅด๊ฒ ์ผ์ด๋ฉ๋๋ค. ๋ณด๊ณ ์๊ฐ ์๋ชป๋ ํฉ๊ณ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , ์๋ํ๊ฐ ์๋ชป๋ ๋ ์ฝ๋์ ์๋ํ๋ฉฐ, ๊ณ ๊ฐ ๋ฉ์์ง๋ ์ง์ ๋ถํ ํ๋๋ฅผ ๊ฐ์ ธ๋ค ์ ๋ฌธ์ฑ์ด ๋จ์ด์ ธ ๋ณด์ด๊ฒ ๋ฉ๋๋ค. ํ๋ค์ ๊ฐ์ธ ์คํ๋ ๋์ํธ ๊ฐ์ ์ฐํ ๋ฐฉ๋ฒ์ ๋ง๋ค๊ณ , ๊ทธ๋ก ์ธํด ๋ถ์ผ์น๊ฐ ๋ ์๊น๋๋ค. ์ต์ ์ ๊ฒฝ์ฐ ๊ฐ์ ์๋ชป๋ ๊ฐ์ด ์ต์ ์ผ๋ก ๋ค์ ๋ํ๋๊ฑฐ๋ ์ ๋ ์ฝ๋์ ๋ณต์ฌ๋์ด ๋ค์ ๋์์ต๋๋ค.
๋์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฆฌํ๋ ๊ฑด ๋๋ฆฌ๊ณ ์ํํฉ๋๋ค. ์ ๋ฆฌ๋ ๋๊ฐ ํ ๋ฒ์ ์์ ์ผ๋ก ๋๋์ง ์์ต๋๋ค. ์๋ชป๋ ๊ฐ์ด ํ๋ฌ๊ฐ ๋ชจ๋ ๊ณณ์ ์ฐพ์ ๊ด๋ จ ๋ ์ฝ๋๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ๊ทธ์ ์์กดํ๋ ๊ฒ์ ๋ค์ ํ์ธํด์ผ ํฉ๋๋ค. ๊ฐ๋จํ ์์ ํ๋๊ฐ ์ํฌํ๋ก๋ฅผ ๊นจ๋จ๋ฆฌ๊ฑฐ๋ ์ค๋ณต ์๋ฆผ์ ์ ๋ฐํ๊ฑฐ๋ ๊ฐ์ฌ ๋ด์ญ์ ํ๋ฆด ์ ์์ต๋๋ค.
ํผ ๊ฒ์ฆ์ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฝ์ ๋ชฉ์ ์ ๊ทธ ์ฐ์ ๋ฐ์์ ์ฒซ ๋จ๊ณ์์ ์ฐจ๋จํ๋ ๊ฒ์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ถ๊ฐ๋ฅํ๊ฑฐ๋ ์ผ๊ด์ฑ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฑฐ๋ถํ๋ฉด, ์นจ๋ฌตํ๋ ์คํจ๋ฅผ ๋ง๊ณ UI์์ ์ ์ฉํ ํผ๋๋ฐฑ์ ๋ณด์ฌ์ค ๋ช ํํ ์๊ฐ์ ์ป์ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด AppMaster ๊ฐ์ ๋ ธ์ฝ๋ ๋๊ตฌ๋ก ๋ง๋ ๋ด๋ถ ์ฃผ๋ฌธ ํผ์ ์์ํด๋ณด์ธ์. ์ฃผ๋ฌธ์ด ๊ณ ๊ฐ ๋งํฌ ์์ด ์ ์ฅ๋๊ฑฐ๋ ์ค๋ณต ์ฃผ๋ฌธ ๋ฒํธ๋ก ์ ์ฅ๋๋ฉด ์ธ๋ณด์ด์ค, ๋ฐฐ์ก ์์ , ์์ต ๋ณด๊ณ ์์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์ต๋๋ค. ์ ์ถ ์์ ์ ์ก์๋ด๋ฉด ํ๋ฅ๊ฐ ๊นจ๋ํ๊ฒ ์ ์ง๋๊ณ ๋์ค์ ๊ณ ์น๋๋ผ ๊ณ ํต ๋ฐ์ง ์์๋ ๋ฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฝ, ์ฌ์ด ์ค๋ช
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฝ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์๋ ๊ฐ๋จํ ๊ท์น๋ค์ ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋๋ง๋คโ์น ํผ, ๋ชจ๋ฐ์ผ ํ๋ฉด, ์ํฌํธ, API ํธ์ถ ๋ฑ ์ด๋์ ์๋ โ์ด ๊ท์น๋ค์ด ์คํ๋ฉ๋๋ค. ๊ท์น์ด ๊นจ์ง๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ์ฅ์ ๊ฑฐ๋ถํฉ๋๋ค.
์ด๊ฒ์ด UI ์ ์ฉ ์ ํจ์ฑ ๊ฒ์ฌ์์ ํฐ ์ฐจ์ด์ ๋๋ค. ํผ์ ์ ์ฅ ์ ์ ํ๋๋ฅผ ํ์ธํ ์ ์์ง๋ง, ๊ทธ๋ฐ ๊ฒ์ฌ๋ค์ ๋ฌด์๋๊ฑฐ๋ ์ฐํ๋๊ธฐ ์ฝ์ต๋๋ค. ๋ค๋ฅธ ํ๋ฉด์ด ๊ฐ์ ๊ท์น์ ์์ ์๋ ์๊ณ , ์๋ํ๊ฐ ์ง์ DB์ ์ธ ์๋ ์์ต๋๋ค. ๊ณง ํ ๊ณณ์์๋ ๊ด์ฐฎ์ ๋ณด์ด๋ ๋ฐ์ดํฐ๊ฐ ๋ค๋ฅธ ๊ณณ์์๋ ๋ณด๊ณ ์๋ฅผ ๊นจ๋จ๋ฆฌ๊ฒ ๋ฉ๋๋ค.
์ฌ๋๋ค์ด ํผ ๊ฒ์ฆ์ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฝ์ ์ธ๊ธํ ๋ ์๋ฏธํ๋ ๋ฐ๋ ์ด๋ ์ต๋๋ค: ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ต์ข ์ฌ์ฌ๊ด์ผ๋ก ๋๊ณ , UI๋ ์ฌ์ฉ์๊ฐ ๊ฑฐ์ ๊ทธ ๋ฒฝ์ ๋ถ๋ชํ์ง ์๋๋ก ์๋ดํ๋ผ๋ ๊ฒ์ ๋๋ค.
๋๋ถ๋ถ์ ์ค์ ์ฑ์ ์ธ ๊ฐ์ง ๊ธฐ๋ณธ์ผ๋ก ๋ง์ ๋ถ๋ถ์ ์ปค๋ฒํ ์ ์์ต๋๋ค:
- ๊ณ ์ (Unique): โ์ด ๊ฐ์ ์ ์ผํด์ผ ํฉ๋๋ค.โ ์: ์ด๋ฉ์ผ, ์ฌ๋ฒ, ์ธ๋ณด์ด์ค ๋ฒํธ.
- ์ฒดํฌ(Check): โ์ด ์กฐ๊ฑด์ด ์ฐธ์ด์ด์ผ ํฉ๋๋ค.โ ์: quantity > 0, start_date <= end_date.
- ์ธ๋ ํค(Foreign key): โ์ด ๊ฐ์ ๋ค๋ฅธ ํ ์ด๋ธ์ ์ค์ ๋ ์ฝ๋๋ฅผ ๊ฐ๋ฆฌ์ผ์ผ ํฉ๋๋ค.โ ์: ๋ชจ๋ ์ฃผ๋ฌธ์ ์กด์ฌํ๋ ๊ณ ๊ฐ์ ์ฐธ์กฐํด์ผ ํฉ๋๋ค.
๋ ธ์ฝ๋ ์ฑ์์๋ ๋ณดํต ๋ฐ์ดํฐ ์์ฑยท์์ ๊ฒฝ๋ก๊ฐ ์ฌ๋ฌ ๊ฐ์ง์ด๊ธฐ ๋๋ฌธ์ ์ ์ฝ์ด ๋ ์ค์ํฉ๋๋ค. ๊ด๋ฆฌ์์ฉ ์น ์ฑ, ํ์ฅ ์ง์์ฉ ๋ชจ๋ฐ์ผ ์ฑ, ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ ์ฝ๋๋ฅผ ์ฐ๋ ์๋ํ๊ฐ ์์ ์ ์์ต๋๋ค. ์ ์ฝ์ ๊ทธ๋ฐ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ์ผ๊ด๋๊ฒ ์ ์งํฉ๋๋ค.
๋ํ ์ ์ฝ์ ์ผ๋์ ๋๊ณ ์ค๊ณํ๋ฉด ์ค๋ฅ๊ฐ ๋ ๋ช ํํด์ง๋๋ค. ๋์ค์ ์๋ชป๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ ค๋ณด๋ด๊ณ ๊ณ ์น๋ ๋์ โํด๋น ์ธ๋ณด์ด์ค ๋ฒํธ๊ฐ ์ด๋ฏธ ์กด์ฌํฉ๋๋คโ ๋๋ โ์ ํจํ ๊ณ ๊ฐ์ ์ ํํด ์ฃผ์ธ์โ์ฒ๋ผ ์ง์ค๋ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ฃผ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฒ์๋ถํฐ ๊น๋ํ๊ฒ ์ ์งํ ์ ์์ต๋๋ค.
์ ์ฝ์ ์ฌ๋ ์นํ์ ์ค๋ฅ ๋ฉ์์ง๋ก ์ฎ๊ธฐ๊ธฐ
์ ์ฝ์ ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฐจ๋จํ๋ ๋ฐ๋ ํ๋ฅญํ์ง๋ง, ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฅ๋ ๋ณดํต ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ฌธ๊ตฌ๋ก ์์ฑ๋์ด ์๊ณ ํผ์ ์ฑ์ฐ๋ ์ฌ๋์๊ฒ ์น์ ํ์ง ์์ต๋๋ค. ๋ชฉํ๋ ๋จ์ํฉ๋๋ค: ๊ท์น์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๊ณ , ์คํจ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ฌด์จ ์ผ์ด์๊ณ ์ด๋ป๊ฒ ๊ณ ์น๋์ง ์ค๋ช ํ๋ ๋ฉ์์ง๋ก ๋ฒ์ญํ์ธ์.
๊ฐ ์ ์ฝ์ ๋ ๋ถ๋ถ์ผ๋ก ๋ ์์ "์ค๋ฅ ๊ณ์ฝ"์ผ๋ก ์ทจ๊ธํ์ธ์: ๋ฌด์์ด ์๋ชป๋์๋๊ฐ, ๊ทธ๋ฆฌ๊ณ ์ด๋ป๊ฒ ๊ณ ์น๋. UI๋ ์น์ ํจ์ ์์ง ์์ผ๋ฉด์๋ ๋ฐ์ดํฐ ๊ท์น์ ์ฝํ์ํค์ง ์์์ผ ํฉ๋๋ค.
์ ์๋ํ๋ ๋ช ๊ฐ์ง ๋ฒ์ญ ์์:
-
๋์จ: โUnique constraint violation on users_email_keyโ
-
์ข์: โ์ด ์ด๋ฉ์ผ์ ์ด๋ฏธ ์ฌ์ฉ ์ค์ ๋๋ค. ๋ก๊ทธ์ธํ๊ฑฐ๋ ๋ค๋ฅธ ์ด๋ฉ์ผ์ ์ฌ์ฉํด ๋ณด์ธ์.โ
-
๋์จ: โCheck constraint failed: order_total_positiveโ
-
์ข์: โ์ด์ก์ 0๋ณด๋ค ์ปค์ผ ํฉ๋๋ค. ์ ์ด๋ ํ ๊ฐ์ ์ํ์ ์ถ๊ฐํ๊ฑฐ๋ ์๋์ ์กฐ์ ํ์ธ์.โ
-
๋์จ: โForeign key violation on customer_idโ
-
์ข์: โ์ ํจํ ๊ณ ๊ฐ์ ์ ํํ์ธ์. ์ ๊ณ ๊ฐ์ด๋ผ๋ฉด ๋จผ์ ๊ณ ๊ฐ์ ์์ฑํ์ธ์.โ
๋ฉ์์ง๋ฅผ ์ด๋์ ํ์ํ๋๋๋ ๋ง๋ณด๋ค ์ค์ํ ์ ์์ต๋๋ค. ๋จ์ผ ํ๋ ์ค๋ฅ๋ ํด๋น ํ๋ ์์ ํ์ํ์ธ์. ๊ต์ฐจ ํ๋ ๊ท์น(์: "์ข ๋ฃ์ผ์ ์์์ผ ์ดํ์ฌ์ผ ํ๋ค")์๋ ํผ ์์ค ๋ฐฐ๋๊ฐ ๋ ๋ช ํํฉ๋๋ค.
๋ฉ์์ง ์คํ์ผ์ ์๊ฒ ์ ์งํ์ธ์. ๋๋ถ๋ถ์ ๋ฌธ์ ๋ ์ธ๋ผ์ธ ํ๋ ํ ์คํธ, ๊ต์ฐจ ํ๋ ๊ท์น์ ์์ ๋ฐฐ๋, ์งง์ ํ์ธ์๋ ํ ์คํธ๋ฅผ ์ฐ๋ ์ ๋๋ฉด ์ถฉ๋ถํฉ๋๋ค.
์น๊ณผ ๋ชจ๋ฐ์ผ ์ ๋ฐ์ ๊ฑธ์ณ ๋ฌธ๊ตฌ๋ฅผ ์ผ๊ด๋๊ฒ ์ ์งํ์ธ์. ์น ํผ์ "์ ํจํ ๊ณ ๊ฐ์ ์ ํํ์ธ์"๋ผ๊ณ ์ ์๋ค๋ฉด ๋ชจ๋ฐ์ผ ์ฑ์ "Invalid FK" ๊ฐ์ ๋ฌธ๊ตฌ๋ฅผ ์ฐ์ง ๋ง์ธ์. ๊ฐ์ ์งง์ ๋์ฌ(โ์ ํโ, โ์ ๋ ฅโ, โ์ ๊ฑฐโ)์ ๋์ผํ ํค์ ์ฌ์ฉํด ์ฌ์ฉ์๊ฐ ๋ฌด์์ ๊ธฐ๋ํด์ผ ํ ์ง ํ์ตํ๋๋ก ๋ง๋์ธ์.
AppMaster์์ ๋น๋ํ๋ ๊ฒฝ์ฐ, ์ด ๋งคํ์ ์๋์ ์ผ๋ก ์ค๊ณํ๋ ๋ถ๋ถ์ ๋๋ค: ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์๊ฒฉํ๊ฒ ์ ์งํ๊ณ UI ๋ก์ง์ ์คํจ๋ฅผ ์ฐจ๋ถํ๊ณ ๊ตฌ์ฒด์ ์ธ ์๋ด๋ก ๋ฐ๊ฟ๋๋ค.
๋จ๊ณ๋ณ: ๋จผ์ ๊ท์น์ ๋ง๋ค๊ณ ๊ทธ๋ค์ ํผ์ ๋ง๋ค๊ธฐ
ํผ์ ๋จผ์ ์ค๊ณํ๋ฉด ๋์๋ ๋ชจ์๋ฆฌ ์ผ์ด์ค๋ฅผ ์ซ์๊ฐ๊ฒ ๋ฉ๋๋ค. ๋ฐ์ดํฐ ๊ท์น์ ๋จผ์ ์ค๊ณํ๋ฉด UI๋ ์ด๋ฏธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์กด์ฌํ๋ ๊ท์น์ ๋ฐ์ํ๋ฏ๋ก ๋ ๋จ์ํด์ง๋๋ค.
์ค์ฉ์ ์ธ ๋น๋ ์์:
- ์ ๋ง ์ค์ํ ๋ช๋ช ํ๋๋ฅผ ์ ์ด๋์ธ์. ํ๋ฒํ ๋ง๋ก โ์ ํจโ๋ฅผ ์ ์ํ์ธ์. ์: โ์ด๋ฉ์ผ์ ๊ณ ์ ํด์ผ ํ๋คโ, โ์๋์ 1 ์ด์์ด์ด์ผ ํ๋คโ, โ๋ชจ๋ ์ฃผ๋ฌธ์ ๊ณ ๊ฐ์ ์ํด์ผ ํ๋คโ.
- ํ ์ด๋ธ๊ณผ ๊ด๊ณ๋ฅผ ๋ชจ๋ธ๋งํ์ธ์. ํ๋ฉด์ ๊ทธ๋ฆฌ๊ธฐ ์ ์ ๋ฌด์์ด ๋ฌด์์ ์ํ๋์ง ๊ฒฐ์ ํ์ธ์.
- ๋นํ์ ๊ท์น์ ์ ์ฝ์ ์ถ๊ฐํ์ธ์. ์ค๋ณต์๋ ๊ณ ์ ์ ์ฝ, ํญ์ ์ฐธ์ด์ด์ผ ํ๋ ๊ท์น์๋ ์ฒดํฌ ์ ์ฝ, ๊ด๊ณ์๋ ์ธ๋ ํค๋ฅผ ์ฌ์ฉํ์ธ์.
- ์ ์ฝ๊ณผ ์ผ์นํ๋๋ก UI๋ฅผ ๋ง๋์ธ์. ํ์ ํ๋๋ฅผ ํ์ํ๊ณ , ์ ์ ํ ์ ๋ ฅ ์ ํ์ ์ฌ์ฉํ๋ฉฐ ๊ฐ๋จํ ํํธ๋ฅผ ์ถ๊ฐํ์ธ์. UI๋ ์ฌ๋์ ์๋ดํด์ผ ํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ต์ข ๊ด๋ฌธ์ด์ด์ผ ํฉ๋๋ค.
- ์๋์ ์ผ๋ก ๊นจ๋ณด์ธ์. ์ง์ ๋ถํ ๊ฐ์ ๋ถ์ฌ๋ฃ๊ณ , ์ค๋ณต์ ์๋ํ๊ณ , ๋๋ฝ๋ ๊ด๋ จ ๋ ์ฝ๋๋ฅผ ์ ํํด๋ณด์ธ์. ๊ทธ๋ฐ ๋ค์ ๋ ์ด๋ธ๊ณผ ์ค๋ฅ ๋ฌธ๊ตฌ๋ฅผ ๊ฐ์ ํด ๋ฌด์์ ๊ณ ์ณ์ผ ํ ์ง ๋ช ๋ฐฑํ๊ฒ ํ์ธ์.
๋น ๋ฅธ ์์
๋ด๋ถ์ "New Order" ํผ์ ๋ง๋ ๋ค๊ณ ํด๋ด ์๋ค. ์ฌ์ฉ์๊ฐ ๊ณ ๊ฐ ์ด๋ฆ์ผ๋ก ๊ฒ์ํ ์ ์๊ฒ ํ ์ ์์ง๋ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ค์ Customer ID(์ธ๋ ํค)๋ง ๋ฐ์๋ค์ฌ์ผ ํฉ๋๋ค. UI์์๋ ์ด๊ฒ ๊ฒ์ ๊ฐ๋ฅํ ํฝ์ปค๊ฐ ๋ฉ๋๋ค. ์ฌ์ฉ์๊ฐ ๊ณ ๊ฐ์ ์ ํํ์ง ์๊ณ ์ ์ถํ๋ฉด ๋ฉ์์ง๋ ํผ๋์ค๋ฌ์ด ์ ์ฅ ์ค๋ฅ ๋์ ๋จ์ํ โ๊ณ ๊ฐ์ ์ ํํ์ธ์โ๋ผ๊ณ ํ๋ฉด ๋ฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์น๊ณผ ๋ชจ๋ฐ์ผ ํผ ์ ๋ฐ์ ๊ฑธ์ณ ๊ท์น์ ๋ฐ๋ณตํ์ง ์๊ณ ๋ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
์ค์ ์ฌ๋๋ค์ด ๋ง๋๋ ์ค๋ณต์ ๋ง๋ ๊ณ ์ ์ ์ฝ
๊ณ ์ ์ ์ฝ์ "๋ค๋ฅธ ํํ์ ๊ฐ์ ๊ฒ"์ด ์์ด๋ ๊ฒ์ ๋ง๋ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋๋ค. ํผ์ด ๋์น๋ ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๊ฑฐ๋ถํฉ๋๋ค.
์ฌ๋๋ค์ด ์ค์๋ก ๋ฐ๋ณตํ๋ ๊ฐ๋ค์ ๋ํด ๊ณ ์ ์ ์ฝ์ ์ฌ์ฉํ์ธ์: ์ด๋ฉ์ผ, ์ฌ์ฉ์๋ช , ์ธ๋ณด์ด์ค ๋ฒํธ, ์์ฐ ํ๊ทธ, ์ฌ๋ฒ, ์คํ๋ ๋์ํธ์์ ๋ถ์ฌ๋ฃ์ ํฐ์ผ ๋ฒํธ ๋ฑ.
์ฒซ ๋ฒ์งธ ๊ฒฐ์ ์ ๋ฒ์์ ๋๋ค. ์ด๋ค ๊ฐ์ ์์คํ ์ ์ฒด์์ ๊ณ ์ ํด์ผ ํ ์ ์๊ณ (์ฌ์ฉ์๋ช ), ์ด๋ค ๊ฐ์ ๋ถ๋ชจ ๊ทธ๋ฃน ๋ด์์๋ง ๊ณ ์ ํ๋ฉด ๋ฉ๋๋ค(์กฐ์ง๋ณ ์ธ๋ณด์ด์ค ๋ฒํธ, ์ฐฝ๊ณ ๋ณ ์์ฐ ํ๊ทธ). ๋ฒ์๋ฅผ ์๋์ ์ผ๋ก ์ ํํด ์ ์์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ง์ง ๋ง์ธ์.
์ค์ฉ์ ์ธ ์ฌ๊ณ ๋ฐฉ์:
- ์ ์ญ ๊ณ ์ : ์์คํ ์ด๋์์๋ ํ๋์ ๊ฐ๋ง ํ์ฉ(์ฌ์ฉ์๋ช , ๊ณต๊ฐ ํธ๋ค)
- ์กฐ์ง๋ณ ๊ณ ์ : ํ์ฌ/ํ ๋ด์์๋ง ๊ณ ์ (invoce_number + org_id)
- ์์น๋ณ ๊ณ ์ : ์ฌ์ดํธ ๋ด์์๋ง ๊ณ ์ (asset_tag + location_id)
์ถฉ๋์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด ๊ท์น๋งํผ ์ค์ํฉ๋๋ค. ๊ณ ์ ์ ์ฝ์ด ์คํจํ๋ฉด ๋จ์ํ โ์ด๋ฏธ ์กด์ฌํจโ์ด๋ผ๊ณ ํ์ง ๋ง์ธ์. ๋ฌด์์ด ์ถฉ๋ํ๋์ง์ ์ฌ์ฉ์๊ฐ ๋ค์์ ๋ฌด์์ ํ ์ ์๋์ง ์๋ ค์ฃผ์ธ์. ์: โ์ธ๋ณด์ด์ค ๋ฒํธ 1047์ด Acme Co.์ ์ด๋ฏธ ์กด์ฌํฉ๋๋ค. 1047-2๋ฅผ ์๋ํ๊ฑฐ๋ ๊ธฐ์กด ์ธ๋ณด์ด์ค๋ฅผ ์ฌ์ธ์.โ UI๊ฐ ์์ ํ๊ฒ ๊ธฐ์กด ๋ ์ฝ๋๋ฅผ ์ฐธ์กฐํ ์ ์๋ค๋ฉด ์์ฑ์ผ์ด๋ ์์ ์ ๊ฐ์ ์์ ํํธ๋ ์ฌ์ฉ์๊ฐ ๋ ธ์ถ๋์ง ์๋ ์ ๋ณด๋ฅผ ๋ณด์ง ์๊ณ ๋ ํ๋ณตํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์์ ์์ (edit)์๋ ํน๋ณํ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค. ์ ๋ฐ์ดํธ๋ฅผ ์ ๋ ์ฝ๋๋ก ์ทจ๊ธํด ์๊ธฐ ์์ ๊ณผ ์ถฉ๋์ ์ผ์ผํค๋ ์ค์๊ฐ ํํฉ๋๋ค. ์ ์ฅ ๋ก์ง์ด ํ์ฌ ๋ ์ฝ๋๋ฅผ ์ธ์งํด ์๊ธฐ ์์ ๊ณผ ๋น๊ตํ์ง ์๋๋ก ํ์ธ์.
AppMaster์์๋ Data Designer์์ ๋จผ์ ๊ณ ์ ๊ท์น์ ์ ์ํ๊ณ ํผ์ ์น์ ํ ๋ฉ์์ง๋ก ๋ฐ์ํ์ธ์. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ต์ข ๊ด๋ฌธ์ด๊ณ UI๋ ์ค์ ๊ท์น์ ์ค๋ช ํฉ๋๋ค.
ํญ์ ์ฐธ์ด์ด์ผ ํ๋ ๊ท์น์ ์ํ ์ฒดํฌ ์ ์ฝ
์ฒดํฌ ์ ์ฝ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๊ฐ ํ๋ง๋ค ํญ์ ๊ฐ์ ํ๋ ๊ท์น์ ๋๋ค. ๋๊ตฐ๊ฐ ๊ท์น์ ๊นจ๋ ๊ฐ์ ์ ๋ ฅํ๋ฉด ์ ์ฅ์ด ์คํจํฉ๋๋ค. ์ด๋ ๋ค๋ฅธ ํ๋ฉด, ์ํฌํธ, ์๋ํ ๋ฑ ๋ค์ํ ๊ฒฝ๋ก๋ก ๋ฐ์ดํฐ๊ฐ ์์ฑ๋ ๋๋ ์ ๋ ์๋ฐ๋์ด์ ์ ๋๋ ๊ท์น์ ์ ํฉํฉ๋๋ค.
์ข์ ์ฒดํฌ๋ ๊ฐ๋จํ๊ณ ์์ธก ๊ฐ๋ฅํด์ผ ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ๊ท์น์ ์ถ์ธกํ ์ ์๋ค๋ฉด ๊ณ์ ์ค๋ฅ๋ฅผ ๊ฒช๊ฒ ๋ฉ๋๋ค. ์ฒดํฌ๋ ์ฌ์ค(fact)์ ์ง์คํ๊ณ ๋ณต์กํ ์ ์ฑ ์ ๋ฃ์ง ๋ง์ธ์.
์ฆ์ ํจ๊ณผ๋ฅผ ๋ณด๋ ์ผ๋ฐ์ ์ธ ์ฒดํฌ ์ ์ฝ:
- ๋ฒ์: ์๋์ 1
1000, ๋์ด๋ 13120 - ํ์ฉ ์ํ: status๋ Draft, Submitted, Approved, Rejected ์ค ํ๋์ฌ์ผ ํจ
- ์์ ์ซ์: amount > 0, ํ ์ธ์ 0~100 ์ฌ์ด
- ๋ ์ง ์์: end_date >= start_date
- ๋จ์ ๋ ผ๋ฆฌ: status = Approved ์ด๋ฉด approved_at ์ null์ด ์๋์ด์ผ ํจ
์ฒดํฌ๋ฅผ ์น๊ทผํ๊ฒ ๋๋ผ๊ฒ ํ๋ ์๋ น์ UI ๋ฌธ๊ตฌ์ ๋๋ค. ์ ์ฝ ์ด๋ฆ์ ๊ทธ๋๋ก ๋ฐ๋ณตํ์ง ๋ง๊ณ ์ฌ์ฉ์๊ฐ ๋ฌด์์ ๋ฐ๊ฟ์ผ ํ ์ง ์๋ ค์ฃผ์ธ์.
์ข์ ํจํด:
- โ์๋์ 1์์ 1000 ์ฌ์ด์ฌ์ผ ํฉ๋๋ค.โ
- โ์ํ๋ฅผ ์ ํํ์ธ์: Draft, Submitted, Approved, ๋๋ Rejected.โ
- โ์ข ๋ฃ์ผ์ ์์์ผ๊ณผ ๊ฐ๊ฑฐ๋ ์ดํ์ฌ์ผ ํฉ๋๋ค.โ
- โ๊ธ์ก์ 0๋ณด๋ค ์ปค์ผ ํฉ๋๋ค.โ
๋ ธ์ฝ๋ ๋น๋์ธ AppMaster์์๋ ์ฆ์ ํผ๋๋ฐฑ์ ์ํด ํผ์์ ๊ฐ์ ์ฒดํฌ๋ฅผ ๋ฏธ๋ฌ๋งํด๋ ๊ด์ฐฎ์ง๋ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฒดํฌ ์ ์ฝ์ ์ต์ข ๊ฐ๋๋ ์ผ๋ก ์ ์งํ์ธ์. ๋์ค์ ์๋ก์ด ํ๋ฉด์ด ์ถ๊ฐ๋์ด๋ ๊ท์น์ ์ ์ง๋ฉ๋๋ค.
๊ด๊ณ๋ฅผ ์ค์ฒด๋ก ๋ง๋๋ ์ธ๋ ํค
์ธ๋ ํค(FK)๋ ๋จ์ํ ์ฝ์์ ๊ฐ์ ํฉ๋๋ค: ํ๋๊ฐ ๋ค๋ฅธ ๋ ์ฝ๋๋ฅผ ๊ฐ๋ฆฌํจ๋ค๋ฉด ๊ทธ ๋ ์ฝ๋๋ ์ค์ ๋ก ์กด์ฌํด์ผ ํฉ๋๋ค. Order๊ฐ CustomerId๋ฅผ ๊ฐ์ง๋ค๋ฉด, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ Customers ํ ์ด๋ธ์ ์๋ ๊ณ ๊ฐ์ ์ฐธ์กฐํ๋ ์ฃผ๋ฌธ์ ๊ฑฐ๋ถํฉ๋๋ค.
์ด๊ฒ์ด ์ค์ํ ์ด์ ๋ ๊ด๊ณ ํ๋๊ฐ '๊ฑฐ์ ๋ง์' ๋ฐ์ดํฐ๊ฐ ๋๋ฌ๋๋ ์ง์ ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋๊ตฐ๊ฐ ๊ณ ๊ฐ ์ด๋ฆ์ ์ฝ๊ฐ ์๋ชป ์ ๋ ฅํ๊ฑฐ๋ ์ค๋๋ ID๋ฅผ ๋ถ์ฌ๋ฃ๊ฑฐ๋ ์ด์ ์ญ์ ๋ ๋ ์ฝ๋๋ฅผ ์ ํํ ์ ์์ต๋๋ค. FK๊ฐ ์์ผ๋ฉด ๊ทธ๋ฐ ์ค์๋ ๋ณด๊ณ ์๋ ์ธ๋ณด์ด์ค, ์ง์ ์์ ์์ ๋ฌธ์ ๊ฐ ๋ ๋๊น์ง ๋๋ฌ๋์ง ์์ต๋๋ค.
UI ํจํด์ ๊ฐ๋จํฉ๋๋ค: ์์ ํ ์คํธ ๋์ ์์ ํ ์ ํ์ง๋ฅผ ์ฌ์ฉํ์ธ์. "Customer"์ ํ ์คํธ ์ ๋ ฅ์ ๋์ง ๋ง๊ณ , ์ ํ(select), ๊ฒ์, ์๋์์ฑ ๋ฑ์ ์ฌ์ฉํด ์ค์ ๊ณ ๊ฐ์ ID๋ฅผ ๋ค์์ ์ ์ฅํ์ธ์. ๋ ธ์ฝ๋ ๋น๋(์: AppMaster UI ์ปดํฌ๋ํธ๋ฅผ ๋ชจ๋ธ์ ๋ฐ์ธ๋ฉ)์์๋ ๋๋กญ๋ค์ด์ด๋ ๊ฒ์ ๋ฆฌ์คํธ๋ฅผ Customers ํ ์ด๋ธ์ ๋ฐ์ธ๋ฉํ๊ณ ์ ํ๋ ๋ ์ฝ๋ ์ฐธ์กฐ๋ฅผ ์ ์ฅํ๋ ์์ ๋๋ค.
์ฐธ์กฐ๋ ๋ ์ฝ๋๊ฐ ์๊ฑฐ๋ ์ญ์ ๋ ๊ฒฝ์ฐ์ ๋์์ ๋ฏธ๋ฆฌ ๊ฒฐ์ ํ์ธ์. ๋๋ถ๋ถ ํ์ ๋ค์ ์ค ํ๋๋ฅผ ํํฉ๋๋ค:
- ๊ด๋ จ ๋ ์ฝ๋๊ฐ ์์ ๋ ์ญ์ ๋ฅผ ๊ธ์ง(๊ณ ๊ฐ, ์ ํ, ๋ถ์์ ํํจ)
- ์ญ์ ๋์ ๋ณด๊ด(์์นด์ด๋ธ)ํด ๊ธฐ๋ก์ ๋ณด์กดํ๋ฉด์ ๊ด๊ณ๊ฐ ๊นจ์ง์ง ์๊ฒ ํจ
- ์ ๋ง ์์ ํ ๊ฒฝ์ฐ์๋ง cascade delete ์ ์ฉ(๋น์ฆ๋์ค ๋ฐ์ดํฐ์์๋ ๋๋ฌพ)
- ๊ด๊ณ๊ฐ ์ ํ์ฌํญ์ด๋ฉด ์ฐธ์กฐ๋ฅผ ๋น ๊ฐ์ผ๋ก ์ค์
๋ํ "๊ด๋ จ ๋ ์ฝ๋ ์์ฑ" ํ๋ฆ์ ๊ณํํ์ธ์. ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ๊ณณ์ผ๋ก ๋๊ฐ์ ๊ณ ๊ฐ์ ๋ง๋ ๋ค์ ๋์์์ ๋ค์ ์ ๋ ฅํ๊ฒ ํด์ ์ ๋ฉ๋๋ค. ์ค์ฉ์ ์ธ ๋ฐฉ๋ฒ์ ๋จผ์ ๊ณ ๊ฐ์ ์์ฑํด ์ ID๋ฅผ ๋ฐํํ๊ณ ์๋์ผ๋ก ์ ํํ๋ "์ ๊ณ ๊ฐ" ์ก์ ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.
FK๊ฐ ์คํจํ๋ฉด ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ฃผ์ง ๋ง์ธ์. ๋ฌด์จ ์ผ์ด ์์๋์ง ํ๋ฒํ ๋ฌธ์ฅ์ผ๋ก ์๋ ค์ฃผ์ธ์: โ์ ํํ ๊ณ ๊ฐ์ด ๋ ์ด์ ์กด์ฌํ์ง ์์ต๋๋ค. ์ ํจํ ๊ณ ๊ฐ์ ์ ํํ์ธ์.โ ์ด ํ ๋ฌธ์ฅ์ด ๊นจ์ง ๊ด๊ณ๊ฐ ํผ์ง๋ ๊ฒ์ ๋ง์ต๋๋ค.
UI ํ๋ฆ์์ ์ ์ฝ ์คํจ ์ฒ๋ฆฌํ๊ธฐ
์ข์ ํผ์ ์ค์๋ฅผ ์กฐ๊ธฐ์ ์ก์ง๋ง ์์ฒด๊ฐ ์ต์ข ์ฌ์ฌ๊ด์ธ ๊ฒ์ฒ๋ผ ๊ตด์ง๋ ์์ต๋๋ค. UI๋ ์ฌ์ฉ์๊ฐ ๋ ๋น ๋ฅด๊ฒ ์์ ํ๋๋ก ๋์์ฃผ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ ์ฅ๋์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
ํด๋ผ์ด์ธํธ ์ธก ๊ฒ์ฌ๋ ๋ช ๋ฐฑํ ๊ฒ๋ค์ ์ก์ต๋๋ค: ํ์ ํ๋๊ฐ ๋น์ด ์๊ฑฐ๋ ์ด๋ฉ์ผ์ @๊ฐ ์๊ฑฐ๋ ์ซ์๊ฐ ๋ฒ์๋ฅผ ํฌ๊ฒ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ. ์ฆ์ ๋ณด์ฌ์ฃผ๋ฉด ํผ์ด ๋ฐ์์ฑ์ด ์ข์ ๋ณด์ด๊ณ ์คํจ ์ ์ถ์ ์ค์ ๋๋ค.
์๋ฒ ์ธก ๊ฒ์ฌ๋ ์ ์ฝ์ด ์ค์ ๋ก ์๋ํ๋ ๊ณณ์ ๋๋ค. UI๊ฐ ๋ฌด์ธ๊ฐ๋ฅผ ๋์น๊ฑฐ๋(๋๋ ๋ ์ฌ๋์ด ๋์์ ์ ์ถํ๋ ๊ฒฝ์ฐ) ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ค๋ณต, ์๋ชป๋ ๊ฐ, ๊นจ์ง ๊ด๊ณ๋ฅผ ์ฐจ๋จํฉ๋๋ค.
์ ์ฝ ์ค๋ฅ๊ฐ ์๋ฒ์์ ๋์์ฌ ๋๋ ์๋ต์ ์์ธก ๊ฐ๋ฅํ๊ฒ ์ ์งํ์ธ์:
- ์ฌ์ฉ์์ ๋ชจ๋ ์ ๋ ฅ์ ํผ์ ์ ์งํ์ธ์. ํ์ด์ง๋ฅผ ๋ฆฌ์ ํ์ง ๋ง์ธ์.
- ๋ฌธ์ ๋ฅผ ์ผ์ผํจ ํ๋๋ฅผ ๊ฐ์กฐํ๊ณ ๊ทผ์ฒ์ ์งง์ ๋ฉ์์ง๋ฅผ ์ถ๊ฐํ์ธ์.
- ์ด์๊ฐ ์ฌ๋ฌ ํ๋๋ฅผ ํฌํจํ๋ฉด ์๋จ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ๊ฐ์ฅ ๊ด๋ จ ์๋ ํ๋๋ฅผ ์ฌ์ ํ ํ์ํ์ธ์.
- ์์ ํ ๋ค์ ํ๋์ ์ ์ํ์ธ์: ๊ฐ์ ์์ ํ๊ฑฐ๋ ์ํฉ์ ๋ง๋ค๋ฉด ๊ธฐ์กด ๋ ์ฝ๋๋ฅผ ์ด๊ธฐ.
๋ง์ง๋ง์ผ๋ก ๋ฌด์จ ์ผ์ด ์์๋์ง ๋ก๊น ํด ํผ์ ๊ฐ์ ํ์ธ์. ์ ์ฝ ์ด๋ฆ, ํ ์ด๋ธ/ํ๋, ์ค๋ฅ๋ฅผ ์ผ์ผํจ ์ฌ์ฉ์ ๋์์ ์บก์ฒํ์ธ์. ์ด๋ค ์ ์ฝ์ด ์์ฃผ ์คํจํ๋ฉด UI์ ์์ ํํธ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ํด๋ผ์ด์ธํธ ์ธก ๊ฒ์ฌ๋ฅผ ๊ฐํํ์ธ์. ๊ฐ์์ค๋ฐ ์คํจ ์ฆ๊ฐ๋ ํผ๋์ค๋ฌ์ด ํ๋ฉด์ด๋ ๊นจ์ง ํตํฉ์ ์ ํธํ ์ ์์ต๋๋ค.
์๊ฐ์ด ์ง๋๋ ๊นจ๋ํ ๋ด๋ถ ์ฃผ๋ฌธ ํผ ์์
์์ ๊ณผ ์ง์์ด ์ฌ์ฉํ๋ ๊ฐ๋จํ ๋ด๋ถ ๋๊ตฌ์ธ "Create Order" ํผ์ ์๊ฐํด๋ณด์ธ์. ๊ฒ๋ณด๊ธฐ์ ๋ฌดํดํ์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค์ํ ํ ์ด๋ธ์ ๊ฑด๋๋ฆฝ๋๋ค. ํผ์ด ํ ๋ฒ์ด๋ผ๋ ์๋ชป๋ ์ ๋ ฅ์ ๋ฐ์ผ๋ฉด ๊ทธ ์ค์๋ ์ธ๋ณด์ด์ค, ๋ฐฐ์ก, ํ๋ถ, ๋ณด๊ณ ์๋ก ํผ์ง๋๋ค.
๊นจ๋ํ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ท์น์ UI๋ฅผ ๋ฐ๋ฅด๊ฒ ํ๋ ๊ฒ์ ๋๋ค. ํผ์ ๊ท์น๋ค์ ์น์ ํ๊ฒ ์๋ดํ๋ ํ๋ฐํธ์๋๊ฐ ๋๊ณ , ๋๊ตฐ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ํฌํธํ๊ฑฐ๋ ๋ค๋ฅธ ๊ณณ์์ ํธ์งํ๋๋ผ๋ ๊ท์น์ ๊ณ์ ์ ์ง๋ฉ๋๋ค.
Order ํ ์ด๋ธ์์ ๊ฐ์ ํ ํญ๋ชฉ ์:
- ๊ณ ์ ์ฃผ๋ฌธ ๋ฒํธ: ๊ฐ
order_number๋ ๋ฌ๋ผ์ผ ํฉ๋๋ค. - ํญ์ ์ฐธ์ธ ๊ท์น์ ์ํ ์ฒดํฌ:
quantity > 0,unit_price >= 0, ํ์ํ๋ฉดunit_price <= 100000๊ฐ์ ์ ์ฝ. - Customer๋ก์ ์ธ๋ ํค: ๋ชจ๋ ์ฃผ๋ฌธ์ ์ค์ ๊ณ ๊ฐ ๋ ์ฝ๋๋ฅผ ๊ฐ๋ฆฌ์ผ์ผ ํฉ๋๋ค.
์ค์ฌ์ฉ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ๋ณด์ธ์.
์์ ์ฌ์์ด ์ธ์๋ ์ฃผ๋ฌธ ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ค ์ค์๋ก ์ด๋ฏธ ์ฌ์ฉ๋ ๋ฒํธ๋ฅผ ๋ค์ ์ ๋ ฅํ๋ฉด ์ ์ฅ์ด ๊ณ ์ ์ ์ฝ์์ ์คํจํฉ๋๋ค. โ์ ์ฅ ์คํจโ ๊ฐ์ ๋ชจํธํ ๋ฉ์์ง ๋์ UI๋ โ์ฃผ๋ฌธ ๋ฒํธ๊ฐ ์ด๋ฏธ ์กด์ฌํฉ๋๋ค. ๋ค์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒํธ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๊ธฐ์กด ์ฃผ๋ฌธ์ ๊ฒ์ํ์ธ์.โ๋ผ๊ณ ๋ณด์ฌ์ค ์ ์์ต๋๋ค.
๋์ค์ ๋๊ตฐ๊ฐ ๊ณ ๊ฐ ๋ ์ฝ๋๋ฅผ ๋ณํฉํ๊ฑฐ๋ ์ญ์ ํ๋๋ฐ ๋ค๋ฅธ ์ฌ๋์ด ํผ์ ์ด์ด๋ ์ฑ ์ ์ฅ์ ๋๋ฅด๋ฉด ์ธ๋ ํค๊ฐ ์ด๋ฅผ ๋ง์ต๋๋ค. ์ข์ UI ์๋ต์ โ์ ํํ ๊ณ ๊ฐ์ ๋ ์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ณ ๊ฐ ๋ชฉ๋ก์ ์๋ก๊ณ ์นจํ๊ณ ๋ค๋ฅธ ๊ณ ๊ฐ์ ์ ํํ์ธ์.โ ๊ทธ๋ฐ ๋ค์ Customer ๋๋กญ๋ค์ด์ ๋ค์ ๋ก๋ํ๊ณ ํผ์ ๋๋จธ์ง ๋ด์ฉ์ ์ ์งํด ์ฌ์ฉ์๊ฐ ์์ ์ ์์ง ์๊ฒ ํฉ๋๋ค.
์ด ํจํด์ ์๊ฐ์ด ์ง๋๋ ์ฌ๋๋ค์๊ฒ ๋งค์ผ ์กฐ์ฌํ๋ผ๊ณ ์์กดํ์ง ์๊ณ ์ฃผ๋ฌธ์ ์ผ๊ด๋๊ฒ ์ ์งํฉ๋๋ค.
ํผ๋์ค๋ฌ์ด ์ค๋ฅ์ ๋๋ฌ์ด ๋ฐ์ดํฐ๋ฅผ ๋ง๋๋ ํํ ์ค์
๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์๋ง์ผ๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ UI ์ ์ฉ ๊ท์น์๋ง ์์กดํ๋ ๊ฒ์ ๋๋ค. ํผ์ ํ์ ํ๋๋ ๋์์ด ๋์ง๋ง ์ํฌํธ, ํตํฉ, ๊ด๋ฆฌ์ ํธ์ง, ๋๋ ๊ฐ์ ํ ์ด๋ธ์ ์ฐ๋ ๋ค๋ฅธ ํ๋ฉด์๋ ๋ณดํธ๊ฐ ๋์ง ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ชป๋ ๊ฐ์ ํ์ฉํ๋ฉด ๋์ค์ ์ด๋์๋ ๋ณด์ ๋๋ค.
๋ ๋ค๋ฅธ ํํ ์ค์๋ ํ์ค ์ํ์ ๋นํด ์ ์ฝ์ ๋๋ฌด ์๊ฒฉํ๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค. ์ฒ์์ ๋ง์ ๋ณด์ด๋ ์ฒดํฌ๊ฐ ์ผ์ฃผ์ผ ๋ค ์ ์์ ์ธ ์ฌ์ฉ ์ฌ๋ก(ํ๋ถ, ๋ถ๋ถ ๋ฐฐ์ก, ํด์ธ ์ ํ๋ฒํธ ๋ฑ)๋ฅผ ๋ง์ ์ ์์ต๋๋ค. ์ข์ ๊ท์น์ ํญ์ ์ฐธ์ด์ด์ผ ํ๋ ๊ฒ๋ง ์ ์ฝํ๋ ๊ฒ์ ๋๋ค.
์ ๋ฐ์ดํธ๋ ์์ฃผ ๊ฐ๊ณผ๋ฉ๋๋ค. ํธ์ง ์ ์๊ธฐ ์์ ๊ณผ์ ์ค๋ณต ์ถฉ๋์ ๊ณ ์ ์ ์ค๋ฅ์ ๋๋ค: ์ฌ์ฉ์๊ฐ ๋ ์ฝ๋๋ฅผ ์ด์ด ๊ด๋ จ ์๋ ํ๋๋ฅผ ๋ฐ๊พธ์๋๋ฐ ์ ์ฅ์ด ์คํจํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ํ ์ ํ๋ ํจ์ ์ ๋๋ค. ๋ ์ฝ๋๊ฐ Draft โ Approved โ Cancelled๋ก ์ด๋ํ ์ ์๋ค๋ฉด ์ฒดํฌ๊ฐ ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ํ์ฉํ๋์ง ํ์ธํ์ธ์.
์ธ๋ ํค ์คํจ๋ ๊ฐ์ฅ ํผํ ์ ์๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ํฉ๋๋ค: ์ฌ๋๋ค์ด ID๋ฅผ ์ง์ ํ์ดํํ๋๋ก ํ์ฉํ๋ ๊ฒ. ๊ด๊ณ ํ๋๋ฅผ ์์ ํ ์คํธ๋ก ๋๋ฉด ๊นจ์ง ๊ด๊ณ๊ฐ ์๊น๋๋ค. ๊ธฐ์กด ๋ ์ฝ๋์ ๋ฐ์ธ๋ฉ๋ ์ ํ๊ธฐ๋ฅผ ์ ํธํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฝ์ ๋ฐฑ์คํ์ผ๋ก ์ ์งํ์ธ์.
๋ง์ง๋ง์ผ๋ก ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฅ๋ ํจ๋๊ณผ ์ง์ ํฐ์ผ์ ๋ง๋ญ๋๋ค. ์๊ฒฉํ ์ ์ฝ์ ์ ์งํ๋ฉด์๋ ์ฌ๋ ์นํ์ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ค ์ ์์ต๋๋ค.
๊ฐ๋จํ ์์ ๋ชฉ๋ก:
- ์ ์ฝ์ ๋จ์ํ ํผ ๊ท์น์ด ์๋ ์ง์ค์ ์ถ์ฒ๋ก ์ ์งํ์ธ์
- ์ค์ ์ํฌํ๋ก(์์ธ ํฌํจ)๋ฅผ ๊ณ ๋ คํด ์ฒดํฌ๋ฅผ ์ค๊ณํ์ธ์
- ์์ฑ๋ฟ ์๋๋ผ ์์ ๊ณผ ์ํ ์ ํ๋ ์ฒ๋ฆฌํ์ธ์
- ๊ด๊ณ์๋ ์๋ณ์ ์ ๋ ฅ ๋์ ํฝ์ปค๋ฅผ ์ฌ์ฉํ์ธ์
- ์ ์ฝ ์คํจ๋ฅผ ํ๋ ์์ค์ ์น์ ํ ๋ฉ์์ง๋ก ๋งคํํ์ธ์
๋ ธ์ฝ๋ ํ์ ์ํ ๋น ๋ฅธ ์ฒดํฌ๋ฆฌ์คํธ์ ๋ค์ ๋จ๊ณ
ํผ์ ๋ฐฐํฌํ๊ธฐ ์ ์ ๊ธํ๊ฒ, ๊ธฐ๋ถ ๋์ ๋ , ๋ณต์ฌ๋ ๋ฐ์ดํฐ๋ก ์ฌ์ฉ๋ ๊ฒ์ ๊ฐ์ ํ์ธ์. ๊ฐ์ฅ ์์ ํ ์ ๊ทผ์ ํผ ๊ฒ์ฆ์ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฝ์ ๋์ด UI๊ฐ ๋์ณ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ง์ค์ ๊ฐ์ ํ๊ฒ ํ๋ ๊ฒ์ ๋๋ค.
์ถ์ ์ ๋น ๋ฅธ ์ ๊ฒ
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋ ๋ชจ๋ ํผ์์ ๋ค์์ ํ์ธํ์ธ์:
- ์ค๋ณต: ๊ณ ์ ํด์ผ ํ๋ ๊ฒ์ ์๋ณ(์ด๋ฉ์ผ, ์ฃผ๋ฌธ ๋ฒํธ, ์ธ๋ถ ID)ํ๊ณ ๊ณ ์ ๊ท์น์ด ์๋์ง ํ์ธ
- ๋๋ฝ๋ ๊ด๊ณ: ํ์ํ ๋ชจ๋ ๊ด๊ณ๊ฐ ๊ฐ์ ๋๋์ง ํ์ธ(์: ์ฃผ๋ฌธ์ ๊ณ ๊ฐ์ ๊ฐ์ ธ์ผ ํจ)
- ์๋ชป๋ ๋ฒ์: ๋ฐ๋์ ๋ฒ์ ๋ด์ ์์ด์ผ ํ๋ ๊ฐ์ ์ฒดํฌ ์ถ๊ฐ(quantity > 0, discount 0~100 ๋ฑ)
- ํ์ ํ๋: ํ์ ๋ฐ์ดํฐ๋ UI ํ์ ํ์ ๋ฟ ์๋๋ผ DB ๋ ๋ฒจ์์๋ ๊ฐ์
- ์์ ํ ๊ธฐ๋ณธ๊ฐ: ์๋ ์ฑ์ธ ๊ฐ์ ๊ฒฐ์ (status = "Draft" ๋ฑ)ํ์ฌ ์ฌ์ฉ์๊ฐ ์ถ์ธกํ์ง ์๊ฒ ํจ
๊ทธ๋ฐ ๋ค์ ๋น๋๊ฐ ์๋ ์ฌ์ฉ์์ธ ์ฒ ํ ์คํธํ์ธ์: ๋จผ์ ํ ๋ฒ ์ ์ ์ ์ถ์ ๋๊น์ง ํด ๋ณด๊ณ , ๊ทธ๋ค์ ์ค๋ณต, ๋๋ฝ๋ ๊ด๊ณ, ๋ฒ์๋ฅผ ๋ฒ์ด๋ ์์น, ๋น ํ์ ํ๋, ์๋ชป๋ ํ์ ์ ๋ ฅ ๋ฑ์ผ๋ก ๊นจ๋ณด์ธ์.
AppMaster์์์ ๋ค์ ๋จ๊ณ
AppMaster์์ ๋น๋ ์ค์ด๋ผ๋ฉด(Data Designer์์) ๋จผ์ ๊ท์น์ ๋ชจ๋ธ๋ง(unique, check, foreign keys)ํ ๋ค ์น ๋๋ ๋ชจ๋ฐ์ผ UI ๋น๋์์ ํผ์ ๋ง๋ค๊ณ Business Process Editor์ ์ ์ฅ ๋ก์ง์ ์ฐ๊ฒฐํ์ธ์. ์ ์ฝ์ด ์คํจํ๋ฉด ์ค๋ฅ๋ฅผ ์ก์ ํ ๊ฐ์ง ๋ช ํํ ํ๋(๋ฌด์์ ๋ฐ๊ฟ์ง, ์ด๋์์ ๋ฐ๊ฟ์ง)์ ์ ์ํ๋๋ก ๋งคํํ์ธ์.
์ค๋ฅ ๋ฌธ๊ตฌ๋ ์ฐจ๋ถํ๊ณ ์ผ๊ด๋๊ฒ ์ ์งํ์ธ์. ๋น๋ํ๋ ์ด์กฐ๋ฅผ ํผํ์ธ์. โ์ด๋ฉ์ผ์ด ์ ํจํ์ง ์์ต๋๋คโ๋ณด๋ค๋ โ๊ณ ์ ํ ์ด๋ฉ์ผ์ ์ฌ์ฉํ์ธ์โ ๊ฐ์ ๋ฌธ๊ตฌ๋ฅผ ์ ํธํ์ธ์. ๊ฐ๋ฅํ๋ฉด ์ถฉ๋ํ ๊ฐ์ด๋ ์๊ตฌ ๋ฒ์๋ฅผ ๋ณด์ฌ์ค์ ๊ณ ์น๊ธฐ ์ฝ๊ฒ ๋ง๋์ธ์.
ํ๋์ ์ค์ ํผ(์: "Create Customer" ๋๋ "New Order")์ ์ ํํด ์๋ํฌ์๋๋ก ๋ง๋ค๊ณ ํ์ ์ค์ ๊ทธ๋ ๊ทธ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํด ์๋ง์ผ๋ก ๋ง๋ค์ด ๋ณด๋ฉฐ ๊ฒ์ฆํ์ธ์.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฝ์กฐ๊ฑด์ผ๋ก ์์ํ์ธ์. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์น ํผ, ๋ชจ๋ฐ์ผ ํ๋ฉด, ์ํฌํธ, API ํธ์ถ ๋ฑ ๋ชจ๋ ์ฐ๊ธฐ ๊ฒฝ๋ก๋ฅผ ๋ณดํธํฉ๋๋ค. ํด๋ผ์ด์ธํธ ์ธก ์ ํจ์ฑ ๊ฒ์ฌ๋ ๋น ๋ฅธ ํผ๋๋ฐฑ์ ์ํด ์ ์ฉํ์ง๋ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ต์ข ๊ด๋ฌธ์ด ๋์ด์ผ ๋ค๋ฅธ ํ๋ฉด์ด๋ ์๋ํ๋ก ์๋ชป๋ ๊ฐ์ด ๋ค์ด์ค๋ ๊ฒ์ ๋ง์ ์ ์์ต๋๋ค.
์ค์ ๋น์ฆ๋์ค ๋ฐ์ดํฐ๋ฅผ ๋ง๊ฐ๋จ๋ฆฌ๋ ๋๋ถ๋ถ์ ๋ฌธ์ ๋ฅผ ๋ง๋ ๊ธฐ๋ณธ์ ์ง์คํ์ธ์: ๊ณ ์ (Unique) ๋ ์ค๋ณต์ ๋ง๊ณ , ์ฒดํฌ(Check) ๋ ํญ์ ์ฐธ์ด์ด์ผ ํ๋ ๊ท์น์ ๋ณด์ฅํ๋ฉฐ, ์ธ๋ ํค(Foreign keys) ๋ ๊ด๊ณ์ ์ค์ฒด์ฑ์ ์งํต๋๋ค. ์ํฌํธ๋ ์์ธ ์ํฉ๊น์ง ๊ณ ๋ คํด ์ ๋ ์๋ฐ๋๋ฉด ์ ๋๋ ๊ท์น๋ง ์ถ๊ฐํ์ธ์.
๊ฐ์ด ํน์ ๋ฒ์์์ ํ ๋ ์ฝ๋๋ฅผ ์๋ณํด์ผ ํ ๋ ๊ณ ์ ์ ์ฝ์ ์ฌ์ฉํ์ธ์. ์ด๋ฉ์ผ, ์ธ๋ณด์ด์ค ๋ฒํธ, ์ฌ๋ฒ์ฒ๋ผ ๊ธฐ๋ก์ ๊ณ ์ ํ๊ฒ ์๋ณํด์ผ ํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ๋จผ์ ๋ฒ์(scope)๋ฅผ ์ ํ์ธ์(์ ์ญ vs ์กฐ์ง๋ณ/์์น๋ณ) โ ๊ทธ๋์ผ ์ ์์ ๋ฐ๋ณต์ ๋ถํ์ํ๊ฒ ๋ง์ง ์์ต๋๋ค.
์ฒดํฌ ์ ์ฝ์ ๊ฐ๋จํ๊ณ ์์ธก ๊ฐ๋ฅํด์ผ ํฉ๋๋ค. ์: ๋ฒ์, ์์, ๋ ์ง ์์ ๊ฐ์ ๊ท์น์ ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ ์ด๋ธ๋ง ๋ณด๊ณ ๊ท์น์ ์ถ์ธกํ ์ ์๋ค๋ฉด ๋ฐ๋ณตํด์ ์ค๋ฅ๋ฅผ ๊ฒช๊ฒ ๋ฉ๋๋ค. UI์์ ์๋ด๋ฅผ ๋ถ๋ช ํ ํด์ฃผ๊ณ ๋ณต์กํ ์ ์ฑ ์ ์ฒดํฌ๋ก ์ง์ด๋ฃ์ง ๋ง์ธ์.
์ธ๋ ํค๋ โ๊ฑฐ์ ๋ง๋โ ์ฐธ์กฐ๋ฅผ ๋ง์์ค๋๋ค. ์ฃผ๋ฌธ์ด ์กด์ฌํ์ง ์๋ ๊ณ ๊ฐ์ ๊ฐ๋ฆฌํค๋ฉด ์ ๋ฉ๋๋ค. UI์์๋ ์์ ์ ๋ ฅ ๋์ ํฝ์ปค, ๊ฒ์, ์๋์์ฑ ๊ฐ์ ์์ ํ ์ ํ์ง๋ฅผ ์ฌ์ฉํด ๋ ์ด๋ธ์ด ์๋ ๊ณ ๊ฐ์ ID๋ฅผ ์ ์ฅํ์ธ์.
๊ฐ ์ ์ฝ์ โ์ค๋ฅ ๊ณ์ฝโ์ฒ๋ผ ๋ค๋ฃจ์ธ์: ๊ธฐ์ ์ ์คํจ๋ฅผ ๋ฌด์จ ์ผ์ด์๊ณ ์ด๋ป๊ฒ ๊ณ ์น๋์ง ์๋ ค์ฃผ๋ ๋ฌธ์ฅ์ผ๋ก ๋ฐ๊พธ๋ฉด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์ ๊ณ ์ ์๋ฐ์ โ์ด ์ด๋ฉ์ผ์ ์ด๋ฏธ ์ฌ์ฉ ์ค์ ๋๋ค. ๋ค๋ฅธ ์ด๋ฉ์ผ์ ์ฌ์ฉํ๊ฑฐ๋ ๋ก๊ทธ์ธํ์ธ์.โ ์ฒ๋ผ ๋ฐ๊ฟ ๋ณด์ฌ์ฃผ์ธ์.
๋จ์ผ ํ๋ ๊ด๋ จ ์ค๋ฅ๋ ํด๋น ํ๋ ์์ ๋ฐ๋ก ๋ณด์ฌ์ฃผ๊ณ , ์ฌ์ฉ์์ ์ ๋ ฅ์ ๊ทธ๋๋ก ์ ์งํ์ธ์. ๊ต์ฐจ ํ๋ ๊ท์น(์: ์์/์ข ๋ฃ์ผ)์ ํผ ์๋จ์ ๋ฐฐ๋๋ก ๊ฐ๋จํ ์๋ฆฌ๊ณ ๊ฐ์ฅ ๊ด๋ จ ์๋ ํ๋๋ฅผ ์ฌ์ ํ ๊ฐ์กฐํ๋ฉด ๊ณ ์น๊ธฐ ์ฌ์์ง๋๋ค.
ํด๋ผ์ด์ธํธ ์ธก ๊ฒ์ฌ๋ ๋น ํ์ ํ๋, ๊ธฐ๋ณธ ํฌ๋งท ์ค๋ฅ์ฒ๋ผ ๋ช ๋ฐฑํ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ์ก์ ์ ์ก ์คํจ๋ฅผ ์ค์ด๋ ์ฉ๋์ ๋๋ค. ํ์ง๋ง ๋ ์ด์ค ์ปจ๋์ ์ด๋ ๋ค๋ฅธ ์ฐ๊ธฐ ๊ฒฝ๋ก๋ฅผ ๋ง๊ธฐ ์ํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฝ์ด ์ฌ์ ํ ํ์ํฉ๋๋ค.
UI ๊ท์น๋ง ๋ฏฟ์ง ๋ง์ธ์. ํ์ ์ ๋ณํ๋ ํตํฉ, ๊ด๋ฆฌ์๊ฐ ์ง์ ์์ ํ๋ ๊ฒฝ์ฐ ๋ฑ ๋ค์ํ ๊ฒฝ๋ก๋ก ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ต๋๋ค. ์ ์ฝ์ ๋๋ฌด ์๊ฒฉํ๊ฒ ๋ง๋ค๋ฉด ์ ์์ ์ธ ์ฌ์ฉ๊น์ง ๋ง์ ์ ์๊ณ , ์ ๋ฐ์ดํธ ์ ์๊ธฐ ์์ ๊ณผ ์ถฉ๋ํ๋ ์ค๋ณต ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ๋ ํฉ๋๋ค. ๊ด๊ณ ํ๋๋ฅผ ์์ ์ ๋ ฅ์ผ๋ก ๋์ง ๋ง๊ณ ์ ํ๊ธฐ๋ฅผ ์ฌ์ฉํ์ธ์. ๊ทธ๋ฆฌ๊ณ ์์ DB ์ค๋ฅ๋ ์ฌ์ฉ์ ํจ๋์ ๋ง๋ญ๋๋คโํญ์ ์น์ ํ ๋ฉ์์ง๋ก ๋ฐ๊พธ์ธ์.
๋จผ์ Data Designer์์ ๋ฐ์ดํฐ์ ์ ์ฝ์ ๋ชจ๋ธ๋งํ ๋ค ํผ์ ๋ง๋ค๊ณ , ์ ์ฝ ์คํจ๋ฅผ UI์์ ์์๋ณด๊ธฐ ์ฌ์ด ๋ฉ์์ง๋ก ๋งคํํ์ธ์. AppMaster์์๋ ๋ชจ๋ธ์ unique/check/FK๋ฅผ ์ ์ํ๊ณ Business Process Editor์์ ์ ์ฅ ๋ก์ง์ ์ฐ๊ฒฐํ ๋ค์, ์คํจ ์ ์ฌ์ฉ์๊ฐ ๋ฌด์์ ํด์ผ ํ ์ง ํ ๊ฐ์ง ๋ช ํํ ํ๋์ ์ ์ํ๋ ํ๋ฆ์ ๋ง๋๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค.


