๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
4. Backend & DB ๐Ÿ—„๏ธ/SQLD

[SQLD] ์ •๊ทœํ˜•์ด๋ž€?

by lxvxxu 2026. 5. 31.

์ •๊ทœํ˜•(Normal Form, NF)์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ์ค„์ด๊ณ ,

์ด์ƒ ํ˜„์ƒ(Anomaly)์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์กฐ๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ์ •์˜ํ•œ ์˜ฌ๋ฐ”๋ฅธ ํ…Œ์ด๋ธ”์˜ ํ˜•ํƒœ๋ฅผ ๋งํ•ด์š”! เผผ ใค โ—•_โ—• เผฝใค

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ž˜๋ชป ์„ค๊ณ„ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œํ•  ๋•Œ ๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜(์ด์ƒ ํ˜„์ƒ)๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ฑฐ๋“ ์š”.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ด๋ธ”์„ ๋ฌด์กฐ๊ฑด ์ชผ๊ฐœ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ,

์ •ํ•ด์ง„ ๊ทœ์น™์— ๋”ฐ๋ผ ๊ตฌ์กฐ๋ฅผ ๋‹ค๋“ฌ์–ด๊ฐ€๋Š” ๊ณผ์ •์„ ์ •๊ทœํ™”(Normalization)๋ผ๊ณ  ํ•˜๊ณ ,

๊ทธ ๊ทœ์น™์„ ๋งŒ์กฑํ•œ ๊ฐ๊ฐ์˜ ๋‹จ๊ณ„๋ฅผ ์ •๊ทœํ˜•์ด๋ผ๊ณ  ๋ถˆ๋Ÿฌ์š”. 

 

SQLD ์‹œํ—˜์—์„œ๋Š” ๋ณดํ†ต 1์ •๊ทœํ˜•๋ถ€ํ„ฐ 3์ •๊ทœํ˜•, ๊ทธ๋ฆฌ๊ณ  BCNF๊นŒ์ง€๊ฐ€ ์ž์ฃผ ์ถœ์ œ๋˜๋Š”๋ฐ,

ํ•ต์‹ฌ ๊ฐœ๋…์„ ์•„์ฃผ ์‰ฝ๊ฒŒ ์š”์•ฝํ•ด ๋“œ๋ฆด๊ฒŒ์š”!


1. ์ œ1์ •๊ทœํ˜• (1NF)

  • ์กฐ๊ฑด: ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋„๋ฉ”์ธ์ด ์›์ž๊ฐ’(Atomic Value)๋งŒ์œผ๋กœ ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์‰ฝ๊ฒŒ ๋งํ•ด: ํ•˜๋‚˜์˜ ์นธ(์…€)์—๋Š” ๋ฌด์กฐ๊ฑด ๋ฐ์ดํ„ฐ๊ฐ€ ๋”ฑ ํ•˜๋‚˜๋งŒ ๋“ค์–ด๊ฐ€์•ผ ํ•ด์š”. ํ•œ ์นธ์— ์ถ•๊ตฌ, ๋†๊ตฌ์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

2. ์ œ2์ •๊ทœํ˜• (2NF)

  • ์กฐ๊ฑด: ์ œ1์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•˜๊ณ , ์ฃผ์‹๋ณ„์ž๊ฐ€ ๋ณตํ•ฉํ‚ค(2๊ฐœ ์ด์ƒ)์ผ ๋•Œ ๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์‰ฝ๊ฒŒ ๋งํ•ด: ๊ธฐ๋ณธํ‚ค๊ฐ€ [ํ•™๋ฒˆ + ๊ณผ๋ชฉ์ฝ”๋“œ]์ฒ˜๋Ÿผ ์กฐํ•ฉ๋˜์–ด ์žˆ์„ ๋•Œ, ์„ฑ์ ์€ ํ•™๋ฒˆ๊ณผ ๊ณผ๋ชฉ ๋ชจ๋‘๊ฐ€ ์žˆ์–ด์•ผ ๊ฒฐ์ •๋˜์ง€๋งŒ, '๊ฐ•์˜์‹ค'์€ ๊ณผ๋ชฉ์ฝ”๋“œ์—๋งŒ ์ข…์†๋  ์ˆ˜ ์žˆ์ž–์•„์š”? ์ด๋ ‡๊ฒŒ ๊ธฐ๋ณธํ‚ค์˜ ์ผ๋ถ€๋ถ„์—๋งŒ ์ข…์†๋˜๋Š” ์ปฌ๋Ÿผ์„ ๋ณ„๋„ ํ…Œ์ด๋ธ”๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋‹จ๊ณ„์˜ˆ์š”.

3. ์ œ3์ •๊ทœํ˜• (3NF)

  • ์กฐ๊ฑด: ์ œ2์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•˜๊ณ , ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์‰ฝ๊ฒŒ ๋งํ•ด: $A \rightarrow B$์ด๊ณ  $B \rightarrow C$์ผ ๋•Œ, $A \rightarrow C$๊ฐ€ ์„ฑ๋ฆฝํ•˜๋Š” ๊ด€๊ณ„๋ฅผ ๋Š์–ด๋‚ด๋Š” ๊ฑฐ์˜ˆ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด ํ•™๋ฒˆ์„ ์•Œ๋ฉด ํ•™๊ณผ๋ฅผ ์•Œ๊ณ , ํ•™๊ณผ๋ฅผ ์•Œ๋ฉด ํ•™๊ณผ์‚ฌ๋ฌด์‹ค ์œ„์น˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ํ•™๊ณผ์‚ฌ๋ฌด์‹ค ์œ„์น˜๋Š” ํ•™๊ณผ ํ…Œ์ด๋ธ”๋กœ ๋”ฐ๋กœ ๋นผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

4. BCNF (Boyce-Codd ์ •๊ทœํ˜•)

  • ์กฐ๊ฑด: ์ œ3์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•˜๊ณ , ๋ชจ๋“  ๊ฒฐ์ •์ž๊ฐ€ ํ›„๋ณดํ‚ค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์‰ฝ๊ฒŒ ๋งํ•ด: ์‹๋ณ„์ž๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ์ปฌ๋Ÿผ์ด ๋‹ค๋ฅธ ์ปฌ๋Ÿผ์„ ๊ฒฐ์ •ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ํ…Œ์ด๋ธ”์„ ๋ถ„๋ฆฌํ•ด์•ผ ํ•ด์š”.

๐Ÿ’ก ์‹œํ—˜์šฉ ๊ฟ€ํŒ!

์ •๊ทœํ™”๋ฅผ ์ง„ํ–‰ํ• ์ˆ˜๋ก ํ…Œ์ด๋ธ”์ด ์ž˜๊ฒŒ ์ชผ๊ฐœ์ง€๊ธฐ ๋•Œ๋ฌธ์—
๋ฐ์ดํ„ฐ ์กฐ์ธ(Join)์ด ๋งŽ์•„์ ธ์„œ ์กฐํšŒ ์„ฑ๋Šฅ์€ ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ,
์ž…๋ ฅ/์ˆ˜์ •/์‚ญ์ œ ์‹œ์˜ ์ด์ƒ ํ˜„์ƒ์€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

์ด ํŠน์ง•์„ ๋น„๊ตํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋‹จ๊ณจ๋กœ ๋‚˜์˜ค๋‹ˆ ๊ผญ ๊ธฐ์–ตํ•ด ๋‘์„ธ์š”! ๐Ÿ˜‰


์ œ2์ •๊ทœํ˜•(2NF)๊ณผ ์ œ3์ •๊ทœํ˜•(3NF)์€ ๋‘˜ ๋‹ค ํ…Œ์ด๋ธ”์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ณผ์ •์ด์ง€๋งŒ, "๋ฌด์—‡ ๋•Œ๋ฌธ์— ํ…Œ์ด๋ธ”์„ ์ชผ๊ฐœ๋А๋ƒ"ํ•˜๋Š” ์›์ธ(์ข…์†์„ฑ ์ข…๋ฅ˜)์—์„œ ๊ฒฐ์ •์ ์ธ ์ฐจ์ด๊ฐ€ ์žˆ์–ด์š”! เผผ ใค โ—•_โ—• เผฝใค

๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ์ฐจ์ด๋Š” ๊ธฐ๋ณธํ‚ค(์‹๋ณ„์ž)๊ฐ€ ๋ณตํ•ฉํ‚ค(2๊ฐœ ์ด์ƒ)๋ƒ, ์•„๋‹ˆ๋ฉด ์ผ๋ฐ˜ ์ปฌ๋Ÿผ๋ผ๋ฆฌ ์ข…์† ๊ด€๊ณ„๊ฐ€ ์žˆ๋А๋ƒ์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ใ…Žใ…Žํ˜•

๐Ÿ’ก 2์ •๊ทœํ˜• vs 3์ •๊ทœํ˜• ํ•ต์‹ฌ ์ฐจ์ด

๊ตฌ๋ถ„ ์ œ2์ •๊ทœํ˜• (2NF) ์ œ3์ •๊ทœํ˜• (3NF)
์ œ๊ฑฐ ๋Œ€์ƒ ๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์† ์ œ๊ฑฐ ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์† ์ œ๊ฑฐ
์‰ฝ๊ฒŒ ๋งํ•ด ๊ธฐ๋ณธํ‚ค๊ฐ€ **์—ฌ๋Ÿฌ ๊ฐœ(๋ณตํ•ฉํ‚ค)**์ผ ๋•Œ, ๊ธฐ๋ณธํ‚ค ์ค‘ ์ผ๋ถ€์—๋งŒ ์ข…์†๋˜๋Š” ์ปฌ๋Ÿผ์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ ๊ธฐ๋ณธํ‚ค๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ์ปฌ๋Ÿผ๋“ค๋ผ๋ฆฌ ์›์ธ๊ณผ ๊ฒฐ๊ณผ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ์ปฌ๋Ÿผ์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ
ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ #๋ณตํ•ฉ๊ธฐ๋ณธํ‚ค #์ผ๋ถ€์ปฌ๋Ÿผ์ข…์† #์ฃผ์‹๋ณ„์ž_์™ธ_์ปฌ๋Ÿผ #๊ผฌ๋ฆฌ๋ฌผ๊ธฐ_์ข…์†

1. ์ œ2์ •๊ทœํ˜• (2NF) ์˜ˆ์‹œ๋กœ ์ดํ•ดํ•˜๊ธฐ

2์ •๊ทœํ˜•์€ ๊ธฐ๋ณธํ‚ค๊ฐ€ [ํ•™๋ฒˆ + ๊ณผ๋ชฉ์ฝ”๋“œ]์ฒ˜๋Ÿผ ๋‘ ๊ฐœ ์ด์ƒ์œผ๋กœ ๋ฌถ์—ฌ ์žˆ์„ ๋•Œ ๋ฐœ์ƒํ•ด์š”.

  • ๊ธฐ์กด ํ…Œ์ด๋ธ”: [ํ•™๋ฒˆ, ๊ณผ๋ชฉ์ฝ”๋“œ, ์„ฑ์ , ๊ฐ•์˜์‹ค]
  • ๋ฌธ์ œ์ : ์„ฑ์ ์€ ํ•™๋ฒˆ๊ณผ ๊ณผ๋ชฉ์ฝ”๋“œ๊ฐ€ ๋‘˜ ๋‹ค ์žˆ์–ด์•ผ ๊ฒฐ์ •๋˜์ง€๋งŒ, ๊ฐ•์˜์‹ค์€ ๊ณผ๋ชฉ์ฝ”๋“œ๋งŒ ์•Œ๋ฉด ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ์ฃ ? ๊ธฐ๋ณธํ‚ค์˜ ์ผ๋ถ€๋ถ„(๊ณผ๋ชฉ์ฝ”๋“œ)์—๋งŒ ์ข…์†๋˜์–ด ์žˆ๋Š” ์ƒํƒœ(๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์†)์ž…๋‹ˆ๋‹ค.
  • ํ•ด๊ฒฐ (2์ •๊ทœํ™”): ๊ฐ•์˜์‹ค ์ •๋ณด๋ฅผ ๋ณ„๋„ ํ…Œ์ด๋ธ”๋กœ ์ชผ๊ฐญ๋‹ˆ๋‹ค.
    • ํ…Œ์ด๋ธ” 1: [ํ•™๋ฒˆ, ๊ณผ๋ชฉ์ฝ”๋“œ, ์„ฑ์ ]
    • ํ…Œ์ด๋ธ” 2: [๊ณผ๋ชฉ์ฝ”๋“œ, ๊ฐ•์˜์‹ค]

2. ์ œ3์ •๊ทœํ˜• (3NF) ์˜ˆ์‹œ๋กœ ์ดํ•ดํ•˜๊ธฐ

3์ •๊ทœํ˜•์€ ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋‹จ ํ•œ ๊ฐœ์ผ ๋•Œ๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ผ๋ฐ˜ ์ปฌ๋Ÿผ๋“ค๋ผ๋ฆฌ ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ๊ณ  ์ข…์†๋˜๋Š” ํ˜„์ƒ($A \rightarrow B \rightarrow C$)์„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ์กด ํ…Œ์ด๋ธ”: [ํ•™๋ฒˆ, ํ•™๊ณผ, ํ•™๊ณผ์‚ฌ๋ฌด์‹ค ์œ„์น˜]
  • ๋ฌธ์ œ์ : ๊ธฐ๋ณธํ‚ค๋Š” ํ•™๋ฒˆ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํ•™๋ฒˆ์„ ์•Œ๋ฉด ํ•™๊ณผ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ณ , ํ•™๊ณผ๋ฅผ ์•Œ๋ฉด ํ•™๊ณผ์‚ฌ๋ฌด์‹ค ์œ„์น˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ์ฃ ? ์ฆ‰, ์ผ๋ฐ˜ ์ปฌ๋Ÿผ์ธ ํ•™๊ณผ๊ฐ€ ํ•™๊ณผ์‚ฌ๋ฌด์‹ค ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ(์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†)์ž…๋‹ˆ๋‹ค.
  • ํ•ด๊ฒฐ (3์ •๊ทœํ™”): ๊ผฌ๋ฆฌ๋ฌผ๊ธฐ๋ฅผ ๋Š๊ธฐ ์œ„ํ•ด ํ•™๊ณผ ์ •๋ณด ํ…Œ์ด๋ธ”์„ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • ํ…Œ์ด๋ธ” 1: [ํ•™๋ฒˆ, ํ•™๊ณผ]
    • ํ…Œ์ด๋ธ” 2: [ํ•™๊ณผ, ํ•™๊ณผ์‚ฌ๋ฌด์‹ค ์œ„์น˜]

๐Ÿ’ก SQLD ์‹œํ—˜ ๋ฌธ์ œ ํ‘ธ๋Š” ํŒ!

์‹œํ—˜ ๋ฌธ์ œ ์ง€๋ฌธ์—์„œ **"๋ณตํ•ฉํ‚ค", "๊ธฐ๋ณธํ‚ค์˜ ์ผ๋ถ€์— ์ข…์†"**์ด๋ผ๋Š” ํ‘œํ˜„์ด ๋‚˜์˜ค๋ฉด 2์ •๊ทœํ˜•์„ ๋– ์˜ฌ๋ฆฌ์‹œ๊ณ , **"์ฃผ์‹๋ณ„์ž๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ์†์„ฑ ๊ฐ„์˜ ์ข…์†", "์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†"**์ด๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ๋ณด์ด๋ฉด ๋ฌด์กฐ๊ฑด 3์ •๊ทœํ˜•์„ ๊ณ ๋ฅด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค! ๐Ÿ˜‰