๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, SQL

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค / ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง

์ •๊ทœํ™”

Normalization, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ๊ณผ์ •

๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ , ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์ค€์ˆ˜ํ•˜๋ฉฐ ์ด์ƒ ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.

 

์ •๊ทœํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค.

  ๊ฐœ๋… ๊ฒฐ๊ณผ
1NF (์ œ1์ •๊ทœํ˜•) ์ปฌ๋Ÿผ์˜ ๊ฐ’์€ ์›์ž๊ฐ’(Atomic Value)๋งŒ ๊ฐ€์ ธ์•ผ ํ•จ ๋ชจ๋“  ์ปฌ๋Ÿผ์ด *์›์ž๊ฐ’์„ ๊ฐ€์ง
=> ์ค‘๋ณต๋œ ์ปฌ๋Ÿผ ์ œ๊ฑฐ
=> ๋‹ค์ค‘๊ฐ’ ์ œ๊ฑฐ
2NF(์ œ2์ •๊ทœํ˜•) ๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์† ์ œ๊ฑฐ ๊ธฐ๋ณธํ‚ค์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ์ „์ฒด์— ์ข…์†๋œ ๋น„๊ธฐ๋ณธ ์†์„ฑ๋งŒ ์กด์žฌ
=> ๋ณตํ•ฉํ‚ค์ผ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ข…์†์„ฑ ์ œ๊ฑฐ
3NF(์ œ3์ •๊ทœํ˜•) ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์† ์ œ๊ฑฐ ๋น„๊ธฐ๋ณธ ์†์„ฑ์ด ๋‹ค๋ฅธ ๋น„๊ธฐ๋ณธ ์†์„ฑ์— ์˜์กดํ•˜์ง€ ์•Š์Œ
=> ์†์„ฑ ๊ฐ„ ์ข…์†์„ฑ ์ œ๊ฑฐ, ๊ฐฑ์‹  ์ด์ƒ ๋ฐฉ์ง€
BCNF(๋ณด์ด์Šค-์ฝ”๋“œ ์ •๊ทœํ˜•) ๊ฒฐ์ •์ž(Determinant)๊ฐ€ ํ›„๋ณดํ‚ค ๋ชจ๋“  ๊ฒฐ์ •์ž๊ฐ€ ํ›„๋ณดํ‚ค
=>ํ›„๋ณดํ‚ค๊ฐ€ ์•„๋‹Œ ์†์„ฑ์— ์˜ํ•ด ๊ฒฐ์ •๋˜๋Š” ๋ฌธ์ œ ์ œ๊ฑฐ
4NF(์ œ4์ •๊ทœํ˜•) ๋‹ค์น˜ ์ข…์† ์ œ๊ฑฐ ํ•˜๋‚˜์˜ ํ‚ค์— ์—ฌ๋Ÿฌ ๋…๋ฆฝ์ ์ธ ๋‹ค์น˜ ์ข…์†์ด ์กด์žฌํ•˜์ง€ ์•Š์Œ
=> ๋ฐ˜๋ณต๋˜๋Š” ๊ทธ๋ฃน์ œ๊ฑฐ
5NF(์ œ5์ •๊ทœํ˜•) ์กฐ์ธ ์ข…์†์„ฑ ์ œ๊ฑฐ ์กฐ์ธ์— ์˜ํ•œ ์ •๋ณด ์†์‹ค ์—†์ด ํ…Œ์ด๋ธ” ๋ถ„ํ•ด ๊ฐ€๋Šฅ
=> ๊ณผ๋„ํ•œ ํ…Œ์ด๋ธ” ๋ถ„ํ•ด ์—†์ด ์žฌ๊ตฌ์„ฑ ๊ฐ€๋Šฅ

 

- ์›์ž๊ฐ’ : ํ•˜๋‚˜์˜ ์†์„ฑ์— ์ €์žฅ๋œ ๊ฐ’์ด ๋” ์ด์ƒ ๋‚˜๋ˆŒ ์ˆ˜ ์—†๋Š” ๋‹จ์ผํ•œ ๊ฐ’์ž„์„ ์˜๋ฏธ

- ๋ถ€๋ถ„ ์ข…์†: ๋ณตํ•ฉํ‚ค ์ผ๋ถ€์—๋งŒ ์ข…์†๋œ ๊ฒฝ์šฐ
- ์ดํ–‰ ์ข…์†: A → B, B → C ๊ฐ€ ์„ฑ๋ฆฝํ•˜๋ฉด A → C์ธ ์ƒํ™ฉ
- ๋‹ค์น˜ ์ข…์†: ํ•˜๋‚˜์˜ ํ‚ค๊ฐ€ ๋‘˜ ์ด์ƒ์˜ ๋…๋ฆฝ๋œ ์†์„ฑ ์ง‘ํ•ฉ์— ์ข…์†๋˜๋Š” ๊ฒฝ์šฐ
- ์กฐ์ธ ์ข…์†: ์›๋ž˜ ํ…Œ์ด๋ธ”์„ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋‚˜๋ˆˆ ๋’ค, ๋‹ค์‹œ ์กฐ์ธํ–ˆ์„ ๋•Œ ์›๋ž˜ ์ •๋ณด๊ฐ€ ๋ณด์กด๋˜๋Š” ๊ฒฝ์šฐ

 

 


 

 

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

  • ํ…Œ์ด๋ธ” ํ•œ ์นธ์—๋Š” ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ
  • ์ค‘๋ณต ๋กœ์šฐ, ์ปฌ๋ŸผX
  • Primary Key (ํ…Œ์ด๋ธ”๊ณผ ์ปฌ๋Ÿผ์„ ๋Œ€ํ‘œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’) ํ•„์ˆ˜ => ๊ณ ์œ ์„ฑ์„ ๊ฐ€์ง
  • ํ•œ ์ปฌ๋Ÿผ์—๋Š” ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์‚ฌ์šฉ (๋‚ ์งœ ํƒ€์ž…์ด March 5th, 2024 / 2024-05-21 ์ด๋Ÿฐ์‹์œผ๋กœ ๋‹ฌ๋ผ์ ธ์„œ๋Š” ์•ˆ๋˜๋ฉฐ ํ†ต์ผํ•ด์•ผ ํ•จ)

 

๋น„์›์ž๊ฐ’์„ ์›์ž๊ฐ’์œผ๋กœ!

 

* ๋ณตํ•ฉํ‚ค

 

 

์œ„์™€ ๊ฐ™์ด ๊ฐ™์€ ์ฑ…์„ ๋Œ€์—ฌ๋ฅผ ๋‘ ๋ฒˆ ํ–ˆ์„ ๊ฒฝ์šฐ์—๋Š” ๋Œ€์—ฌ์ผ๊นŒ์ง€ ํ•ฉ์ณ์„œ ๋Œ€์—ฌ๊ธฐ๋ก์„ ํŠน์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ์ปฌ๋Ÿผ์„ ๋ฌถ์–ด(์ด๋ฆ„ + ๋Œ€์—ฌํ•œ ์ฑ… + ๋Œ€์—ฌ์ผ) ๋กœ์šฐ๋ฅผ ํŠน์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค๋ฅผ  ๋ณตํ•ฉํ‚ค ๋ผ๊ณ  ํ•œ๋‹ค. 

ํ•˜์ง€๋งŒ ๊ฐ ๋Œ€์—ฌ๊ธฐ๋ก์— ๊ณ ์œ ํ•œ ๊ฐ’์„ ๋ถ™์ธ๋‹ค๋ฉด ๋”์šฑ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋•Œ  ID ๋ฅผ ๊ธฐ๋ณธํ‚ค(Primark Key, PK)๋ผ๊ณ  ํ•œ๋‹ค.

 

 


 

์™ธ๋ž˜ํ‚ค(FK)

Foreign Key, ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ PK๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํ‚ค 

 

์œ„์˜ ์˜ˆ์‹œ๋Š” ๋‚˜์„œ๋ฒ„์”จ๊ฐ€ ๋‚˜๊ฐœ๋ฐœ๋กœ ๊ฐœ๋ช…ํ•˜์‹œ๋Š” ๋ฐ”๋žŒ์— ๊ฐฑ์‹  ์ด์ƒ์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด๋‹ค...

 

 

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ํšŒ์› ํ…Œ์ด๋ธ”๊ณผ ์ฑ… ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•ด์ฃผ๋ฉด ๋˜๋Š”๋ฐ, ๊ฐ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์™ธ๋ž˜ํ‚ค๋กœ ์‚ฌ์šฉํ•ด ์ฐธ์กฐํ•˜๊ฒŒ ํ•˜๋ฉด ์ด๋ฆ„์„ ๋ฐฑ๋ฒˆ ๋ฐ”๊พธ๋”๋ผ๋„ ๊ณ ์œ ํ•œ ๊ฐ’์ธ id๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ฐฑ์‹  ์ด์ƒ์— ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค

์œ„์˜ ์˜ˆ์‹œ๋ฅผ ERD๋กœ ๋‚˜ํƒ€๋‚ธ ๋ชจ์Šต

 

 


 

 

ํ…Œ์ด๋ธ” ๊ด€๊ณ„ 

1. 1:1 ๊ด€๊ณ„ (One-to-One)

ํ•˜๋‚˜์˜ ๋กœ์šฐ์— ๋Œ€์‘ํ•˜๋Š” ๋กœ์šฐ๊ฐ€ ํ•˜๋‚˜

์œ ์ € - ํ”„๋กœํ•„

 

 

 

2. 1:N ๊ด€๊ณ„ (One-to-Many)

ํ•˜๋‚˜์˜ ๋กœ์šฐ์— ๋Œ€์‘ํ•˜๋Š” ๋กœ์šฐ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ

์ฑ… - ๋Œ€์—ฌ

 

 

3. M:N ๊ด€๊ณ„ (Many-to-Many)

ํ…Œ์ด๋ธ” A ๋กœ์šฐ ํ•˜๋‚˜์— ๋Œ€์‘ํ•˜๋Š” ํ…Œ์ด๋ธ” B ๋กœ์šฐ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ,

ํ…Œ์ด๋ธ” B ๋กœ์šฐ ํ•˜๋‚˜์— ๋Œ€์‘ํ•˜๋Š” ํ…Œ์ด๋ธ” A ๋กœ์šฐ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ

 

์œ„์˜ ๊ฒฝ์šฐ์—๋Š” ๊ฐ๊ฐ์˜ ๊ฐ•์˜์— ๊ฐ๊ฐ์˜ ํ•™์ƒ๋“ค์ด ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜๊ณ  ์žˆ์„ ๋•Œ์˜ ํ•™์ƒ, ๊ฐ•์˜ ํ…Œ์ด๋ธ”์ด๋‹ค.

 

์ง€๊ธˆ ์ƒํƒœ๋Š” ๊ณ„์†ํ•ด์„œ student_id์™€ course_id, course_name ๋“ฑ ์—ฌ๋Ÿฌ ์ •๋ณด๊ฐ€ ๊ณ„์† ๋ฐ˜๋ณต์ €์žฅ๋ผ ์ค‘๋ณต ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋‹ค.

์ˆ˜๊ฐ• ์‹ ์ฒญ์ด๋ผ๋Š” ์‚ฌ๊ฑด ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์—ฐ๊ฒฐ ํ…Œ์ด๋ธ”์„ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด m:n ๊ด€๊ณ„๋ฅผ ๋ถ„๋ฆฌํ•  ํ•„์š”๊ฐ€ ์ƒ๊ธด๋‹ค.

 

 

์ด ๊ฒฝ์šฐ์—๋Š” '์ˆ˜๊ฐ•'์ด๋ผ๋Š” ์—ฐ๊ฒฐ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ํ•ด๊ฒฐํ•˜๊ณ , '์ˆ˜๊ฐ•'์ด๋ผ๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋” ์ž˜ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 


 

 

 

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

  • 1์ •๊ทœํ˜•์„ ๋งŒ์กฑ
  • ๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์† ์ œ๊ฑฐ
  • ๊ณ ์œ ์„ฑ, ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” PK ์ง€์ •
  • ํ…Œ์ด๋ธ”์— ์—ฌ๋Ÿฌ ์—”ํ„ฐํ‹ฐ๊ฐ€ ์žˆ์œผ๋ฉด ๋ถ„๋ฆฌ

 

PK๋Š” ๋ชจ๋“  ์†์„ฑ์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ฅผ ํ•จ์ˆ˜์  ์ข…์†์„ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์ด๋•Œ ๋Œ€์—ฌ ํ…Œ์ด๋ธ”์—์„œ ์ฑ… ์ œ๋ชฉ๊ณผ ์ €์ž ์ด๋ฆ„์€ ์ฑ…ID์—๋งŒ ์ข…์† ๋˜์–ด ์žˆ์–ด ์ด๋ฅผ ๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์†์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์†์„ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์ฑ… ํ…Œ์ด๋ธ”์„ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , ๋‚˜๋จธ์ง€ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ณตํ•ฉํ‚ค๋ฅผ ์—†์•  ๋Œ€์—ฌ ํ…Œ์ด๋ธ”์— ๊ณ ์œ ์„ฑ๊ณผ ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” PK๋ฅผ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

ํ•ด๊ฒฐ!

 

 

 


 

 

 

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

  • 2์ •๊ทœํ˜• ๋งŒ์กฑ
  • ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์† ์ œ๊ฑฐ
  • ํ…Œ์ด๋ธ”์— ์—ฌ๋Ÿฌ ์—”ํ„ฐํ‹ฐ๊ฐ€ ์žˆ์œผ๋ฉด ๋ถ„๋ฆฌ

 

์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†์ด๋ž€ X→Y, Y→Z ์ด๋ž€ ์ข…์† ๊ด€๊ณ„๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ, X→Z๊ฐ€ ์„ฑ๋ฆฝ๋  ๋•Œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

์œ„ ํ…Œ์ด๋ธ”์—์„œ ๋Œ€์—ฌ ID๋Š” ํšŒ์› ID๋ฅผ ํŠน์ •ํ•  ์ˆ˜ ์žˆ๊ณ , ํšŒ์› ID๋Š” ํšŒ์› ์ด๋ฆ„๊ณผ ํšŒ์› ์ฃผ์†Œ๋ฅผ ํŠน์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋Œ€์—ฌID → ํšŒ์›ID → ํšŒ์› ์ด๋ฆ„, ํšŒ์› ์ฃผ์†Œ

=> ๋Œ€์—ฌID → ํšŒ์› ์ด๋ฆ„, ๋Œ€์—ฌID → ํšŒ์› ์ฃผ์†Œ๊ฐ€ ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†์ด๋‹ค!

 

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ํšŒ์› ํ…Œ์ด๋ธ”์„ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.