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

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

๋ฐ˜์‘ํ˜•

 

 

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ Relation(๊ด€๊ณ„) ๋Š” ํ…Œ์ด๋ธ” ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ์ •์˜ํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ๋‹ค. 

๋…ผ๋ฆฌ์  ๋ชจ๋ธ๋ง์—์„œ๋Š” ์ฐธ์—ฌ๋„, ์™ธ๋ž˜ ํ‚ค ์œ„์น˜, ์นด๋””๋„๋ฆฌํ‹ฐ(1:1, 1:N, M:N)๋ฅผ ์ •ํ™•ํžˆ ์„ค๊ณ„ํ•ด์•ผ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์กฐํšŒ ํšจ์œจ์ด ๋ณด์žฅ๋œ๋‹ค. 

์ด ๊ธ€์—์„œ๋Š” ๊ด€๊ณ„์˜ ๊ธฐ๋ณธ ์›์น™๋ถ€ํ„ฐ 1:1, M:N ๊ด€๊ณ„์˜ ์‹ค๋ฌด ๊ตฌํ˜„ ํŒจํ„ด๊นŒ์ง€ ์ •๋ฆฌํ•œ๋‹ค.

 

 

1. ๊ด€๊ณ„์˜ ๊ธฐ๋ณธ ์›์น™

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ด€๊ณ„๋Š” ๋ฐฉํ–ฅ์ด ์—†๋‹ค. 

JOIN์„ ํ†ตํ•ด ์–ด๋А ์ชฝ์—์„œ๋“  ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์ž์œ ๋กญ๊ฒŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์™ธ๋ž˜ ํ‚ค๋Š” ๋‹จ์ˆœํžˆ ์ œ์•ฝ์กฐ๊ฑด์ผ ๋ฟ, ์กฐํšŒ ๋ฐฉํ–ฅ์„ ์ œํ•œํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 

์ฐธ์—ฌ๋„(Participation) 

  • ์ฐธ์—ฌ๋„๋Š” ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๊ด€๊ณ„์— ํ•„์ˆ˜(Mandatory)์ธ์ง€ ์„ ํƒ(Optional)์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. 
  • ๋…ผ๋ฆฌ์  ๋ชจ๋ธ๋ง์—์„œ๋Š” ์™ธ๋ž˜ ํ‚ค์˜ NULL ํ—ˆ์šฉ ์—ฌ๋ถ€๋กœ ๊ตฌํ˜„ํ•œ๋‹ค. 

 

๊นŒ๋งˆ๊ท€๋ฐœ ํ‘œ๊ธฐ๋ฒ• ํ•ต์‹ฌ ์›์น™ 

  • ํ•œ ์—”ํ‹ฐํ‹ฐ ์ชฝ ๋์— ์žˆ๋Š” ๊ธฐํ˜ธ๋Š” ๋ฐ˜๋Œ€ํŽธ ์—”ํ‹ฐํ‹ฐ์— ๋Œ€ํ•œ ๊ทœ์น™์„ ์„ค๋ช…ํ•œ๋‹ค. 
  • ๊ด€๊ณ„์„  ๋์˜ ๊ธฐํ˜ธ๋Š” ๋ฐ˜๋Œ€ํŽธ ์—”ํ‹ฐํ‹ฐ์˜ ์ตœ์†Œ/์ตœ๋Œ€ ์ฐธ์—ฌ ์ˆ˜๋ฅผ ๋œปํ•œ๋‹ค.

 

0: ์„ ํƒ์  ์ฐธ์—ฌ, 1: ํ•„์ˆ˜์  ์ฐธ์—ฌ

 

 

 

 

 

 

 

2. ERD์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™

ERD๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ œ์•ฝ์กฐ๊ฑด์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ค์šด ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™๋„ ๊ทธ๋Œ€๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

DDL์€ ERD ์ค‘ DB๊ฐ€ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„๋งŒ ๊ตฌํ˜„ํ•œ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์—์„œ DDL๋กœ ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ•œ ๋‚˜๋จธ์ง€ ๊ทœ์น™์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

๊ด€๊ณ„ํ˜• DB์˜ ๊ธฐ๋ณธ ๋ฒ•์น™

  • ์™ธ๋ž˜ ํ‚ค๋Š” ํ•ญ์ƒ '๋‹ค(N)' ์ชฝ์— ์กด์žฌํ•œ๋‹ค.
  • FK๋ฅผ N์ชฝ์— ๋‘๋ฉด NULL๋กœ ์„ ํƒ์  ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„์—์„œ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์„ ์ง€ํ‚จ๋‹ค.
  • PK๋Š” ์œ ์ผํ•˜๋‹ค: ๋™์ผ PK ํ–‰์€ ์กด์žฌํ•  ์ˆ˜ ์—†๋‹ค.
  • FK๋Š” ๋‹จ์ผ ํ–‰๋งŒ ์ฐธ์กฐํ•œ๋‹ค: ํ•œ ๊ฐ’์ด ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ํ–‰์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
  • ์ปฌ๋Ÿผ์€ ์›์ž์ : ํ•˜๋‚˜์˜ ์ปฌ๋Ÿผ์— ์—ฌ๋Ÿฌ ๊ฐ’ ๋„ฃ์ง€ ์•Š๋Š”๋‹ค (์ œ1์ •๊ทœํ˜•).

 

 

 

 

3. ์ผ๋Œ€์ผ(1:1) ๊ด€๊ณ„

1:1 ๊ด€๊ณ„๋Š” ๋“œ๋ฌผ์ง€๋งŒ ์„ฑ๋Šฅ ์ตœ์ ํ™”, ๋ณด์•ˆ, ์„ ํƒ์  ์ •๋ณด ๋ถ„๋ฆฌ, ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

DB์—์„œ 1:1์„ ๊ฐ•์ œํ•˜๋ ค๋ฉด ์™ธ๋ž˜ ํ‚ค์— UNIQUE ์ œ์•ฝ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

 

์™ธ๋ž˜ ํ‚ค ์œ„์น˜ ์„ ํƒ

๋ณด์กฐ ํ…Œ์ด๋ธ”์— FK (๊ถŒ์žฅ)

  • ์ฃผ ํ…Œ์ด๋ธ” ๋ณ€๊ฒฝ ์—†์ด ๊ด€๊ณ„ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
  • 1:N์œผ๋กœ ํ™•์žฅ ์šฉ์ด
  • ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™(OCP) ๋งŒ์กฑ

์ฃผ ํ…Œ์ด๋ธ”์— FK (์˜ˆ์™ธ์ )

  • ๊ด€๊ณ„๊ฐ€ ํ•„์ˆ˜์ ์ผ ๋•Œ: NOT NULL๋กœ ์ •ํ•ฉ์„ฑ ๊ฐ•์ œ
  • ์กฐํšŒ ์„ฑ๋Šฅ์ด ๊ทน๋„๋กœ ์ค‘์š”ํ•  ๋•Œ: JOIN ์—†์ด ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ

ํ™•์žฅ์„ฑ ๋น„๊ต  

  • ์˜ˆ์™ธ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ณด์กฐ ํ…Œ์ด๋ธ”์— FK๋ฅผ ๋‘๋Š” ๊ฒƒ์ด ํ‘œ์ค€์ด๋‹ค. โญ๏ธ
์œ„์น˜ ์žฅ์  ๋‹จ์ 
๋ณด์กฐ ํ…Œ์ด๋ธ” ํ™•์žฅ์„ฑ ๋†’์Œ, 1:N์œผ๋กœ UNIQUE๋งŒ ์ œ๊ฑฐํ•˜๋ฉด ๋ณ€๊ฒฝ -
์ฃผ ํ…Œ์ด๋ธ” ์ฃผ ํ…Œ์ด๋ธ” ํ•„์ˆ˜ ๊ด€๊ณ„ ๊ฐ•์ œ ๊ฐ€๋Šฅ ์กฐํšŒ ๋น ๋ฆ„ ํ™•์žฅ์„ฑ ๋‚ฎ์Œ, ๋กœ์ง ๋ณต์žก

 

 

 

 

4. ๋‹ค๋Œ€๋‹ค(M:N) ๊ด€๊ณ„

๊ด€๊ณ„ํ˜• DB๋Š” ์›์ž์„ฑ, PK ์œ ์ผ์„ฑ, FK ๋‹จ์ผ ์ฐธ์กฐ ์ œ์•ฝ ๋•Œ๋ฌธ์— M:N์„ ์ง์ ‘ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋‹ค.

์ด ๋•Œ, ์ค‘๊ฐ„์— ์—ฐ๊ฒฐ ํ…Œ์ด๋ธ”(Junction Table)์„ ๋‘๋Š” ๊ฒƒ์ด ๋ฐฉ๋ฒ•์ด๋‹ค.

 

์—ฐ๊ฒฐ ํ…Œ์ด๋ธ”์˜ ์—ญํ• 

 

์‹ค๋ฌด์—์„œ ๋Œ€๋ถ€๋ถ„  ์—ฐ๊ด€ ์—”ํ‹ฐํ‹ฐ(Associative Entity)๊ฐ€ ๋˜์–ด ๋น„์ฆˆ๋‹ˆ์Šค ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค!

 

 

textA ํ…Œ์ด๋ธ” (1) ←→ (N) ์—ฐ๊ฒฐ ํ…Œ์ด๋ธ” (1) ←→ (N) B ํ…Œ์ด๋ธ”

 

  • ์–‘์ชฝ PK๋ฅผ FK๋กœ ๊ฐ€์ ธ ๋‹ค๋ฆฌ ์—ญํ•  ํ•œ๋‹ค.
  • JOIN์œผ๋กœ ์–‘๋ฐฉํ–ฅ ์กฐํšŒ ๊ฐ€๋Šฅ.
  • ๊ด€๊ณ„ ์ž์ฒด์˜ ์†์„ฑ(์ฃผ๋ฌธ ์ˆ˜๋Ÿ‰, ๊ฐ€๊ฒฉ ๋“ฑ)์„ ์ €์žฅํ•œ๋‹ค.

 

์—ฐ๊ด€ ์—”ํ‹ฐํ‹ฐ ์ถ”์ฒœ ์ด๋ฆ„ ๋ฐ ํŠน์ง•

  1. ์—ฐ๊ฒฐ ๊ฐ•์กฐ
    1. ์ฃผ๋ฌธ์ƒํ’ˆ(order_product)
      • '์ฃผ๋ฌธ'๊ณผ '์ƒํ’ˆ' ํ…Œ์ด๋ธ”์„ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค๋Š” ๊ด€๊ณ„๋ฅผ ์ด๋ฆ„์— ๋ช…์‹œ์ ์œผ๋กœ ๋ณด์—ฌ์ค€๋‹ค.
      • ๋งค์šฐ ์ง๊ด€์ ์ด๊ณ  ๋‹จ์ˆœํ•˜์—ฌ ๊ด€๊ณ„๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.
  2. ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„
    1. ์ฃผ๋ฌธ ํ•ญ๋ชฉ(order_item)
      • '์ฃผ๋ฌธ'์— ํฌํ•จ๋œ 'ํ•ญ๋ชฉ'์ด๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์žฅ ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
      • ์‹ค์ œ ์‡ผํ•‘๋ชฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(์˜ˆ: ์žฅ๋ฐ”๊ตฌ๋‹ˆ ํ•ญ๋ชฉ, ์ฃผ๋ฌธ ํ•ญ๋ชฉ)๊ณผ ์šฉ์–ด๊ฐ€ ์ผ์น˜ํ•˜์—ฌ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค.
    2. ์ฃผ๋ฌธ์ƒ์„ธ(order_detail)
      • '์ฃผ๋ฌธ์˜ ์ƒ์„ธ ๋‚ด์—ญ'์ด๋ผ๋Š” ์˜๋ฏธ๋กœ, ‘order_item' ๊ณผ ๊ฑฐ์˜ ๋™์ผํ•œ ์˜๋ฏธ๋กœ ๋„๋ฆฌ ์‚ฌ์šฉ๋œ๋‹ค.
      • ์ฃผ๋ฌธ์— ์†ํ•œ ๊ฐ ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์ƒ์„ธํžˆ ๋‚˜ํƒ€๋‚ธ๋‹ค๋Š” ์ ์„ ๊ฐ•์กฐํ•œ๋‹ค.

 

 

5. ๊ฐœ๋…์  vs ๋…ผ๋ฆฌ์  ๋ชจ๋ธ๋ง

์†์„ฑ ์—†๋Š” M:N

  • ๊ฐœ๋…์ : M:N ๊ด€๊ณ„๋กœ ํ‘œํ˜„
  • ๋…ผ๋ฆฌ์ : ์—ฐ๊ฒฐ ํ…Œ์ด๋ธ”๋กœ 1:N + 1:N ๋ถ„ํ•ด

์†์„ฑ ์žˆ๋Š” M:N

  • ๊ฐœ๋…์ : ์ด๋ฏธ ์—ฐ๊ด€ ์—”ํ‹ฐํ‹ฐ๋กœ ํ‘œํ˜„
  • ๋…ผ๋ฆฌ์ : ๊ทธ๋Œ€๋กœ ํ…Œ์ด๋ธ” ๊ตฌํ˜„

์‹ค๋ฌด ํŒ: ์†์„ฑ ์—†๋Š” M:N์„ ๋ฐœ๊ฒฌํ•˜๋ฉด "์ด ๊ด€๊ณ„์— ์–ด๋–ค ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•œ๊ฐ€?"๋ฅผ ๊ณ ๋ฏผํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„ ์ˆจ๊ฒจ์ง„ ์†์„ฑ์ด ๋“œ๋Ÿฌ๋‚˜ ์—ฐ๊ด€ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋œ๋‹ค.

 

 

๋งˆ๋ฌด๋ฆฌ

๋…ผ๋ฆฌ์  ๋ชจ๋ธ๋ง์—์„œ ๊ด€๊ณ„ ์„ค๊ณ„๋Š” ์ฐธ์—ฌ๋„, ์™ธ๋ž˜ ํ‚ค ์œ„์น˜, ์นด๋””๋„๋ฆฌํ‹ฐ๋ฅผ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ๋‹ฌ๋ ค ์žˆ๋‹ค.

1:1์€ ๋ณด์กฐ ํ…Œ์ด๋ธ”์— FK + UNIQUE, M:N์€ ์—ฐ๊ฒฐ ํ…Œ์ด๋ธ”๋กœ ํ’€์–ด๋‚ธ๋‹ค.

์ด ํŒจํ„ด์„ ๋”ฐ๋ฅด๋ฉด DB ์ œ์•ฝ๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์ด ๋ชจ๋‘ ์กฐํ™”๋กญ๊ฒŒ ๊ตฌํ˜„๋œ๋‹ค.

 
 

 

 

 

๋!

๋ฐ˜์‘ํ˜•