๐Ÿ‘จ‍๐Ÿ’ป Back End/MySQL

๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ ์กฐ๊ฑด

KR_DEV 2023. 7. 22. 12:46

๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ ์กฐ๊ฑด

๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์ด๋ž€ ํ…Œ์ด๋ธ”์— ๋ถ€์ ์ ˆํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ด๋ธ”์„ ์„ค๊ณ„ํ•  ๋•Œ, ๊ฐ ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด์„œ ์ •์˜ํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ทœ์น™์„ ๋งํ•œ๋‹ค.

๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ •ํ™•์„ฑ ์œ ์ง€) + ์ œ์•ฝ ์กฐ๊ฑด (๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ์กฐ๊ฑด)

 

๐Ÿ‘‰  ์ฆ‰, ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ •๋“ฑ์˜ ์—ฐ์‚ฐ์„ ํ†ตํ•˜์—ฌ ๋ณ€ํ•˜๋”๋ผ๋„ ์ง€์†์ ์œผ๋กœ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค!

 

๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์—๋Š” ํฌ๊ฒŒ “๋„๋ฉ”์ธ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด”, “๊ฐœ์ฒด ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด”, “์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด”์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 


๋„๋ฉ”์ธ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ ์กฐ๊ฑด

๋„๋ฉ”์ธ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ ์กฐ๊ฑด์ด๋ž€ ๊ฐ ์†์„ฑ์˜ ๊ฐ’์€ ๋ฐ˜๋“œ์‹œ ๋„๋ฉ”์ธ์— ์ง€์ •๋œ ๊ฐ’๋งŒ์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค๋Š” ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค.
  • ๋„ ๊ฐ’์˜ ํ—ˆ์šฉ ์—ฌ๋ถ€ - NOT NULL

๐Ÿ‘‰  NULL์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์กฐ๊ฑด

 

  • ๊ณ ์œ ํ•œ ๊ฐ’ - UNIQUE

๐Ÿ‘‰  ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด ํ…Œ์ด๋ธ” ์•ˆ์—์„œ ์ค‘๋ณต๋˜์ง€ ์•Š์€ ํ•ญ์ƒ ์œ ์ผํ•œ ๊ฐ’์ด ๋˜๋„๋ก ํ•˜๋˜ NULL์„ ํ—ˆ์šฉํ•œ๋‹ค.

 

 

๐Ÿ‘‰  NULL ๊ฐ’์€ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์ž…๋ ฅ๋˜์–ด๋„ ์ƒ๊ด€์—†์œผ๋ฉฐ ๊ธฐ๋ณธ ํ‚ค๋Š” ํ…Œ์ด๋ธ”๋‹น 1๊ฐœ๋งŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด์— ๊ณ ์œ  ํ‚ค๋Š” ์—ฌ๋Ÿฌ๊ฐœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  • ์ฒดํฌ - CHECK

๐Ÿ‘‰  CHECK ์ œ์•ฝ ์กฐ๊ฑด์€ ํŠน์ • ์ปฌ๋Ÿผ์˜ ์ž…๋ ฅ ๊ฐ€๋Šฅํ•œ ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

๐Ÿ‘‰  ๋งŒ์•ฝ ํŠน์ • ์ปฌ๋Ÿผ์— CHECK ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ค์ •ํ•œ ๋‹ค์Œ, ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•  ๋•Œ ํ•ด๋‹น ํ•„๋“œ์˜ ๊ฐ’์ด CHECK ์ œ์•ฝ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ!

 

  • ์†์„ฑ์˜ ๊ธฐ๋ณธ ๊ฐ’ - DEFAULT

๐Ÿ‘‰  DEFAULT ์ œ์•ฝ ์กฐ๊ฑด์€ ํ•ด๋‹น ํ•„๋“œ์˜ ๊ธฐ๋ณธ ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉฐ, ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•  ๋•Œ ํ•ด๋‹น ํ•„๋“œ ๊ฐ’์„ ์ „๋‹ฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ ์„ค์ •๋œ ๊ธฐ๋ณธ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.

 


๊ฐœ์ฒด ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด - PRIMARY KEY (๊ธฐ๋ณธ ํ‚ค)

๊ธฐ๋ณธ ํ‚ค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์–ด๋–ค ์†์„ฑ๋„ ๋„ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์œผ๋ฉฐ, ์˜ค์ง ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ํ‚ค๋Š” ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ํ–‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์˜๋กœ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ฉฐ, ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ํ•˜๋‚˜์˜ ๊ธฐ๋ณธ ํ‚ค ์ œ์•ฝ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ถ”๊ฐ€์ ์œผ๋กœ ๊ธฐ๋ณธ ํ‚ค ์„ค์ • ์‹œ, ์ž๋™์œผ๋กœ ๊ธฐ๋ณธ ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ์ปฌ๋Ÿผ์œผ๋กœ ์ธ๋ฑ์Šค๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

 

๐Ÿ‘‰  ๊ธฐ๋ณธ ํ‚ค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์†์„ฑ์—๋Š” Null ์ž…๋ ฅ X + ์ค‘๋ณต ํ—ˆ์šฉ X → PK = UNIQUE + NOT NULL

 


์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด - FOREIGN KEY (์™ธ๋ž˜ ํ‚ค)

์ž์‹ ๋ฆด๋ ˆ์ด์…˜์˜ ์™ธ๋ž˜ ํ‚ค์˜ ๊ฐ’์€ ์ฐธ์กฐ๋œ ๋ถ€๋ชจ ๋ฆด๋ ˆ์ด์…˜์˜ ๊ธฐ๋ณธ ํ‚ค ๊ฐ’๊ณผ ๊ฐ™์•„์•ผ ํ•˜๋ฉฐ, ์ž์‹ ๋ฆด๋ ˆ์ด์…˜์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ ๋ถ€๋ชจ ๋ฆด๋ ˆ์ด์…˜์˜ ์ œ์•ฝ์„ ๋ฐ›๋Š”๋‹ค๋Š” ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค.

RDBMS์—์„œ๋Š” ์ปฌ๋Ÿผ์˜ ๊ฐ’์— ๋”ฐ๋ผ ํ…Œ์ด๋ธ”๋ผ๋ฆฌ ์—ฐ๊ฒฐํ•˜๋Š”๋ฐ ๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” ์ชฝ์˜ ํ…Œ์ด๋ธ”์„ ์ž์‹ ํ…Œ์ด๋ธ”, ๊ฐ’์„ ๊ฐ€์ง„ ์ปฌ๋Ÿผ์„ ์™ธ๋ž˜ ํ‚ค ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

์ฐธ์กฐ๋˜๋Š” ์ชฝ์˜ ํ…Œ์ด๋ธ”์„ ๋ถ€๋ชจ ํ…Œ์ด๋ธ”, ๊ฐ’์„ ๊ฐ€์ง„ ์ปฌ๋Ÿผ์„ ๋ถ€๋ชจ ํ‚ค ๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ ๋ถ€๋ชจ ํ‚ค๋Š” ๊ธฐ๋ณธ ํ‚ค ๋˜๋Š” ๊ณ ์œ  ํ‚ค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ฆ‰, ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ” (์ž์‹ ํ…Œ์ด๋ธ”)์˜ ๊ฐ’์ด ์ฐธ์กฐ๋˜๋Š” ํ…Œ์ด๋ธ” (๋ถ€๋ชจ ํ…Œ์ด๋ธ”)์˜ ์ปฌ๋Ÿผ์˜ ๊ฐ’์— ์กด์žฌํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
(์™ธ๋ž˜ ํ‚ค๋Š” NULL ๊ฐ’์ด๊ฑฐ๋‚˜ ๋˜๋Š” ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค or ๊ณ ์œ  ํ‚ค ๊ฐ’๊ณผ ๋™์ผํ•ด์•ผ ํ•œ๋‹ค)

 

๋ฐ˜์‘ํ˜•