Coding Planet
[SQLD] 1๊ณผ๋ชฉ: ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์ดํด - ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ์ฑ๋ฅ ๋ณธ๋ฌธ
[SQLD] 1๊ณผ๋ชฉ: ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์ดํด - ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ์ฑ๋ฅ
jhj.sharon 2023. 8. 29. 01:441๊ณผ๋ชฉ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์ดํด
I. ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ์ฑ๋ฅ
| ์ฑ๋ฅ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ๊ฐ์
- ์ฑ๋ฅ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง : DB ์ฑ๋ฅํฅ์์ ์ํ ์ ๊ทํ, ๋ฐ์ ๊ทํ, ํ ์ด๋ธ ํตํฉ, ํ ์ด๋ธ ๋ถํ , ์กฐ์ธ๊ตฌ์กฐ, PK, FK ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ์ฑ๋ฅ๊ณผ ๊ด๋ จํ ์ฌํญ์ด ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ๋ฐ์๋๋๋ก ํ๋ ๊ฒ
- ์ํ์์ : ๋ถ์/์ค๊ณ ๋จ๊ณ, ์ฑ๋ฅ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ์์ ์ด ๋ฆ์ด์ง ์๋ก ์ฌ์ ๋ฌด ๋น์ฉ์ด ์ฆ๊ฐํ๋ค. ์ฆ, ์ฌ์ ์ ํ ์๋ก ์ ๋ ดํ๋ค.
- ๊ณ ๋ ค ์ฌํญ : ์ ๊ทํ ์ํ, DB ์ฉ๋ ์ฐ์ ๊ณผ ํธ๋์ญ์ ์ ํ ํ์ ๋ฑ์ ์ํ ๋ฐ์ ๊ทํ ์ํ ์ฌ๋ถ ๊ฒฐ์ -> ์ ๊ทํ๋ ๋ฐ๋์ ํด์ผํ๋ค.
- ์ฑ๋ฅ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๊ณ ๋ ค์ฌํญ
1) ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ํ ๋ ์ ๊ทํ๋ฅผ ์ ํํ๊ฒ ์ํํ๋ค.
2) ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฉ๋์ฐ์ ์ ์ํํ๋ค.
3) ๋ฐ์๋๋ ํธ๋์ญ์ ์ ์ ํ์ ํ์ ํ๋ค.
4) ์ฉ๋๊ณผ ํธ๋์ญ์ ์ ์ ํ์ ๋ฐ๋ผ ๋ฐ์ ๊ทํ๋ฅผ ์ํํ๋ค.(์ ํ์ฌํญ)
5) ์ด๋ ฅ๋ชจ๋ธ์ ์กฐ์ , PK/FK ์กฐ์ , ์ํผํ์ /์๋ธํ์ ๋ฑ๋ฑ์ ์กฐ์ ์ ์ํํ๋ค.
6) ์ฑ๋ฅ๊ด์ ์์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๊ฒ์ฆํ๋ค.
| ์ ๊ทํ์ ์ฑ๋ฅ (๋๋ถ์ด๊ฒฐ๋ค์กฐ)
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐํ ํ๋ ์์ ์ด๋ค.
- ์ ๊ทํ์ ๋ชฉ์ ์ ๋ฐ์ดํฐ์ ์ค๋ณต์ ๋ฐฉ์งํ๊ณ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฆฌํ๋ ๊ณผ์ ์ด๋ค.
- ์ ๊ทํ๋ฅผ ํตํด ์ฝ์ , ์ญ์ , ๊ฐฑ์ ์ด์(CRUD)์ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ์ค์ผ ์ ์๋ค.
- ์ ๊ทํ๋ 6๊ฐ์ง๊ฐ ์์ง๋ง ์ค์ง์ ์ผ๋ก ์ 1, 2, 3 ์ ๊ทํ๋ฅผ ๋ง์ด ํ์ฉํ๋ค.
- ๊ทธ ์ด์์ผ๋ก ๊ฐ์ผํ๋ฉด ๊ทธ๋ฅ ํ ์ด๋ธ ์๊ณ ๋ค์ ๋ง๋ค์ด๋ผ...
- ์ ๊ทํ๋ ์ ์ถ๋ ฅ ๋ฐ์ดํฐ ์์ ์ค์ฌ ์ฑ๋ฅ์ ํฅ์์ํจ๋ค. ์์ง๋๋ฅผ ๋ํ๊ณ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถฐ ์ ์ฐ์ฑ์ด ์ฆ๊ฐํ๋ค. ๊ฐ๋ ์ด ์ธ๋ถํ๋จ์ผ๋ก ์ฌํ์ฉ์ฑ์ด ์ฆ๊ฐํ๊ณ ๋ฐ์ดํฐ์ ์ค๋ณต์ด ์ต์ํ๋๋ค.
- ์ ๊ทํ ์กฐ๊ฑด์ ์ด์ ์กฐ๊ฑด์ ๋ชจ๋ ๋์ ์ ์ผ๋ก ์ถฉ์กฑํด์ผํ๋ค.
1) ์ 1 ์ ๊ทํ
- ์ํฐํฐ์์ ํ๋์ ์์ฑ์ด ๋ณต์์ ๊ฐ์ ๊ฐ๋๋ก ์ค๊ณ๋์์ ๋ ํ๋์ ์์ฑ์ด ๋จ์ผ ๊ฐ์ ๊ฐ๋๋ก ํ๋ ๊ฒ
- ์ฆ ๋ค์ค๊ฐ์ ๊ฐ์ง ์ ์๋ค.
- ๊ฐ ์ปฌ๋ผ์ด ์ ์ผํ ์ด๋ฆ์ ๊ฐ์ ธ์ผํ๋ค.
- ์นผ๋ผ์ ์์๊ฐ ์๊ด์ด ์์ด์ผํ๋ค.
2) ์ 2 ์ ๊ทํ
- ์ฃผ์๋ณ์๊ฐ ์๋ ์์ฑ ์ค์์ ์ฃผ์๋ณ์ ์ ์ฒด๊ฐ ์๋ ์ผ๋ถ ์์ฑ์ ์ข ์๋ ๋ถ๋ถ ์ข ์์ ์ ๊ฑฐํด์ผํ๋ค.
- ๋ชจ๋ ์นผ๋ผ์ด ์์ ํจ์ ์ข ์์ ๋ง์กฑํด์ผํ๋ค.(ํจ์์ ์ข ์์ฑ : ๊ฒฐ์ ์์ ์ข ์์์ ๊ด๊ณ, ๊ฒฐ์ ์์ ๊ฐ์ผ๋ก ์ข ์์์ ๊ฐ์ ์ ์ ์์)
3)์ 3 ์ ๊ทํ
- ์ฃผ์๋ณ์๊ฐ ์๋ ์์ฑ๋ค ์ค์์ ์ข ์ ๊ด๊ณ์ ์๋ ์์ฑ์ ์ฐพ์ ์ ๊ฑฐํ๋ ๊ฒ
- ์ดํ์ข ์, ๊ธฐ๋ณธํค๊ฐ ์๋ ๋ชจ๋ ์์ฑ๊ฐ์๋ ์๋ก ์ข ์๋ ์ ์๋ค.
- A->B, B->C์ผ ๋ A->C๊ฐ ์ฑ๋ฆฝ๋๋ฉด ์ดํ์ข ์์ด๋ค.
4) BCNF(Boyce-Codd Normal Form)
- ์ 3 ์ ๊ทํ์ ์ข ๋ ๊ฐํํ ๋ฒ์ ์ด๋ค.
- ์ 3์ ๊ทํ์ ๋ง์กฑํ๋ฉด์ ๋ชจ๋ ๊ฒฐ์ ์๊ฐ ํ๋ณดํค ์งํฉ์ ์ํด์ผํ๋ค. ์ฆ, ํ๋ณดํค ์งํฉ์ ์๋ ์ปฌ๋ผ์ด ๊ฒฐ์ ์๊ฐ ๋์ด์๋ ์๋๋ค๋ ๋ป์ด๋ค.
5)์ 4 ์ ๊ทํ
- ๋ค์น์ข ์์ฑ ๋ถ๋ฆฌ
6)์ 5 ์ ๊ทํ
- ๊ฒฐํฉ ์ข ์ ๋ถ๋ฆฌ
- ์ ๊ทํ์ ๋จ์
- ๋ฆด๋ ์ด์ ์ ๋ถํด๋ก ์ธํด ๋ฆด๋ ์ด์ ๊ฐ์ JOIN์ฐ์ฐ์ด ๋ง์์ ธ ์ฑ๋ฅ์ด ์คํ๋ ค ์ ํ๋ ์ ์๋ค.
- ์ง์์ ๋ํ ์๋ต ์๊ฐ์ด ๋๋ ค์ง ์๋ ์๋ค. ๋ฐ์ดํฐ์ ์ค๋ณต ์์ฑ์ ์ ๊ฑฐํ๊ณ ๊ฒฐ์ ์์ ์ํด ๋์ผํ ์๋ฏธ์ ์ผ๋ฐ ์์ฑ์ด ํ๋์ ํ ์ด๋ธ๋ก ์ง์ฝ๋๋ฏ๋ก ํ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ฉ๋์ด ์ต์ํ๋๋ ํจ๊ณผ๊ฐ ์๋ค.
- ๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ์๋๊ฐ ๋นจ๋ผ์ง ์๋ ์๊ณ ๋๋ ค์ง ์๋ ์๋ค.
- ๋ง์ฝ ์กฐ์ธ์ด ๋ง์ด ๋ฐ์ํ์ฌ ์ฑ๋ฅ ์ ํ๊ฐ ๋ํ๋๋ฉด ๋ฐ์ ๊ทํ(De-normalization)๋ฅผ ์ ์ฉํ ์๋ ์๋ค.
| ๋ฐ์ ๊ทํ(Denormalization)์ ์ฑ๋ฅ
- ๋ฐ์ ๊ทํ : ๋ฐ์ดํฐ ์ค๋ณต์ ํ์ฉํ์ฌ ์กฐ์ธ์ ์ค์ด๋ DB ์ฑ๋ฅ ํฅ์ ๋ฐฉ๋ฒ, ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ํฌ์ํ๊ณ ์กฐํ ์ฑ๋ฅ ํฅ์
- ๋ฐ์ ๊ทํ๋ฅผ ํ ๋๋ ๋ฐ์ ๊ทํ ๋ง๊ณ ๋ ํ์ฌ์ ์ฑ๋ฅ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ถฉ๋ถํ ๊ณ ๋ คํ์ฌ์ผ ํ๋ค. ex) ๋ทฐ, ํด๋ฌ์คํฐ๋ง, ์ธ๋ฑ์ค, ์ ํ๋ฆฌ์ผ์ด์
- ๋ฐ์ ๊ทํ ์ ์ฉ ์์ : 1. ๋ฐ์ ๊ทํ ๋์ ์กฐ์ฌ ๋ณํฉ 2. ๋ค๋ฅธ ๋ฐฉ๋ฒ ์ ๋ 3. ๋ฐ์ ๊ทํ ์ ์ฉ
- ๋ฐ์ ๊ทํ๋ ๊ทธ ๋์์ ๋ฐ๋ผ ํ ์ด๋ธ ๋ฐ์ ๊ทํ, ์นผ๋ผ ๋ฐ์ ๊ทํ, ๊ด๊ณ๋ฐ์ ๊ทํ๋ก ๋๋๋ค.
- ํ ์ด๋ธ ๋ฐ์ ๊ทํ
1) ํ ์ด๋ธ ๋ณํฉ : ๋ถ๋ฆฌ๋ ํ ์ด๋ธ์ JOIN ์ฐ์ฐ์ผ๋ก ์ฑ๋ฅ์ด ์ ํ๋์๋ ๊ฒ์ ๋ณํฉํ์ฌ ์ฑ๋ฅ์ ๋ํ๋ค.
- 1:1 ๊ด๊ณ ํ ์ด๋ธ ๋ณํฉ
- 1:m ๊ด๊ณ ํ ์ด๋ธ ๋ณํฉ
- ์ํผ-์๋ธํ์ ํ ์ด๋ธ ๋ณํฉ
2) ํ ์ด๋ธ ๋ถํ
- ์์ง ๋ถํ (ํ ์ด๋ธ์ ์ธ๋ก๋ก ์ชผ๊ฐฌ) : ์์ฃผ ์ฌ์ฉํ๋ ํน์ ์ปฌ๋ผ์ ๋ถํ ํ๋ค. ๋์คํฌ I/O๋ฅผ ๋ถ์ฐ์ฒ๋ฆฌํ ์ ์๋ค. EX) (์ผ์, ์ฌ๋ฒ, ๋ถ์, ์ฝ๋, ์ ํ๋ฒํธ) → (์ผ์, ์ฌ๋ฒ, ๋ถ์), (์ฝ๋, ์ ํ๋ฒํธ)
- ์ํ ๋ถํ (ํ ์ด๋ธ์ ๊ฐ๋ก๋ก ์ชผ๊ฐฌ) : ์์ฃผ ์ฌ์ฉํ๋ ํน์ ํํ(ํ)๋ก ๋ถํ ํ๋ค. EX) 1, 2, 3์ ๋ฑ ์๋ณ๋ก ์ ๊ณ ์ ๋ณด ๋ถ๋ฅ
3) ํ ์ด๋ธ ์ถ๊ฐ
- ์ค๋ณตํ ์ด๋ธ ์ถ๊ฐ : ์๊ฒฉ์กฐ์ธ์ด๋ ๋ค๋ฅธ ์ ๋ฌด, ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ ์ ์ก ์๊ฐ์ ์ค์ด๊ธฐ ์ํด ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ์์น์ ์ค๋ณต ์ ์ฅํ๋ค. EX) ์๋ฒ A์ ํ ์ด๋ธ์ ์๋ฒ B์์ ์์ฃผ ์กฐํํ ๊ฒฝ์ฐ, ์๋ฒ B์ ํด๋น ํ ์ด๋ธ์ ๋ณต์ฌ๋ณธ์ ์์ฑํ์ฌ ์๊ฒฉ์กฐ์ธ์ ์ ๊ฑฐํ๊ณ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์๋ค.
- ํต๊ณํ ์ด๋ธ ์ถ๊ฐ : ๋ฏธ๋ฆฌ ๊ณ์ฐ๋ ์ง๊ณ๊ฐ(EX: SUM, AVG ๋ฑ)์ ์ ์ฅํ์ฌ ์ง๊ณ ์ฟผ๋ฆฌ์ ์คํ ์๊ฐ์ ์ค์ธ๋ค EX) ์ฐ๋ฌ๋ณ ๋งค์ถ์ก, ์ผ๋ณ ํ๊ท ํ๋งค๋
- ์ด๋ ฅํ ์ด๋ธ ์ถ๊ฐ : ๋ง์คํฐ ํ ์ด๋ธ์ ๋ณ๊ฒฝ ์ด๋ ฅ์ ์ถ์ ํ๊ธฐ ์ํด ์ด๋ ฅ์ ์ ์ฅํ๋ ํ ์ด๋ธ ์ถ๊ฐ. ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ ์ด๋ ฅ์ ์ถ์ ํ๊ฑฐ๋, ํน์ ์์ ์ ๋ฐ์ดํฐ ์ํ๋ฅผ ๋ณต์ํด์ผํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค. EX) ๊ณ ๊ฐ ์ ๋ณด ๋ณ๊ฒฝ ๋ด์ญ ์ ์ฅ
- ๋ถ๋ถํ ์ด๋ธ ์ถ๊ฐ : ํฐ ํ ์ด๋ธ์ ์ฌ๋ฌ ์์ ํ ์ด๋ธ๋ก ๋ถํ ํ์ฌ ๋ฐ์ดํฐ์ ๊ด๋ฆฌ์ ์กฐํ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค. ํน์ ๋ฐ์ดํฐ๋ฅผ ์์ฃผ ์กฐํํ๊ฑฐ๋, ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ๋๋ฌด ํฐ ๊ฒฝ์ฐ์ ์ ์ฉ๋๋ค. EX) 10๋ ์น ๊ฑฐ๋ ๋ฐ์ดํฐ ์ค ์ต๊ทผ 1๋ ์น ๋ฐ์ดํฐ๋ง ์์ฃผ ์กฐํํ๋ ๊ฒฝ์ฐ
4) ์นผ๋ผ ๋ฐ์ ๊ทํ
- ์ค๋ณต์นผ๋ผ ์ถ๊ฐ : ์กฐ์ธ ์ฐ์ฐ์ ์ค์ด๊ธฐ ์ํด ๋ค๋ฅธ ํ ์ด๋ธ์ ์นผ๋ผ ๊ฐ์ ํ์ฌ ํ ์ด๋ธ์ ์ค๋ณต ์ ์ฅ
- ํ์์นผ๋ผ ์ถ๊ฐ : ๊ณ์ฐ ์ฐ์ฐ์ ๋ถํ๋ฅผ ์ค์ด๊ธฐ ์ํด ๋ฏธ๋ฆฌ ๊ณ์ฐ๋ ๊ฐ์ ์ ์ฅ
- ์ด๋ ฅํ ์ด๋ธ ์นผ๋ผ ์ถ๊ฐ : ๋๋์ ๋ฐ์ดํฐ์์ ํน์ ๋ ์ง์ ์กฐํ๋ ์ต๊ทผ ๊ฐ์ ๋น ๋ฅด๊ฒ ์กฐํํ๊ธฐ ์ํด ์ถ๊ฐ์ ๋ณด๋ฅผ ์ ์ฅ EX)์ต๊ทผ ๊ฐ ์ฌ๋ถ, ์์ ๋ฐ ์ข ๋ฃ์ผ์
- PK์ ์ํ ์นผ๋ผ ์ถ๊ฐ : ๋ณตํฉ์๋ฏธ๋ฅผ ๊ฐ๋ ๊ธฐ๋ณธํค(PK)์ ๊ฐ์ ๋จ์ผ ์์ฑ์ผ๋ก ๋ณ๊ฒฝํ๊ณ ํด๋น ๊ฐ์ ์ค๋ณต์ ์ผ๋ฐ ์์ฑ์ผ๋ก ์ถ๊ฐ.
- ์ค์๋์ ์ํ ์นผ๋ผ ์ถ๊ฐ : ์๋ชป๋ ์ฒ๋ฆฌ๋ฅผ ๋ณต๊ตฌํ๊ธฐ์ํด ์ด์ ๋ฐ์ดํฐ๋ฅผ ์์๋ก ์ค๋ณต ์ ์ฅ
5) ๊ด๊ณ ๋ฐ์ ๊ทํ
- ์ค๋ณต๊ด๊ณ ์ถ๊ฐ : ๋ง์ ์กฐ์ธ ๋ฐ์ ์ ์ฑ๋ฅ์ ํ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ถ๊ฐ์ ์ธ ๊ด๊ณ๋ฅผ ๋งบ๋๋ค.
| ๋๋ ๋ฐ์ดํฐ ๋ฐ์์ ๋ฐ๋ฅธ ํ ์ด๋ธ ๋ถํ
์ค๋ผํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ ์ด๋ธ์ ํ์ด ํ๋์ ๋ฐ์ดํฐ ๋ธ๋ก์ ์ ์ฅ๋์ง ๋ชปํ ๋ Row Chaining, Row Migration์ด ๋ฐ์ํ๋๋ฐ ์ด๋ก ์ธํด ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ๋ค.(๋ฐ์ดํฐ๋ธ๋ก : RDBMS์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๊ฐ์ฅ ์์ ๋จ์)
- Row Chaining
- ์ ์ :ํ๋์ ํ์ด ๋ ๊ฐ ์ด์์ ๋ฐ์ดํฐ ๋ธ๋ก์ ๊ฑธ์ณ ์ ์ฅ๋๋ ํ์์ ์๋ฏธํ๋ค.
- ๋ฐ์ ์์ธ : ํ ์ด๋ธ์ ํ์ด ๋ฐ์ดํฐ ๋ธ๋ก์ ํฌ๊ธฐ๋ณด๋ค ํด ๋ ๋ฐ์ํ๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ ๋ธ๋ก์ ํฌ๊ธฐ๊ฐ 8KB์ธ๋ฐ ํ ์ด๋ธ ํ์ ํฌ๊ธฐ๊ฐ 9KB๋ผ๋ฉด ํด๋น ํ์ ๋ ๊ฐ์ ๋ฐ์ดํฐ ๋ธ๋ก์ ๊ฑธ์ณ ์ ์ฅ๋๋ค.
- ๋ฌธ์ ์ : ํ๋์ ํ์ ์ฝ๊ธฐ ์ํด ์ฌ๋ฌ ๋ฐ์ดํฐ ๋ธ๋ก์ ์ ๊ทผํด์ผํ๋ฏ๋ก ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ๋ค.
- Row Migration
- ์ ์ : ์๋ ์ ์ฅ๋์ด ์๋ ๋ฐ์ดํฐ ๋ธ๋ก์์ ๋ค๋ฅธ ๋ฐ์ดํฐ ๋ธ๋ก์ผ๋ก ํ์ด ์ด๋ํ๋ ํ์
- ๋ฐ์ ์์ธ : ํ ์ด๋ธ์ ํ์ด ์๋ ์ ์ฅ๋์ด ์๋ ๋ฐ์ดํฐ ๋ธ๋ก์ ๋ ์ด์ ๊ณต๊ฐ์ด ์์ ๋ (EX : ์ ๋ฐ์ดํธ๋ก ์ธํด ํ์ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ ๊ฒฝ์ฐ) ๋ฐ์ํ๋ค. ์ด ๋ ํด๋น ํ์ ๋ค๋ฅธ ๋ฐ์ดํฐ ๋ธ๋ก์ผ๋ก ์ด๋ํ๊ณ ์๋ ๋ฐ์ดํฐ ๋ธ๋ก์๋ ์ด๋๋ ํ์ ๋ํ ํฌ์ธํฐ๋ง ๋จ๊ฒ ๋๋ค.
- ๋ฌธ์ ์ : ํ๋์ ํ์ ์ฝ๊ธฐ ์ํด ์๋์ ๋ฐ์ดํฐ ๋ธ๋ก๊ณผ ์ด๋๋ ๋ฐ์ดํฐ ๋ธ๋ก์ ๋ชจ๋ ์ ๊ทผํด์ผํ๋ฏ๋ก ์ฑ๋ฅ์ ํ๊ฐ ๋ฐ์ํ๋ค.
| PK์ ์ํ ํ ์ด๋ธ ํํฐ์ ๋
**ํํฐ์
๋ ํ๋์ ํ ์ด๋ธ์ ๋ง์ ์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ฉด ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํ๊ณ ํ ์ด๋ธ์ ๋ช๊ฐ๋ก ์ชผ๊ฐ๋ ์ฑ๋ฅ์ด ์ ํ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด ๋ ๋ ผ๋ฆฌ์ ์ผ๋ก๋ ํ๋์ ํ ์ด๋ธ์ด์ง๋ง ๋ฌผ๋ฆฌ์ ์ผ๋ก๋ ์ฌ๋ฌ ๊ฐ์ ํ ์ด๋ธ๋ก ๋ถ๋ฆฌํ์ฌ ๋ฐ์ดํฐ ์ก์ธ์ค ์ฑ๋ฅ๋ ํฅ์์ํค๊ณ , ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐฉ๋ฒ๋ ๊ฐ์ ํ ์ ์๋๋ก ํ ์ด๋ธ์ ์ ์ฉํ๋ ๊ธฐ๋ฒ์ด๋ค. |
1) Range ํํฐ์ ๋
- ๋ฐ์ดํฐ๊ฐ ๋ ์ง ๋๋ ์ซ์๋ก ๋ถ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์ ์ฉ๋๋ค.
- SQL๋ฌธ์ ์คํํ ๋ ๋ด๋ถ์ ์ผ๋ก ๊ตฌ๋ถ๋ ํ ์ด๋ธ์์ ์ฒ๋ฆฌํ๋ฏ๋ก ์ฑ๋ฅ์ด ๊ฐ์ ๋๊ณ ๋ฐ์ดํฐ ๋ณด๊ด์ฃผ๊ธฐ์ ๋ฐ๋ฅธ ํ ์ด๋ธ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ๋ค.
- ex) 1๋ ์ ์๋ณ๋ก ๋ถ๋ฆฌํ์ฌ 12๊ฐ์ ํํฐ์ ํ ์ด๋ธ ๋ง๋ค๊ธฐ
2) List ํํฐ์ ๋
- ์ผ๋ จ๋ฒํธ ๋ฑ์ ์ฝ๋๊ฐ์ผ๋ก PK๊ฐ ๊ตฌ์ฑ๋์ด ์๋ ๊ฒฝ์ฐ
- EX) ์ ์์ ํ ์ฝ๋๋ณ๋ก ํํฐ์ ํ ์ด๋ธ์ ๋ง๋ ๋ค.
3) Hash ํํฐ์ ๋
- ์ง์ ๋ hash ์กฐ๊ฑด์ ๋ฐ๋ผ ํด์ฑ ์๊ณ ๋ฆฌ์ฆ์ด ์ ์ฉ๋๋ค.
- ์ค๊ณ์๋ ์ด๋ค ํ ์ด๋ธ์ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ๋ค์ด์๋์ง ์ ์ ์๋ค.
| ์ํผํ์ ๊ณผ ์๋ธํ์
ERD(Entity-Relationship Diagram)์์ ์ฌ์ฉ๋๋ ๊ฐ๋ ์ด๋ค. ์ํผํ์ ์ ์ผ๋ฐํ๋ ์ํฐํฐ๋ฅผ ๋ํ๋ด๋ฉฐ, ์๋ธํ์ ์ ํน์ ํ ๋ฒ์ฃผ ๋๋ ํด๋์ค์ ์ํฐํฐ๋ฅผ ๋ํ๋ธ๋ค. ์ด ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ์ ์ค๋ณต์ ์ค์ด๊ณ ๋ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ฆํ๊ฒ ํ๋ค. ์ด๋ฌํ ์ํผ/์๋ธํ์ ๊ด๊ณ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๋งคํํ ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค. ์๋ ๋ณํ ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ์ ์๊ณผ ํธ๋์ญ์ ์ ์ ํ์ ๋ฐ๋ผ ์ ํํ๋ค.
1) One to One Type(1:1 ํ์
)
- ์ํผํ์ ๊ณผ ์๋ธํ์ ๊ฐ์ 1:1๊ด๊ณ๋ฅผ ๊ฐ๋ ํ ์ด๋ธ์ ์์ฑํ๋ค.
- ์ํผํ์ ํ ์ด๋ธ์ ๊ธฐ๋ณธ ํค๋ฅผ ์๋ธํ์ ํ ์ด๋ธ์ ์ธ๋ ํค๋ก ์ฌ์ฉํ๋ค.
2) Plus Type(์ํผ + ์๋ธ ํ์ )
- ์ํผํ์ ๋ฐ์ด๋ธ์ ๊ณตํต ์์ฑ์ ์ ์ฅํ๊ณ , ๊ฐ ์๋ธํ์ ํ ์ด๋ธ์๋ ํน์ ์์ฑ๋ง์ ์ ์ฅํ๋ค.
- ์ด ๋ฐฉ์์ ๋ฐ์ดํฐ ์ค๋ณต์ ์ต์ํํ๋ฉด์๋ ๊ฐ ์๋ธํ์ ์ ํน์ง์ ๋ํ๋ผ ์ ์๋ค.
3) Single Type(All in One ํ์ )
- ํ๋์ ํ ์ด๋ธ์ ์ํผํ์ ๊ณผ ๋ชจ๋ ์๋ธํ์ ์ ์์ฑ์ ํฌํจํ๋ค.
- ์ด ํ ์ด๋ธ์๋ ์ํฐํฐ ์ ํ์ ๋ํ๋ด๋ ์ถ๊ฐ์ ์ธ ์ปฌ๋ผ(ex) ํ์ ์ฝ๋)์ด ์์ ์ ์๋ค.
- ์ด ๋ฐฉ์์ ์กฐํ ์ฑ๋ฅ์ ๋ฐ์ด๋์ง๋ง, ๋ฐ์ดํฐ ์ค๋ณต์ ๊ฐ๋ฅ์ฑ์ด ๋์์ง ์ ์๋ค.
| ์ธ๋ฑ์ค ํน์ฑ์ ๊ณ ๋ คํ PF/FK ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ ํฅ์
์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒ์ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํ ์ค์ํ ๋๊ตฌ์ด๋ค. ํนํ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ PK, FK๋ฅผ ์ฌ์ฉํ์ฌ ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ ๋ ์ธ๋ฑ์ค๋ ํ์์ ์ผ๋ก ๊ณ ๋ คํด์ผํ๋ค. ํ ์ด๋ธ์ ๋ฐ์ํ๋ ํธ๋์ญ์ ์ ์กฐํ ํจํด์ ๋ถ์ํ์ฌ PK/FK ์นผ๋ผ์ ์์๋ฅผ ์กฐ์ ํด์ผ ํ๋ค.
- Primary Key
- ๋๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์์๋ PK๋ ์๋์ผ๋ก ์ธ๋ฑ์ฑ๋๋ค.
- PK๋ ๊ฐ ํ์ ๊ณ ์ ํ๊ฒ ์๋ณํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ ๊ฒ์์ด ๊ฐ๋ฅํ๋ค.
- Foregin Key
- ์ธ๋ํค์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ฉด ์กฐ์ธ ์ฐ์ฐ์ ์ฑ๋ฅ์ด ํฅ์๋๋ค.
- FK๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ํ ์ด๋ธ๊ณผ ์กฐ์ธํ ๋, ์ธ๋ฑ์ค๊ฐ ์๋ค๋ฉด ์ ์ฒด ํ ์ด๋ธ ์ค์บ์ด ๋ฐ์ํ ์ ์๋ค. ์ด๋ก ์ธํด ์ฑ๋ฅ์ ํ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก FK์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ข๋ค.
| ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ
๋ถ์ฐํ ์ดํฐ๋ฒ ์ด์ค : ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฌ๋ฌ ๊ณณ์ผ๋ก ๋ถ์ฐ๋์ด์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ๋์ ๊ฐ์ ์์คํ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค. (๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌ, ๋ ผ๋ฆฌ์ ์ผ๋ก ๋์ผ ์์คํ )
๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ ์ ๊ทผ์ฑ, ๊ฐ์ฉ์ฑ ๋ฐ ๊ฒฌ๊ณ ์ฑ์ ์ฆ๊ฐ์ํค๊ธฐ ์ํด์ ์ค๊ณ๋์๋ค.
- ๋ถ์ฐ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํฌ๋ช ์ฑ : ๋ถ์ฐ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ ์๋ 6๊ฐ์ง ํฌ๋ช ์ฑ์ ๋ง์กฑํด์ผ ํ๋ค.
- ๋ถํ : ํ๋์ ๋ ผ๋ฆฌ์ ๋ฆด๋ ์ด์ ์ด ์ฌ๋ฌ๊ฐ๋ก ๋ถํ ๋์ด ์๋ค.
- ์์น : ์ฌ์ฉํ๋ ค๋ ๋ฐ์ดํฐ์ ์ ์ฅ์ฅ์ ๋ช ์๊ฐ ๋ถํ์ํ๋ค. System Catalog์ ์์น์ ๋ณด๊ฐ ์ ์ฅ๋์ด์ผ ํ๋ค.
- ์ง์ญ์ฌ์ : ์ง์ญ DBMS์ ๋ฌผ๋ฆฌ์ DB ์ฌ์ด์ Mapping์ ๋ณด์ฅํ๋ค. ๊ฐ ์ง์ญ์์คํ ์ด๋ฆ๊ณผ ๋ฌด๊ดํ ์ด๋ฆ์ ์ฌ์ฉํ๋ค.
- ์ค๋ณต : DB ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ์์คํ ์ ์ค๋ณต๋์ด์๋์ง ์ ํ์๊ฐ ์๋ค.
- ์ฅ์ : DBMS ๋๋ ์ปดํจํฐ์ ์ฅ์ ์ ๋ฌด๊ดํ๊ฒ ํธ๋์ญ์ ์ ์์์ฑ์ด ๋ณด์ฅ๋์ด์ผํ๋ค.
- ๋ณํ : ๋ค์ ํธ๋์ญ์ ์ ๋์์ ์ํํด๋ ๊ฒฐ๊ณผ๋ ์ผ๊ด์ฑ์ด ์์ด์ผ ํ๋ค.
- ๋ถ์ฐ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ฅ๋จ์
์ฅ์ | ๋จ์ |
- ๊ณ ๊ฐ์ฉ์ฑ : ํ ์๋ฒ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋ค๋ฅธ ์๋ฒ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. - ๋ณ๋ ฌ์ฒ๋ฆฌ๋ฅผ ์ํํ์ฌ ๋น ๋ฅธ ์๋ต์ด ๊ฐ๋ฅํ๋ค.(๋ถํ ๋ถ์ฐ) - ์์คํ ์ฉ๋ ํ์ฅ์ด ์ฝ๋ค. - ๊ฐ ์ง์ญ ์ฌ์ฉ์๋ค์ ์๊ตฌ๋ฅผ ๋น ๋ฅด๊ฒ ์์ฉํ๋ค. |
- ์ค๊ณ, ๊ด๋ฆฌ๊ฐ ๋ณต์กํ๊ณ ์ ์ง ๋น์ฉ์ด ๋๋ค. - ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ํ ์ํ์ด ์๋ค. - ๋ณด์, ๊ด๋ฆฌ, ํต์ ๊ฐ ์ด๋ ต๊ณ ์ค๋ฅ ์ ์ฌ์ฑ์ด ํฌ๋ค. - ์๋ต์๋๊ฐ ๋ถ๊ท์น์ ์ด๋ค. - ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ์ํํ ๊ฒฝ์ฐ ๋ ๋ณต์กํ๊ณ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฐ๋ค. |
- ๋ถ์ฐ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ ๊ฒฝ์ฐ
- ์ฑ๋ฅ์ด ๋งค์ฐ ์ค์ํ ๋
- ๊ณตํต์ฝ๋, ๊ธฐ์ค์ ๋ณด, ๋ง์คํฐ ๋ฐ์ดํฐ ๋ฑ์ ๋ถ์ฐํ๊ฒฝ์ ์กฐ์ฑํ ๊ฒฝ์ฐ ์ฑ๋ฅ ๊ฐ์
- ์ค์๊ฐ ๋๊ธฐํ๋ฅผ ์๊ตฌํ์ง ์์ ๋
- ํน์ ์๋ฒ์ ๋ถํ๊ฐ ์ง์ค๋ ๊ฒฝ์ฐ
- ๋ฐฑ์ ์ฌ์ดํธ๋ฅผ ๋ง๋ค ๋
**GSI(Global Single Instance)๋ ํตํฉ๋ ํ ๊ฐ์ ์ธ์คํด์ค ์ฆ, ํตํฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ์๋ฏธํ๋ฏ๋ก,๋ถ์ฐ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ๋์น๋๋ ๊ฐ๋ ์ด๋ค.