3NF

์ œ3์ •๊ทœํ˜•(3rd normal form)

์ œ2์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•˜๋Š” ํ…Œ์ด๋ธ”์—์„œ primary key ๋˜๋Š” composite primary key ์ปฌ๋Ÿผ์— ์ข…์†๋œ๊ฒŒ ์•„๋‹Œ

ํ•˜์ฐฎ์€ ์ž”์ฑ™์ด ์ปฌ๋Ÿผ์— ์ข…์†๋œ ์ปฌ๋Ÿผ์„ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๋กœ ๋นผ๋ฉด

๊ทธ๊ฒŒ ์ œ3์ •๊ทœํ˜• ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ

๊ฐ€๊ฒฉ

๊ฐ•์‚ฌ

์ถœ์‹ ๋Œ€ํ•™

์Šค์ฟผ์‹œ

5000

๊น€์„์šฉ

์„œ์šธ๋Œ€

ํ—ฌ์Šค

6000

๋ฐ•๋•ํŒ”

์—ฐ์„ธ๋Œ€

๊ณจํ”„

8000

์ด์ƒ๊ตฌ

๊ณ ๋ ค๋Œ€

๊ณจํ”„ ์ค‘๊ธ‰

9000

์ด์ƒ๊ตฌ

๊ณ ๋ ค๋Œ€

๊ฐœ์ธํ”ผํ‹ฐ

6000

๋ฐ•๋•ํŒ”

์—ฐ์„ธ๋Œ€

์ œ 2์ •๊ทœํ™” ํ•ด๋†“์€ ํ…Œ์ด๋ธ”์„ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

์ œ 2์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— partial dependency๋Š” ์—†์–ด ๋ณด์ด๋Š”๊ตฐ์š”.

ํ•˜์ง€๋งŒ '์ถœ์‹ ๋Œ€ํ•™'์ด๋ผ๋Š” ์ปฌ๋Ÿผ์— ์ฃผ๋ชฉํ•ด๋ด…์‹œ๋‹ค.

'ํ”„๋กœ๊ทธ๋žจ'์ด๋ผ๋Š” primary key์™€๋Š” ์ „ํ˜€ ์ƒ๊ด€์ด ์—†๊ณ  ๊ทธ๋ƒฅ '๊ฐ•์‚ฌ' ์ปฌ๋Ÿผ์—๋งŒ ์ƒ๊ด€์ด ์žˆ์Šต๋‹ˆ๋‹ค.

('๊ฐ•์‚ฌ' ์ปฌ๋Ÿผ์— ์ข…์†๋˜์–ด์žˆ๋‹ค๊ณ  ํ‘œํ˜„ํ•จ)

์ด ๊ฒฝ์šฐ '์ถœ์‹ ๋Œ€ํ•™' ์ปฌ๋Ÿผ์„ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๋กœ ๋นผ๋ฉด

์ œ 3์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•˜๋Š” ํ…Œ์ด๋ธ” ์™„์„ฑ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ

๊ฐ€๊ฒฉ

๊ฐ•์‚ฌ

์Šค์ฟผ์‹œ

5000

๊น€์„์šฉ

ํ—ฌ์Šค

6000

๋ฐ•๋•ํŒ”

๊ณจํ”„

8000

์ด์ƒ๊ตฌ

๊ณจํ”„ ์ค‘๊ธ‰

9000

์ด์ƒ๊ตฌ

๊ฐœ์ธํ”ผํ‹ฐ

6000

๋ฐ•๋•ํŒ”

๊ฐ•์‚ฌ

์ถœ์‹ ๋Œ€ํ•™

๊น€์„์šฉ

์„œ์šธ๋Œ€

๋ฐ•๋•ํŒ”

์—ฐ์„ธ๋Œ€

์ด์ƒ๊ตฌ

๊ณ ๋ ค๋Œ€

๊ฐ•์‚ฌ์ •๋ณด table์„ ๋งŒ๋“ค์–ด์„œ ๊ฑฐ๊ธฐ์— ์ถœ์‹ ๋Œ€ํ•™ ์ปฌ๋Ÿผ์„ ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌ๋ฉด ์ด์ œ ๋ฐ•๋•ํŒ” ๊ฐ•์‚ฌ์˜ ํ•™๋ฒŒ์„ธํƒ์œผ๋กœ ์ธํ•ด ์ถœ์‹ ๋Œ€ํ•™์ด ๋‹ฌ๋ผ์ ธ๋„ ํ•œ ๊ณณ๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ฒฐ๊ตญ ์ œ 3์ •๊ทœํ™”๊นŒ์ง€ ํ•ด๋†“์œผ๋ฉด ์ˆ˜์ •์ž‘์—…์ด ๊ฐ„ํŽธํ•ด์ง‘๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ œ 3์ •๊ทœํ™”๊นŒ์ง€ ํ•˜๊ฒŒ ๋˜๋ฉด ๊ฐ•์‚ฌ์˜ ์ถœ์‹ ๋Œ€ํ•™์„ ์ถœ๋ ฅํ•˜๋ ค๋ฉด ๋ถˆํŽธํ•จ์ด ์ƒ๊น๋‹ˆ๋‹ค.

๊ทธ๋ ‡์ง€๋งŒ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํƒ€๋ฒ ์ด์Šค์—์„œ๋Š” ์ œ3์ •๊ทœํ™”๊นŒ์ง€๋Š” ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

์ œ3์ •๊ทœํ˜• - ๊ต๊ณผ์„œ ๋ฒ„์ „

์ œ2์ •๊ทœํ˜• ํ…Œ์ด๋ธ”์—์„œ transitive dependency๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ๊ทธ๊ฒŒ ์ œ 3์ •๊ทœํ˜•

์–ด๋ ค์šด ๋ง๋กœ ์ดํ–‰ ํ•จ์ˆ˜์  ์ข…์† ์ œ๊ฑฐ

1. composite primary key ๋˜๋Š” primary key ์—ญํ• ์„ ํ•˜๋Š” ์ปฌ๋Ÿผ์ด ์žˆ๊ณ 

2. ๊ฑฐ๊ธฐ์— ์ง์ ‘ ์ข…์†๋œ ์ปฌ๋ŸผA๊ฐ€ ์žˆ๊ณ 

3. ๋˜ ๊ฑฐ๊ธฐ์— ์ง์ ‘ ์ข…์†๋œ ํ•˜์ฐฎ์€ ์ปฌ๋ŸผB๊ฐ€ ์žˆ์œผ๋ฉด

์ปฌ๋ŸผB๊ฐ€ primary key ์ปฌ๋Ÿผ์— transitive dependency ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ทธ ์ปฌ๋ŸผB๋ฅผ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๋กœ ์˜ฎ๊ธฐ๋ผ๋Š” ์†Œ๋ฆฌ์ž…๋‹ˆ๋‹ค.

์˜ฎ๊ธฐ๋ฉด ์ œ3์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•˜๋Š” ํ…Œ์ด๋ธ”์ด ์™„์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ œ4, 5, 6 ์ •๊ทœํ˜•๋„ ์žˆ๋Š”๋ฐ ๋Œ€๋ถ€๋ถ„์€ 3๊นŒ์ง€๋งŒ ํ•˜๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ์ค‘๋ณต๋ฌธ์ œ๋Š” ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

์‹ฌ์‹ฌํ•˜๋ฉด ์ฐพ์•„๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.

PrimaryKey , Foreign Key

์ •๊ทœํ™”ํ•˜๋ ค๊ณ  ํ…Œ์ด๋ธ”์„ ์ชผ๊ฐค ๋•Œ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฝ์šฐ ์ฃผ์˜์ ์€

1. ํ…Œ์ด๋ธ”๋งˆ๋‹ค ํ•ญ์ƒ primary key ์—ญํ• ์„ ํ•˜๋Š” ์ปฌ๋Ÿผ์„ ๋„ฃ์–ด๋‘๋Š”๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค. ex) id ์ปฌ๋Ÿผ๋Ÿผ

2. ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ์ปฌ๋Ÿผ๋‚ด์šฉ์„ ๊ฐ€์ ธ๋‹ค์“ธ ๋•Œ๋„ primary key๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์•„๊นŒ์ฒ˜๋Ÿผ ์ œ3์ •๊ทœํ™” ํ•˜๋Š๋ผ ์ด๋ ‡๊ฒŒ ํ…Œ์ด๋ธ”์„ ๋ถ„๋ฆฌํ•ด๋†จ๋‹ค๊ณ  ์นฉ์‹œ๋‹ค.

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

1. ํ…Œ์ด๋ธ”๋งˆ๋‹ค primary key ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋Š” id ์ปฌ๋Ÿผ๊ฐ™์€๊ฑฐ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด๋‘๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

Q. composite primary key๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”๋ฐ์š”?

A. ๊ทธ๊ฑฐ์จ๋„ ๋˜๋Š”๋ฐ id ์ปฌ๋Ÿผ ๋งŒ๋“ค์–ด๋‘๋ฉด ๋‚˜์ค‘์— SELECT๋กœ ์›ํ•˜๋Š” ํ–‰๋งŒ ์ฐพ์„ ๋•Œ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

2.๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ์ปฌ๋Ÿผ๋‚ด์šฉ์„ ๊ฐ€์ ธ๋‹ค์“ธ ๋•Œ๋„ primary key๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ์™ผ์ชฝ ํ…Œ์ด๋ธ”๋ณด๋ฉด '๊ฐ•์‚ฌ' ์ปฌ๋Ÿผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฑฐ๊ธฐ์— ๊ฐ•์‚ฌ ์ด๋ฆ„์ด ๋“ค์–ด๊ฐ€์•ผํ•˜๋Š”๋ฐ ๊ฐ•์‚ฌ ์ •๋ณด๋Š” ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์— ๋“ค์–ด์žˆ๊ตฐ์š”.

๊ทธ๋Ÿด ๊ฒฝ์šฐ ๊ฐ•์‚ฌ ์ด๋ฆ„์„ ๊ทธ๋Œ€๋กœ ์ ๋Š”๊ฒƒ ๋ณด๋‹ค๋Š” ๊ฐ•์‚ฌ์˜ id๋ฅผ ์ ๋Š”๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌ๋ฉด ๋‚˜์ค‘์— ๋™๋ช…์ด์ธ ๊ฐ•์‚ฌ๊ฐ€ ์ƒ๊ฒจ๋„ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ์š”.

์ €๊ธฐ์„œ ๊ฐ•์‚ฌid ์ปฌ๋Ÿผ์„ ์ „๋ฌธ์šฉ์–ด๋กœ foreign key ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋ ค์šด๊ฑด ์•„๋‹ˆ๊ณ  ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ์žˆ๋˜ primary key๋ฅผ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ์‚ฌ์šฉํ•  ๋•Œ๋Š” foreign key๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ์•Œ์•„๋‘ก์‹œ๋‹ค.

Foreign Key ๋“ฑ๋กํ•˜๋Š” ๋ฒ•

์‹ค์ œ ์ปฌ๋Ÿผ์—๋‹ค๊ฐ€ "์ด ์ปฌ๋Ÿผ์€ foreign key ์—ญํ• ์ด๋‹ค"๋ผ๊ณ  ๋“ฑ๋กํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ์žฅ์ ์ด ๋ช‡๊ฐœ ์žˆ์–ด์„œ ๊ทธ๊ฑฐ ํ•˜๋Š” ๋ฒ•์„ ์•Œ์•„๋ด…์‹œ๋‹ค.

์šฐ์„  program ํ…Œ์ด๋ธ”๊ณผ teacher ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋„ ์ž…๋ ฅํ•˜์„ธ์š”.

1. ํ…Œ์ด๋ธ”๋งˆ๋‹ค Foreign Keys ๋ฉ”๋‰ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ program ํ…Œ์ด๋ธ” ๋“ค์–ด๊ฐ€์„œ "์ƒˆ๋กœ์šด foreign key ๋งŒ๋“ค๊ธฐ" ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

2.Reference table ๋ฉ”๋‰ด์—์„  ํ˜„์žฌ ํ…Œ์ด๋ธ”์—์„œ ์–ด๋–ค ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ primary key๋ฅผ ์ฐธ์กฐํ• ๊ฑด์ง€ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Column ๋ฉ”๋‰ด์—์„  foreign key ์ œ์•ฝ ๋‹ฌ์•„์ค„ program ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ ์„ ํƒํ•˜๋ฉด ๋˜๊ณ 

Ref Column ๋ฉ”๋‰ด์—์„  ์ฐธ์กฐ๋‹นํ•  teacher ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์„ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ €์žฅ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด ๋์ž…๋‹ˆ๋‹ค.

3. program ํ…Œ์ด๋ธ” ๊ฐ€๋ณด๋ฉด ๋ญ”๊ฐ€ ๋ณ€ํ•ด์žˆ์Šต๋‹ˆ๋‹ค.

foreign key ์ปฌ๋Ÿผ์— ํ™”์‚ดํ‘œ๊ฐ€ ์ƒ๊ธฐ๋Š”๋ฐ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ณผ ํ–‰์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜์ค‘์— ๊ฐ•์‚ฌid๊ฐ€ 1์ธ ์‚ฌ๋žŒ์ด ๋ˆ„๊ตฐ์ง€ ๊ถ๊ธˆํ•˜๋ฉด ํด๋ฆญ๋งŒ ํ•ด๋ณด๋ฉด ๋˜๋Š” ๊ฒƒ์ž„

๊ทธ๋ž˜์„œ foreign key ์ œ์•ฝ์กฐ๊ฑด์„ ๋“ฑ๋กํ•ด๋‘๋ฉด ์ €๋Ÿฐ๊ฒŒ ํŽธ๋ฆฌํ•ด์ง‘๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์žฅ์ ๋„ ์žˆ๋Š”๋ฐ

teacher ํ…Œ์ด๋ธ”๋กœ ์ด๋™ํ•ด์„œ ๊ฐ•์‚ฌ ํ•œ๋ช…์„ ์‚ญ์ œ & ์ €์žฅํ•ด๋ด…์‹œ๋‹ค.

๊ทธ๋Ÿผ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฉด์„œ ์‚ญ์ œ๋ฅผ ๋ง‰์•„์ค๋‹ˆ๋‹ค.

์™œ๋ƒ๋ฉด "๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ foreign key๋กœ ์‚ฌ์šฉ์ค‘์ธ ๋ฐ์ดํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•จ๋ถ€๋กœ ์‚ญ์ œํ•˜์ง€ ๋ง๋ผ"๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์–ด์„œ foreign key๋กœ ๋“ฑ๋กํ•ด๋†“๋Š” ๊ฒƒ์ž„

ํ•˜์ง€๋งŒ ์‚ญ์ œํ•˜๋‚˜ ํ•  ๋•Œ๋งˆ๋‹ค ๊ท€์ฐฎ์•„์ง€๊ณ  ๋‚˜์ค‘์— ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋ณ€๊ฒฝ๋„ ๊ท€์ฐฎ์•„์ ธ์„œ ๊ทธ๋ƒฅ foreign key ๋“ฑ๋ก ์•ˆํ•˜๋Š” ๊ณณ๋“ค๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ญ์ •๊ทœํ™”

Join์ด ๋„ˆ๋ฌด ๋งŽ์•„์ง€๋Š” DB ์„ค๊ณ„์™€ ์ฟผ๋ฆฌ๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ฃผ์š” Entity๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ DB์˜ ์ „๋ฐ˜์ ์ธ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐํ™” ๊ณผ์ •์„ ๊ฑฐ์น˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค.

์—ญ์ •๊ทœํ™”๋Š” ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๋ฉฐ Entity๋ฅผ ๋‹ค์‹œ ํ†ตํ•ฉํ•˜๊ฑฐ๋‚˜ ๋ถ„ํ• ํ•˜์—ฌ ์ •๊ทœํ™” ๊ณผ์ •์„ ํ†ตํ•ด ๋„์ถœ๋œ DB ๊ตฌ์กฐ๋ฅผ ์žฌ์กฐ์ •ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

โœจ ์‹ค์Šต.

์‡ผํ•‘๋ชฐ์˜ ๊ตฌ๋งค๋‚ด์—ญ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์ด ์•Œ์•„์„œ ํ…Œ์ด๋ธ”์„ ๋‚˜๋ˆ ์„œ ์ œ2, ์ œ3 ์ •๊ทœํ™”๋ฅผ ํ•ด๋ด…์‹œ๋‹ค.

- ์ง์ ‘ ํ…Œ์ด๋ธ” ๋งŒ๋“ค์–ด๋ด…์‹œ๋‹ค

- '์ƒํ’ˆ์นดํ…Œ๊ณ ๋ฆฌ'๋Š” ํ•ญ์ƒ '์ƒํ’ˆ๋ช…'์— ์˜ํ•ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

- '๋ฌด๋ฃŒ๋ฐฐ์†ก์—ฌ๋ถ€'๋Š” ํ•ญ์ƒ '์ƒํ’ˆ์นดํ…Œ๊ณ ๋ฆฌ'์— ๋”ฐ๋ผ์„œ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

- '๊ฐ€๊ฒฉ'์€ ์ƒํ’ˆ 1๊ฐœ์˜ ๊ฐ€๊ฒฉ์ž„

๋ฐ”๋กœ ๋‹ต๋ถ€ํ„ฐ ๋ณด์ง€๋ง๊ณ  ์ƒ๊ฐํ•ด๋ด…์‹œ๋‹ค

================================================================

Last updated