๐ SQL & Database (04) - ์ ๊ทํ, ์ ๊ทํ (1NF, 2NF, 3NF)
ํ์ตํ๊ฒฝ : Windows, MariaDB, DBeaver
์ ์ฒ๊ธฐ ๊ณต๋ถํ ๋ ๋
๋ค ์ธ์ ๋ ๋๋ถ์ด๊ฒฐ๋ค์กฐโฆ.
์์ธํ ์์๋ณด์
์ 1์ ๊ทํ (1NF, 1st normal form)
: ํ๋์ ์ ์์๋ ํ๋์ ๋ฐ์ดํฐ๋ง.
์ 1์ ๊ทํ๋ ๊ฐ ์ปฌ๋ผ์ด ์์๊ฐ์ ๊ฐ๋๋ก ๋ง๋๋ ๊ณผ์ ์ ๋งํ๋ค
[์ฃผ๋ฌธ ํ ์ด๋ธ]
์ฃผ๋ฌธ๋ฒํธ | ๊ณ ๊ฐ๋ช | ์ฃผ๋ฌธ์ํ |
---|---|---|
1 | ํ๊ธธ๋ | ์ปดํจํฐ, ๋ง์ฐ์ค |
2 | ๊น์ฒ ์ | ํค๋ณด๋ |
3 | ์ด์ํฌ | ํค๋ณด๋ |
์ฃผ๋ฌธ์ํ ์ปฌ๋ผ์ ์ฌ๋ฌ๊ฐ์ ์ํ์ด ํฌํจ๋์ด ์๋ ์ํ.
์ ๋ฐ ์ํ๊ฐ ๋๋ฉด ํ ์นธ์์ ํด๋น ์ ๋ณด๋ฅผ ์ฐพ์ ๋ ๋จ์ํ WHERE์ ๋์ LIKE๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๊ฑฐ๋,,
์ฑ๋ฅ์ด์๊ฐ ๋ฐ์ ํ ์ ์์
ํ์นธ์ ํ๋์ ๋ฐ์ดํฐ๋ง ๋ค์ด๊ฐ๋๋ก ๋ถ๋ฆฌํ๋ ์์
์ด ์ 1์ ๊ทํ
๋ณ๋์ ํ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ์ ํ๋ฒํธ ์ปฌ๋ผ์ ์์๊ฐ์ผ๋ก ๋ง๋ ๋ค.
์ฃผ๋ฌธ๋ฒํธ | ๊ณ ๊ฐ๋ช | ์ํ |
---|---|---|
1 | ํ๊ธธ๋ | ์ปดํจํฐ |
1 | ํ๊ธธ๋ | ๋ง์ฐ์ค |
2 | ๊น์ฒ ์ | ํค๋ณด๋ |
3 | ์ด์ํฌ | ํค๋ณด๋ |
์ด ์์
์ด ์๋ฃ๋ ํ
์ด๋ธ์ ์ 1์ ๊ทํ์ด๋ผ๊ณ ํจ
์ 2์ ๊ทํ (2NF, 2nd normal form)
: ํ์ฌ ํ ์ด๋ธ์ ์ฃผ์ ์ ๊ด๋ จ์๋ ์ปฌ๋ผ์ ๋ค๋ฅธ ํ ์ด๋ธ๋ก.
์ 1์ ๊ทํ(1NF)๋ฅผ ๋ง์กฑํ๋ฉด์ ๋ถ๋ถ ํจ์์ ์ข
์์ฑ(partial dependency)์ ์ ๊ฑฐํ๋ ๊ณผ์ ์ ๋งํ๋ค
์๊น ์ 1์ ๊ทํ๋ฅผ ๋ง์กฑํ๊ฒ ๋ง๋ค์๋ ํ
์ด๋ธ์ โ๊ฐ๊ฒฉโ์ด๋ผ๋ ์ปฌ๋ผ์ ์ถ๊ฐํด์ ์์๋ฅผ ๋ค์ด๋ณด๋๋ก ํ๊ฒ ๋ค
[์ฃผ๋ฌธ ํ ์ด๋ธ]
์ฃผ๋ฌธ๋ฒํธ | ๊ณ ๊ฐ๋ช | ์ํ | ๊ฐ๊ฒฉ |
---|---|---|---|
1 | ํ๊ธธ๋ | ์ปดํจํฐ | 1,500,000 |
1 | ํ๊ธธ๋ | ๋ง์ฐ์ค | 50,000 |
2 | ๊น์ฒ ์ | ํค๋ณด๋ | 100,000 |
3 | ์ด์ํฌ | ํค๋ณด๋ | 100,000 |
์ํ์ ๋ํ ๊ฐ๊ฒฉ ์ปฌ๋ผ์ ์ถ๊ฐํ์๋ค.
์ฌ๊ธฐ์ ๋ง์ฝ ํค๋ณด๋์ ๊ฐ๊ฒฉ์ด ๋ณ๊ฒฝ๋๋ฉด?
-> 2๊ฐ ํ์ ๊ฐ๊ฐ ์์ ํ๋ฉด ๋๋ค.
๊ทธ๋ฐ๋ฐ ํค๋ณด๋๋ฅผ ์ฃผ๋ฌธํ ์ฌ๋์ด 100๋ช
์ด๋ผ๋ฉด?
100๊ฐ์ ํ์ ๋ค ์์ ํด์ผ ํ๋ ์ํฉ์ด ๋ฐ์ํ๊ฒ ์งโฆ
๊ทธ๋ฐ ์ํฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด์ ๊ฐ๊ฒฉ ์ปฌ๋ผ์ ์๋ผ๋ด์ด ์๋ก์ด ํ
์ด๋ธ์ ๋ง๋ค์ด ๋ถ๋ฆฌ์ํค์
[์ฃผ๋ฌธ ํ ์ด๋ธ]
์ฃผ๋ฌธ๋ฒํธ | ๊ณ ๊ฐ๋ช | ์ํ |
---|---|---|
1 | ํ๊ธธ๋ | ์ปดํจํฐ |
1 | ํ๊ธธ๋ | ๋ง์ฐ์ค |
2 | ๊น์ฒ ์ | ํค๋ณด๋ |
3 | ์ด์ํฌ | ํค๋ณด๋ |
[์ํ ํ ์ด๋ธ]
์ํ | ๊ฐ๊ฒฉ |
---|---|
์ปดํจํฐ | 1,500,000 |
๋ง์ฐ์ค | 50,000 |
ํค๋ณด๋ | 100,000 |
์ํ ๊ฐ๊ฒฉ์ ๋ณ๋์ ํ
์ด๋ธ๋ก ๋ถ๋ฆฌํ์๋ค
์ด ์์
์ด ์๋ฃ๋ ํ
์ด๋ธ์ ์ 2์ ๊ทํ์ด๋ผ๊ณ ํจ
primary key๋ ํ์ ์๋ก ๊ตฌ๋ถํ ์ ์๋ ์ ๋ํฌํ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ ์ปฌ๋ผ์ด๋ค
๊ทผ๋ฐ ๊ฐ๋์ ํ๋์ ์ปฌ๋ผ๋ง์ผ๋ก primary key๋ฅผ ์ ํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์์
๋๊ฐ ์ปฌ๋ผ์ ํฉ์น primary key๋ฅผ composite primary key ๋ผ๊ณ ํจ
๊ทธ๋ฆฌ๊ณ composite primary key ์ค์ ํ๋์ ์ปฌ๋ผ์๋ง ์ข
์๋์ด ์๋ ์ปฌ๋ผ์ partial dependency(๋ถ๋ถ ํจ์์ ์ข
์)๊ฐ ์๋ค๊ณ ํํํ๋ค
๊ทธ๋ฌ๋๊น ์ข์ ์ ์ 2์ ๊ทํ๋ฅผ ์ ์ฉํ๊ธฐ ์ ํ
์ด๋ธ์์
- composite primary key ย : ย โ์ฃผ๋ฌธ๋ฒํธโ์ โ์ํโ์ ํฉ์น ๊ฒ
- โ๊ฐ๊ฒฉโ ์ปฌ๋ผ ย :ย โ์ํโ์ ๋ฐ๋ผ ๊ฒฐ์ ๋จ. โ์ฃผ๋ฌธ๋ฒํธโ์๋ ์๊ดX
=> ย โ๊ฐ๊ฒฉโ ์ปฌ๋ผ์ partial dependency๊ฐ ์๋ค๊ณ ํํ
๊ทธ๋์ ์ด partial dependency๊ฐ ์๋ โ๊ฐ๊ฒฉโ ์ปฌ๋ผ์ ๋ค๋ฅธ ํ
์ด๋ธ๋ก ๋นผ๋ฉด ์ 2์ ๊ทํ ํ
์ด๋ธ์ด ๋๋ค!
์ 3์ ๊ทํ (3NF, 3rd normal form)
: ์ผ๋ฐ ์ปฌ๋ผ์ ์ข ์๋ ์ปฌ๋ผ์ ๋ค๋ฅธ ํ ์ด๋ธ๋ก.
์๊น ์ 2์ ๊ทํ๋ฅผ ๋ง์กฑํ๊ฒ ๋ง๋ค์๋ ์ฃผ๋ฌธ ํ
์ด๋ธ์ โ์นดํ
๊ณ ๋ฆฌโ ์ปฌ๋ผ์ ์ถ๊ฐํด์ ์์๋ฅผ ๋ค์ด๋ณด๋๋ก ํ๊ฒ ๋ค
[์ฃผ๋ฌธ ํ ์ด๋ธ]
์ฃผ๋ฌธ๋ฒํธ | ๊ณ ๊ฐ๋ช | ์ํ | ์นดํ ๊ณ ๋ฆฌ |
---|---|---|---|
1 | ํ๊ธธ๋ | ์ปดํจํฐ | ์ ์์ ํ |
1 | ํ๊ธธ๋ | ๋ง์ฐ์ค | ์ฃผ๋ณ๊ธฐ๊ธฐ |
2 | ๊น์ฒ ์ | ํค๋ณด๋ | ์ฃผ๋ณ๊ธฐ๊ธฐ |
3 | ์ด์ํฌ | ํค๋ณด๋ | ์ฃผ๋ณ๊ธฐ๊ธฐ |
์ฃผ๋ฌธ๋ฒํธ์ ๊ณ ๊ฐ๋ช
์ composite primary key๋ก ์ฌ์ฉํ๋ ์ฃผ๋ฌธํ
์ด๋ธ์์ ์นดํ
๊ณ ๋ฆฌ๋ ์ผ๋ฐ ์ปฌ๋ผ์ธ ์ํ์๋ง ๊ด๋ จ์ด ์์
์ฆ, โ์ํโ์ โ์ฃผ๋ฌธ๋ฒํธโ์ โ๊ณ ๊ฐ๋ช
โ์ ์ข
์๋์ด ์๋๋ฐ โ์นดํ
๊ณ ๋ฆฌโ๋ โ์ํโ์ ์ข
์๋์ด์๋ค
์ด๊ฑธ ๋ถ๋ฆฌํ๋ ๊ฒ
[์ฃผ๋ฌธ ํ ์ด๋ธ]
์ฃผ๋ฌธ๋ฒํธ | ๊ณ ๊ฐ๋ช | ์ํ |
---|---|---|
1 | ํ๊ธธ๋ | ์ปดํจํฐ |
1 | ํ๊ธธ๋ | ๋ง์ฐ์ค |
2 | ๊น์ฒ ์ | ํค๋ณด๋ |
3 | ์ด์ํฌ | ํค๋ณด๋ |
[์ํ ํ ์ด๋ธ]
์ํ | ์นดํ ๊ณ ๋ฆฌ |
---|---|
์ปดํจํฐ | ์ ์์ ํ |
๋ง์ฐ์ค | ์ฃผ๋ณ๊ธฐ๊ธฐ |
ํค๋ณด๋ | ์ฃผ๋ณ๊ธฐ๊ธฐ |
์ด ์์
์ด ์๋ฃ๋ ํ
์ด๋ธ์ ์ 3์ ๊ทํ์ด๋ผ๊ณ ํจ
์ด๋ ๊ฒ ์ฐข์ด๋์ ํ
์ด๋ธ๋ค์ ๊ฐ์ด ์ถ๋ ฅํ๊ณ ์ถ์ผ๋ฉด?
JOIN์ ์ฌ์ฉํ๋ฉด ๋๋ค
JOIN ์ฌ์ฉ๋ฒ์ ๋ค์ ๊ธ์์ ~