๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ๋ง – ํ‚ค(Key)์˜ ๋ชจ๋“  ๊ฒƒ

2026. 1. 3. 16:46ใ†Database

๋ฐ˜์‘ํ˜•

 

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์—์„œ ๋…ผ๋ฆฌ์  ๋ชจ๋ธ๋ง(Logical Modeling) ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ์ •์˜ํ•˜๊ณ  ์—”ํ„ฐํ‹ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๋Š” ํ•ต์‹ฌ ๋‹จ๊ณ„๋‹ค. ๊ทธ์ค‘์—์„œ๋„ Key ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ •์ฒด์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”์†Œ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Key์˜ ์ข…๋ฅ˜์™€ ์—ญํ• , ๊ทธ๋ฆฌ๊ณ  ํ˜„๋Œ€ ์„ค๊ณ„์—์„œ ์™œ ๋Œ€๋ถ€๋ถ„์˜ ์‹œ์Šคํ…œ์ด ๋Œ€๋ฆฌ ํ‚ค(Surrogate Key) ๋ฅผ ์„ ํƒํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž.

 

 

 

1. Key๋ž€ ๋ฌด์—‡์ธ๊ฐ€

Key๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฐ ํ–‰(Row)์„ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์žฅ์น˜๋‹ค.

๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋ฌด๋ฆฌ ๋งŽ์•„๋„ Key๋ฅผ ํ†ตํ•ด ํŠน์ • ํ–‰์„ ์ •ํ™•ํžˆ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

์ด๋Š” ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์˜ ์ถœ๋ฐœ์ ์ด๋‹ค.

 

 

2. ๊ธฐ๋ณธ ํ‚ค (Primary Key, PK)

๊ธฐ๋ณธ ํ‚ค๋Š” ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ๋Œ€ํ‘œ ํ‚ค๋‹ค.

  • NULL ๋ถˆ๊ฐ€: ๊ฐ’์ด ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.
  • ์œ ์ผ์„ฑ ๋ณด์žฅ: ์ค‘๋ณต๋œ ๊ฐ’์ด ์žˆ์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.
  • ๋ถˆ๋ณ€์„ฑ ์œ ์ง€: ํ•œ ๋ฒˆ ์ •ํ•ด์ง„ ๊ฐ’์€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ด๋ก ์ ์œผ๋กœ๋Š” PK๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ,

์‹ค์ œ๋กœ๋Š” ์™ธ๋ž˜ ํ‚ค ์ฐธ์กฐ์™€ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์ด ๋ณต์žกํ•˜๊ฒŒ ์–ฝํžˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค๋ฌด์—์„œ๋Š” ์ ˆ๋Œ€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 

3. ํ›„๋ณด ํ‚ค (Candidate Key)์™€ ๋Œ€์ฒด ํ‚ค (Alternate Key)

  • ํ›„๋ณด ํ‚ค๋Š” ๊ธฐ๋ณธ ํ‚ค๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ํ‚ค๋‹ค.
  • ์œ ์ผ์„ฑ๊ณผ ์ตœ์†Œ์„ฑ์„ ๋ชจ๋‘ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.
  • ๋Œ€์ฒด ํ‚ค๋Š” ํ›„๋ณด ํ‚ค ์ค‘์—์„œ ๊ธฐ๋ณธ ํ‚ค๋กœ ์„ ํƒ๋˜์ง€ ์•Š์€ ๋‚˜๋จธ์ง€ ํ‚ค๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด users ํ…Œ์ด๋ธ”์—์„œ user_id์™€ email์ด ๋ชจ๋‘ ์œ ์ผํ•˜๋‹ค๋ฉด, ๋‘ ์ปฌ๋Ÿผ ๋ชจ๋‘ ํ›„๋ณด ํ‚ค๋‹ค.

๊ทธ์ค‘ user_id๋ฅผ ๊ธฐ๋ณธ ํ‚ค๋กœ ์„ ํƒํ•˜๋ฉด email์€ ๋Œ€์ฒด ํ‚ค๊ฐ€ ๋œ๋‹ค.

 

 

 

4. ์™ธ๋ž˜ ํ‚ค (Foreign Key, FK)

์™ธ๋ž˜ ํ‚ค๋Š” ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

ํ•œ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์ด ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ฐธ์กฐํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.

์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์œ„๋ฐ˜์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด FK ์ œ์•ฝ์กฐ๊ฑด์„ ์‹ ์ค‘ํžˆ ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค.

 

 

5. ์ž์—ฐ ํ‚ค (Natural Key)์™€ ๋Œ€๋ฆฌ ํ‚ค (Surrogate Key)

์ž์—ฐ ํ‚ค

๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์กด์žฌํ•˜๋Š” ๊ฐ’์„ ๊ธฐ๋ณธ ํ‚ค๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด email์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ์‚ฌ์—…์ž๋“ฑ๋ก๋ฒˆํ˜ธ ๋“ฑ์ด ์ž์—ฐ ํ‚ค์˜ ์˜ˆ์‹œ๋‹ค.

 

๋ฌธ์ œ์ 

  1. ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ ์œ„๋ฐ˜ ๊ฐ€๋Šฅ์„ฑ
  2. ์—ฐ์‡„ ์—…๋ฐ์ดํŠธ๋กœ ์ธํ•œ ์‹œ์Šคํ…œ ๋ถ€ํ•˜
  3. ๋ฐ์ดํ„ฐ ์—ญ์‚ฌ์„ฑ ํ›ผ์†
  4. ์™ธ๋ถ€ ์‹œ์Šคํ…œ๊ณผ ์ถฉ๋Œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ

 

 

๋Œ€๋ฆฌ ํ‚ค

๋ฐ์ดํ„ฐ ์‹๋ณ„๋งŒ์„ ๋ชฉ์ ์œผ๋กœ ์ธ์œ„์ ์œผ๋กœ ์ƒ์„ฑํ•œ ํ‚ค๋‹ค.

๋ณดํ†ต AUTO_INCREMENT ๋˜๋Š” UUID ๋“ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค.

์–ด๋–ค ๋น„์ฆˆ๋‹ˆ์Šค ์˜๋ฏธ๋„ ๊ฐ€์ง€์ง€ ์•Š์œผ๋ฉฐ, ์˜ค์ง ์‹๋ณ„๋งŒ์„ ๋‹ด๋‹นํ•œ๋‹ค.

ํ˜„๋Œ€์ ์ธ ์„ค๊ณ„ ํŒจํ„ด

  • ๊ธฐ๋ณธ ํ‚ค๋Š” ๋Œ€๋ฆฌ ํ‚ค๋กœ ์„ค์ •ํ•œ๋‹ค.
  • ์ž์—ฐ ํ‚ค์—๋Š” UNIQUE ์ œ์•ฝ์กฐ๊ฑด์„ ๋ถ€์—ฌํ•ด ์ค‘๋ณต์„ ๋ฐฉ์ง€ํ•œ๋‹ค.

 

6. ์„ฑ๋Šฅ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„

๊ตฌ๋ถ„ ์žฅ์  ๋‹จ์ 
์ž์—ฐํ‚ค ๋น„์ฆˆ๋‹ˆ์Šค ํ‚ค๋กœ ์ง์ ‘ ์กฐํšŒ ๊ฐ€๋Šฅ, JOIN ๋ถˆํ•„์š” ํฌ๊ธฐ๊ฐ€ ์ปค์„œ ์ธ๋ฑ์Šค ๋‹จํŽธํ™” ๋ฐ ์„ฑ๋Šฅ ์ €ํ•˜
๋Œ€๋ฆฌํ‚ค ์“ฐ๊ธฐ ์„ฑ๋Šฅ ์šฐ์ˆ˜, ๊ณต๊ฐ„ ํšจ์œจ ๋†’์Œ ์ถ”๊ฐ€ ์กฐ์ธ ํ•„์š”, UNIQUE ์ธ๋ฑ์Šค ์ถ”๊ฐ€ ๋ถ€๋‹ด

 

์‹œ์Šคํ…œ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๋Œ€๋ฆฌ ํ‚ค์˜ ์žฅ์ ์ด ๋šœ๋ ทํ•ด์ง„๋‹ค.

๋ฐ์ดํ„ฐ๊ฐ€ ์ปค์ง€๊ณ  ํŠธ๋ž˜ํ”ฝ์ด ๋Š˜์–ด๋‚ ์ˆ˜๋ก ๋‹จ์ˆœํ•˜๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์‹๋ณ„์ž๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

7. ํ˜„๋Œ€์  ์„ค๊ณ„ ๋ฐฉํ–ฅ โญ๏ธ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ๋ฆ„์ด ๋Œ€๋ฆฌ ํ‚ค์˜ ์‚ฌ์šฉ์„ ํ‘œ์ค€์œผ๋กœ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค.

  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ์žฆ์€ ๋ณ€ํ™”๋กœ ์ธํ•ด ์ž์—ฐ ํ‚ค๋Š” ์•ˆ์ •์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.
  • ORM ๊ธฐ์ˆ ์ด ๋ถˆ๋ณ€ ์‹๋ณ„์ž๋ฅผ ์ „์ œ๋กœ ๋™์ž‘ํ•œ๋‹ค.
  • ๋ถ„์‚ฐ ์‹œ์Šคํ…œ๊ณผ MSA ๊ตฌ์กฐ์—์„œ๋Š” ์™ธ๋ถ€ ์˜์กด๋„๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋Œ€๋ฆฌ ํ‚ค๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๋Œ€๋ฆฌ ํ‚ค๋Š” ๋ณ€ํ™”๋ฌด์Œํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ์˜ ID๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ์ตœํ›„์˜ ๋ฐฉ์–ด์„ ์ด๋‹ค.

 

 

8. ๋ณตํ•ฉ ํ‚ค (Composite Key)

๋‘ ๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์„ ๋ฌถ์–ด ์œ ์ผ์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์˜ˆ: {user_id, role_id} ์กฐํ•ฉ์œผ๋กœ ์œ ์ผ์„ฑ ํ™•๋ณด.

 

ํ•˜์ง€๋งŒ ์ง๊ด€์ ์ด์ง€ ์•Š๊ณ , ORM์ด๋‚˜ ์ฝ”๋“œ ๋ ˆ๋ฒจ์—์„œ ๋ณ„๋„ ์‹๋ณ„์ž ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๋“ฑ ๋ณต์žก๋„๊ฐ€ ๋†’๋‹ค.

๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜„๋Œ€์  ์ ‘๊ทผ์ด ์„ ํ˜ธ๋œ๋‹ค.

{๋Œ€๋ฆฌ ํ‚ค(PK)} + {๋ณตํ•ฉ UNIQUE ์ œ์•ฝ์กฐ๊ฑด}

 

 

์ด ๋ฐฉ์‹์€ ๊ตฌ์กฐ๊ฐ€ ๋‹จ์ˆœํ•˜๊ณ  ๋ช…ํ™•ํ•˜๋‹ค.

๋‹จ์ผ ์ปฌ๋Ÿผ์œผ๋กœ ์™ธ๋ž˜ ํ‚ค๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ณ , UNIQUE ์ œ์•ฝ์กฐ๊ฑด์ด ์ค‘๋ณต์„ ๋ฐฉ์ง€ํ•œ๋‹ค.

๋‹ค๋งŒ ๊ธฐ๋ณธ ํ‚ค ์ธ๋ฑ์Šค์™€ UNIQUE ์ธ๋ฑ์Šค๊ฐ€ ๋”ฐ๋กœ ์ƒ์„ฑ๋˜์–ด ์ €์žฅ ๊ณต๊ฐ„์ด ์กฐ๊ธˆ ๋Š˜์–ด๋‚œ๋‹ค.

 

 

๋งˆ๋ฌด๋ฆฌ

๋…ผ๋ฆฌ์  ๋ชจ๋ธ๋ง์—์„œ ํ‚ค ์„ค๊ณ„๋Š” ๋‹จ์ˆœํ•œ ๊ธฐ์ˆ  ์š”์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ์˜ ์ •์ฒด์„ฑ์„ ์ •์˜ํ•˜๋Š” ์ผ์ด๋‹ค.

ํ˜„๋Œ€ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„ ๋Œ€๋ฆฌ ํ‚ค๋ฅผ ๊ธฐ๋ณธ ํ‚ค๋กœ์ž์—ฐ ํ‚ค๋Š” UNIQUE๋กœ ๊ด€๋ฆฌํ•˜๋Š” ํŒจํ„ด์„ ๋”ฐ๋ฅธ๋‹ค.

์ด ๋ฐฉ์‹์ด ๊ฒฐ๊ตญ ์•ˆ์ •์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๋ชจ๋‘ ๋งŒ์กฑ์‹œํ‚ค๋Š” ๊ฐ€์žฅ ํ˜„์‹ค์ ์ธ ํ•ด๋ฒ•์ด๋‹ค.

 

๋ฐ˜์‘ํ˜•