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