Search

MySQL ๊ฐ์ฒด - ์™ธ๋ž˜ํ‚ค, CHECK

MySQL ๊ฐ์ฒด - ์™ธ๋ž˜ํ‚ค, CHECK

MySQL์—์„œ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•œ ๋‘ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๊ฐ์ฒด, ์™ธ๋ž˜ํ‚ค(Foreign Key)์™€ CHECK ์ œ์•ฝ ์กฐ๊ฑด์— ๋Œ€ํ•ด ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด ๋“œ๋ฆด๊ฒŒ์š”! ์™ธ๋ž˜ํ‚ค๋Š” ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ๊ผฌ์ด์ง€ ์•Š๋„๋ก ๋„์™€์ฃผ๊ณ , CHECK๋Š” ์ปฌ๋Ÿผ์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ’์ด ์กฐ๊ฑด์— ๋งž๋„๋ก ์ œํ•œํ•ด ์ค๋‹ˆ๋‹ค.

๋ชฉ์ฐจ

1.
์™ธ๋ž˜ํ‚ค(Foreign Key)๋ž€? [00:00:16]
2.
์™ธ๋ž˜ํ‚ค์˜ ์˜ต์…˜๊ณผ ๋™์ž‘ ๋ฐฉ์‹ (์บ์Šค์ผ€์ด๋“œ, ์…‹ ๋„, ๋ฆฌ์ŠคํŠธ๋ฆญํŠธ) [00:06:54]
3.
์™ธ๋ž˜ํ‚ค ์‹ค์Šต ์˜ˆ์ œ: ๊ฒŒ์‹œํŒ๊ณผ ๋Œ“๊ธ€ ํ…Œ์ด๋ธ” [00:07:42]
4.
CHECK ์ œ์•ฝ ์กฐ๊ฑด์ด๋ž€? [00:29:39]
5.
CHECK ์ œ์•ฝ ์กฐ๊ฑด ์‹ค์Šต: ๊ฐ€๊ฒฉ๊ณผ ํ• ์ธ ์กฐ๊ฑด [00:32:07]
6.
์ œ์•ฝ ์กฐ๊ฑด ์‚ญ์ œ ๋ฐฉ๋ฒ•๊ณผ ์ฃผ์˜์  [00:38:09]

1. ์™ธ๋ž˜ํ‚ค(Foreign Key)๋ž€? [00:00:16]

โ€ข
์™ธ๋ž˜ํ‚ค๋Š” ํ•œ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์ด ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค(Primary Key)๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ด์š”.
โ€ข
์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒŒ์‹œํŒ ํ…Œ์ด๋ธ”(A)์˜ ๊ธ€ ๋ฒˆํ˜ธ๊ฐ€ ๊ธฐ๋ณธ ํ‚ค๋ผ๋ฉด, ๋Œ“๊ธ€ ํ…Œ์ด๋ธ”(B)์˜ '๊ฒŒ์‹œ๊ธ€ ๋ฒˆํ˜ธ' ์ปฌ๋Ÿผ์ด A ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
โ€ข
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋Œ“๊ธ€์ด ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•˜๋Š” ๊ฒŒ์‹œ๊ธ€์—๋งŒ ์—ฐ๊ฒฐ๋˜๋„๋ก ํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ **๋ฌด๊ฒฐ์„ฑ(๊ฒฐํ•จ ์—†๋Š” ์ƒํƒœ)**์„ ๋ณด์žฅํ•ด ์ค๋‹ˆ๋‹ค.
โ€ข
๋ฌด๊ฒฐ์„ฑ์€ ์‰ฝ๊ฒŒ ๋งํ•ด "๋ฐ์ดํ„ฐ๊ฐ€ ์ •ํ™•ํ•˜๊ณ  ์ผ๊ด€๋œ ์ƒํƒœ"๋ฅผ ์˜๋ฏธํ•ด์š”.

2. ์™ธ๋ž˜ํ‚ค ์˜ต์…˜๊ณผ ๋™์ž‘ ๋ฐฉ์‹ [00:06:54]

์™ธ๋ž˜ํ‚ค์—๋Š” ๋ถ€๋ชจ ํ…Œ์ด๋ธ”(์ฐธ์กฐ๋˜๋Š” ํ…Œ์ด๋ธ”) ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€” ๋•Œ ์ž์‹ ํ…Œ์ด๋ธ”(์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ”)์— ์–ด๋–ป๊ฒŒ ์˜ํ–ฅ์„ ์ค„์ง€ ์ •ํ•˜๋Š” ์˜ต์…˜๋“ค์ด ์žˆ์–ด์š”:
โ€ข
CASCADE (์—ฐ์‡„์  ๋ณ€๊ฒฝ)๋ถ€๋ชจ ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์ • ๋˜๋Š” ์‚ญ์ œ๋˜๋ฉด ์ž์‹ ๋ฐ์ดํ„ฐ๋„ ์ž๋™์œผ๋กœ ์ˆ˜์ •/์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.์˜ˆ: ๊ฒŒ์‹œ๊ธ€ ๋ฒˆํ˜ธ๊ฐ€ 100์—์„œ 120์œผ๋กœ ๋ฐ”๋€Œ๋ฉด ๋Œ“๊ธ€๋„ 120์œผ๋กœ ๋ฐ”๋€Œ๊ณ , ๊ฒŒ์‹œ๊ธ€์ด ์‚ญ์ œ๋˜๋ฉด ๋Œ“๊ธ€๋„ ์‚ญ์ œ๋จ.
โ€ข
SET NULL๋ถ€๋ชจ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ์ž์‹ ํ…Œ์ด๋ธ”์˜ ์™ธ๋ž˜ํ‚ค ์ปฌ๋Ÿผ ๊ฐ’์ด NULL(๋นˆ ๊ฐ’)์œผ๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค.์˜ˆ: ๊ฒŒ์‹œ๊ธ€ ์‚ญ์ œ ์‹œ ๋Œ“๊ธ€์€ ๋‚จ๊ธฐ๋˜ ๊ฒŒ์‹œ๊ธ€ ๋ฒˆํ˜ธ๋Š” ๋น„์›Œ๋‘ .
โ€ข
RESTRICT (์ œํ•œ)์ž์‹ ํ…Œ์ด๋ธ”์— ์ฐธ์กฐํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด ๋ถ€๋ชจ ๋ฐ์ดํ„ฐ ์‚ญ์ œ/์ˆ˜์ •์„ ๋ง‰์Šต๋‹ˆ๋‹ค.์˜ˆ: ๋Œ“๊ธ€์ด ์žˆ๋Š” ๊ฒŒ์‹œ๊ธ€์€ ์‚ญ์ œ ๋ถˆ๊ฐ€.
โ€ข
NO ACTION์•„๋ฌด ๋™์ž‘๋„ ํ•˜์ง€ ์•Š๊ณ , ์™ธ๋ž˜ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด๋งŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

3. ์™ธ๋ž˜ํ‚ค ์‹ค์Šต ์˜ˆ์ œ: ๊ฒŒ์‹œํŒ๊ณผ ๋Œ“๊ธ€ ํ…Œ์ด๋ธ” [00:07:42]

โ€ข
๊ฒŒ์‹œํŒ ํ…Œ์ด๋ธ”์— ๊ธ€ ๋ฒˆํ˜ธ(๊ธฐ๋ณธ ํ‚ค)๋ฅผ ๋งŒ๋“ค๊ณ , ๋Œ“๊ธ€ ํ…Œ์ด๋ธ”์— '๋ณด๋“œ ์•„์ด๋””'๋ผ๋Š” ์™ธ๋ž˜ํ‚ค๋ฅผ ์ง€์ •ํ•ด ๊ฒŒ์‹œํŒ ๊ธ€ ๋ฒˆํ˜ธ๋ฅผ ์ฐธ์กฐํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
์™ธ๋ž˜ํ‚ค ์˜ต์…˜์„ ๋ฐ”๊พธ๋ฉฐ ๋ฐ์ดํ„ฐ ์ˆ˜์ •, ์‚ญ์ œ ์‹œ ๋Œ“๊ธ€์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”์ง€ ์ง์ ‘ ์‹ค์Šตํ•ด ๋ด…๋‹ˆ๋‹ค.
โ€ข
์˜ˆ๋ฅผ ๋“ค์–ด, ๊ธ€ ๋ฒˆํ˜ธ๋ฅผ ๋ฐ”๊พธ๋ฉด ๋Œ“๊ธ€์˜ ์ฐธ์กฐ ๋ฒˆํ˜ธ๋„ ๋ฐ”๋€Œ๊ณ , ๊ธ€์„ ์‚ญ์ œํ•˜๋ฉด ๋Œ“๊ธ€๋„ ๊ฐ™์ด ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ๋„๋กœ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

4. CHECK ์ œ์•ฝ ์กฐ๊ฑด์ด๋ž€? [00:29:39]

โ€ข
CHECK ์ œ์•ฝ ์กฐ๊ฑด์€ ์ปฌ๋Ÿผ์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ’์ด ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋˜๋„๋ก ์ œํ•œํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
โ€ข
์˜ˆ: ๊ธ‰์—ฌ ์ปฌ๋Ÿผ์— ๋งˆ์ด๋„ˆ์Šค ๊ฐ’์ด ๋“ค์–ด๊ฐ€์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜, ํ• ์ธ ๊ฐ€๊ฒฉ์ด ์›๋ž˜ ๊ฐ€๊ฒฉ๋ณด๋‹ค ํฌ์ง€ ์•Š๋„๋ก ์ œํ•œํ•  ์ˆ˜ ์žˆ์–ด์š”.
โ€ข
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ˆ์—์„œ ๊ทœ์น™์„ ๊ฐ•์ œ๋กœ ์ง€์ผœ ๋ฐ์ดํ„ฐ์˜ ์‹ ๋ขฐ๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. CHECK ์ œ์•ฝ ์กฐ๊ฑด ์‹ค์Šต: ๊ฐ€๊ฒฉ๊ณผ ํ• ์ธ ์กฐ๊ฑด [00:32:07]

โ€ข
์ƒํ’ˆ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ€๊ฒฉ์ด 0 ์ด์ƒ์ด์–ด์•ผ ํ•˜๊ณ , ํ• ์ธ ๊ฐ€๊ฒฉ์ด ์›๋ž˜ ๊ฐ€๊ฒฉ๋ณด๋‹ค ์ž‘์•„์•ผ ํ•œ๋‹ค๋Š” ์กฐ๊ฑด์„ CHECK๋กœ ์ง€์ •ํ•ด ๋ด…๋‹ˆ๋‹ค.
โ€ข
๊ฐ€๊ฒฉ์— ์Œ์ˆ˜๋‚˜ ํ• ์ธ ๊ฐ€๊ฒฉ์ด ๋” ํฐ ๊ฐ’์„ ๋„ฃ์œผ๋ ค ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด ์ž…๋ ฅ์ด ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.
โ€ข
์ •์ƒ์ ์ธ ๊ฐ’๋งŒ ์ž…๋ ฅ์ด ๊ฐ€๋Šฅํ•ด ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์ฃ .

6. ์ œ์•ฝ ์กฐ๊ฑด ์‚ญ์ œ ๋ฐฉ๋ฒ•๊ณผ ์ฃผ์˜์  [00:38:09]

โ€ข
์ด๋ฏธ ์„ค์ •ํ•œ ์™ธ๋ž˜ํ‚ค๋‚˜ CHECK ์ œ์•ฝ ์กฐ๊ฑด์„ ์‚ญ์ œํ•˜๋ ค๋ฉด ์ œ์•ฝ ์กฐ๊ฑด์˜ ์ด๋ฆ„์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
์›Œํฌ๋ฒค์น˜ ๊ฐ™์€ DB ๊ด€๋ฆฌ ๋„๊ตฌ์—์„œ ์ œ์•ฝ ์กฐ๊ฑด ์ด๋ฆ„์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜, ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์ฐพ์•„์„œ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์–ด์š”.
โ€ข
CHECK ์ œ์•ฝ ์กฐ๊ฑด์€ MySQL ์ตœ์‹  ๋ฒ„์ „์—์„œ ์ง€์›๋˜๊ธฐ ์‹œ์ž‘ํ•ด ๋„๊ตฌ์—์„œ ๋ฐ”๋กœ ๋ณด์ด์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฟผ๋ฆฌ ํ™œ์šฉ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ๋ฌด๋ฆฌ ์š”์•ฝ

์ด๋ฒˆ ์˜์ƒ์—์„œ๋Š” MySQL์—์„œ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์ง€ํ‚ค๋Š”ย ์™ธ๋ž˜ํ‚ค์™€ย CHECK ์ œ์•ฝ ์กฐ๊ฑด์„ ๋ฐฐ์› ์–ด์š”.
โ€ข
์™ธ๋ž˜ํ‚ค๋Š” ํ…Œ์ด๋ธ” ๊ฐ„ ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ๊ผฌ์ด์ง€ ์•Š๋„๋ก ๋•๊ณ , ๋‹ค์–‘ํ•œ ์˜ต์…˜์œผ๋กœ ์ˆ˜์ •/์‚ญ์ œ ์‹œ ์—ฐ์‡„์ž‘์šฉ์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.
โ€ข
CHECK ์ œ์•ฝ ์กฐ๊ฑด์€ ์ปฌ๋Ÿผ ๊ฐ’์ด ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋„๋ก ์ œํ•œํ•ด ๋ฐ์ดํ„ฐ์˜ ์‹ ๋ขฐ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.์ด ๋‘ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์ž˜ ํ™œ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋” ์•ˆ์ „ํ•˜๊ณ  ๊ฒฌ๊ณ ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค!
์˜์ƒ๊ณผ ํ•จ๊ป˜ ์ง์ ‘ ์‹ค์Šตํ•ด ๋ณด๋ฉด์„œ ์ดํ•ด๋ฅผ ํ™•์‹คํžˆ ํ•ด ๋ณด์„ธ์š”!