์ด๋ฒ ํฌ์คํ ์ ์ง๋ ์ ๊ทํ(https://iworldt.tistory.com/99) ์ ์ด์ด ๋ฐ์ ๊ทํ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๋ฐ์ ๊ทํ Denormalization
๋ฐ์ ๊ทํ์ ์ ์
์ ๊ทํ์ ์ถฉ์คํ์ฌ ๋ชจ๋ธ๋ง์ ์ํํ๋ฉด ์ข ์์ฑ, ํ์ฉ์ฑ์ ํฅ์๋๋ ์ํ์๋๊ฐ ์ฆ๊ฐ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ์ฌ ์ด๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ์ฑ๋ฅ์ ์ค์ ์ ๋์ด ์ ๊ทํํ๋ ๋ฐฉ๋ฒ
-> ๊ณผ๋ํ ์ ๊ทํ๋ก ์ธํด ์คํ๋ ค ๋ ๋ณต์กํด์ง ๊ฒฝ์ฐ, ์ ๊ทํ๋ฅผ ํ์ด๋ธ๋ค๊ณ ์๊ฐํ์๋ฉด ๋๊ฒ ์ต๋๋ค.
๋ฐ์ ๊ทํ์ ํน์ง
- ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๊ท์น์ ์ฝ๋งค์ด์ง ์๊ณ ์ํํ๋ค.
- ์์คํ ์ด ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ตฌํ๋์์ ๋ ์ฑ๋ฅํฅ์์ ๋ชฉ์ ์ผ๋ก ํ๋ค.
๋ฐ์ ๊ทํ ์ฌ์ฉ ์๊ธฐ
๋ฐ์ ๊ทํ๊ฐ ํ์ํ ๋, ๋ฐ์ ๊ทํ ์ธ์ ํ๋์ง?
(1) ์ ๊ทํ์ ์ถฉ์คํ์์ผ๋ ์ํ์๋์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ
(2) ๋ค๋์ ๋ฒ์๋ฅผ ์์ฃผ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ
(3) ํน์ ๋ฒ์์ ๋ฐ์ดํฐ๋ง ์์ฃผ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ
(4) ์ฒ๋ฆฌ๋ฒ์๋ฅผ ์ค์ด์ง ์๊ณ ๋ ์ํ์๋๋ฅผ ๊ฐ์ ํ ์ ์๋ ๊ฒฝ์ฐ
(5) ์์ฝ ์๋ฃ๋ง ์ฃผ๋ก ์๊ตฌ๋๋ ๊ฒฝ์ฐ
(6) ์ถ๊ฐ๋ ํ ์ด๋ธ์ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ค๋ฒํค๋๋ฅผ ๊ณ ๋ คํ์ฌ ๊ฒฐ์
(7) ์ธ๋ฑ์ค์ ์กฐ์ ์ด๋ ๋ถ๋ถ๋ฒ์์ฒ๋ฆฌ๋ก ์ ๋ํ๊ณ , ํด๋ฌ์คํฐ๋ง์ ์ด์ฉํ์ฌ ํด๊ฒฐํ ์ ์๋ ์ง๋ฅผ ์ฒ ์ ํ ๊ฒํ ํ ๊ฒฐ์
๋ฐ์ ๊ทํ์ ์ ํ
1. ์ค๋ณต ํ ์ด๋ธ ์ถ๊ฐ
- ๋ค๋์ ๋ฒ์๋ฅผ ์์ฃผ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ
- ํน์ ๋ฒ์์ ๋ฐ์ดํฐ๋ง ์์ฃผ ์ฒ๋ฆฌ๋๋ ๊ฒฝ์ฐ
- ์ฒ๋ฆฌ๋ฒ์๋ฅผ ์ค์ด์ง ์๊ณ ๋ ์ํ์๋๋ฅผ ๊ฐ์ ํ ์ ์๋ ๊ฒฝ์ฐ
-> ์์ฃผ ์ฐ์ด๋ ๋ถ๋ถ์ด ๋ญ์ณ์์ ๋, ๋ด์ฉ์ด ์ค๋ณต๋๋๋ผ๋ ํ ์ด๋ธ์ ํ๋ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ค๋ณต ํ ์ด๋ธ ์ถ๊ฐ ๋ฐฉ๋ฒ
- ์ง๊ณ ํ ์ด๋ธ์ ์ถ๊ฐ ํ์ฉํ๊ณ ์ ํ๋ ์ง๊ณ์ ๋ณด๋ฅผ ์ํ ํ ์ด๋ธ์ ์ถ๊ฐํ๊ณ , ๊ฐ ์๋ณธํ ์ด๋ธ์ ํธ๋ฆฌ๊ฑฐ๋ฅผ ๋ฑ๋ก์์ผ ์์ฑํ์ฌ ํ์ฉํ๋๋ฐ, ์ด๋ ํธ๋ฆฌ๊ฑฐ์ ์ค๋ฒํค๋์ ์ ์ํด์ผ ํ๋ค.
- ์งํ ํ ์ด๋ธ์ ์ถ๊ฐ ์ด๋ ฅ๊ด๋ฆฌ ๋ฑ์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ ํ์ฉ๋๊ฐ ์ข์์ง๋๋ก ๊ธฐ๋ณธํค๋ฅผ ์ ์ ํ ์ค์ ํ์ฌ์ผ ํ๋ค.
- ํน์ ๋ถ๋ถ๋ง์ ํฌํจํ๋ ํ ์ด๋ธ ์ถ๊ฐ ๊ฑฐ๋ํ ํ ์ด๋ธ์ ํน์ ๋ถ๋ถ๋ง์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์์ฃผ ์ฌ์ฉ๋๋ ๋ถ๋ถ์ผ๋ก ์๋ก์ด ํ ์ด๋ธ ์์ฑํ์ฌ ํ์ฉํ๋ค.
2. ํ ์ด๋ธ ์กฐํฉ
- ๋๋ถ๋ถ ์ฒ๋ฆฌ๊ฐ ๋ ๊ฐ ์ด์์ ํ ์ด๋ธ์ ๋ํด ํญ์ ๊ฐ์ด ์ผ์ด๋๋ ๊ฒฝ์ฐ์ ํ์ฉํ๋ค.
->๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ๋, ์๊พธ ๋์ธ๊ฐ์ ํ ์ด๋ธ์ ์ฎ์ด์ ์ฐ๊ฒ ๋๋ค๋ฉด ๊ทธ ํ ์ด๋ธ๋ค์ ์์ ํฉ์ณ๋ฒ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
ํ ์ด๋ธ ์กฐํฉ ๋ฐฉ๋ฒ
- ํด๋น ํ ์ด๋ธ์ ํตํฉํ์ฌ ์ค๊ณํ๋ค.
ํ ์ด๋ธ ์กฐํฉ ๊ณ ๋ ค์ฌํญ
- ๋ฐ์ดํฐ ์ก์ธ์ค๊ฐ ๋ณด๋ค ๊ฐํธํ์ง๋ง Row์๊ฐ ์ฆ๊ฐํ์ฌ ์ฒ๋ฆฌ๋์ด ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์๋ ์ ์์ผ๋ฏ๋ก ์ด๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค.
- ์ ๋ ฅ, ์์ , ์ญ์ ๊ท์น์ด ๋ณต์กํด์ง ์ ์์์ ์ ์ํด์ผ ํ๋ค.
- Not Null, Default, Check ๋ฑ์ Constraint๋ฅผ ์๋ฒฝํ ์ค๊ณํ๊ธฐ ์ด๋ ค์ด ์ ์ด ์๋ค.
3. ํ ์ด๋ธ ๋ถํ
- ์นผ๋ผ์ ์ฌ์ฉ๋น๋์ ์ฐจ์ด๊ฐ ๋ง์ ๊ฒฝ์ฐ
- ๊ฐ๊ฐ์ ์ฌ์ฉ์๊ฐ ๊ฐ๊ธฐ ํน์ ํ ๋ถ๋ถ๋ง ์ง์์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
- ์ํฉ์ ๋ฐ๋ผ SUPER-TYPE์ ๋ชจ๋ ๋ด๋ ค SUB-TYPE ๋ณ๋ก ๋ถํ ํ๊ฑฐ๋ SUPER-TYPE ๋ง์ ๋ฐ๋ก ํ ์ด๋ธ์ ์์ฑํ๋ ๊ฒฝ์ฐ
-> ํ ํ ์ด๋ธ์์ ์์ฃผ ์ฐ์ด๋ ์นผ๋ผ๊ณผ ์๋ ๋ถ๋ถ์ผ๋ก ๋๋๋ค๊ฑฐ๋, 1์ฐ์ฐ์๋ ์ด ์นผ๋ผ๋ค, 2์ฐ์ฐ์๋ ์ ์นผ๋ผ๋ค๋ง ์ฌ์ฉํ๋ ์์ผ๋ก ๊ทธ๋ฃน์ ธ ์์ ๋ ๊ทธ ์นผ๋ผ๋ค์ ๊ทธ๋ฅ ๋๋์ด ์ฌ๋ฌ ํ ์ด๋ธ๋ก ๋ถํ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
ํ ์ด๋ธ ๋ถํ ๋ฐฉ๋ฒ
- ์์ง ๋ถํ ์นผ๋ผ๋ณ ์ฌ์ฉ๋น๋์ ์ฐจ์ด๊ฐ ๋ง์ ๊ฒฝ์ฐ ์์ฃผ ์ฌ์ฉ๋๋ ์นผ๋ผ๋ค๊ณผ ๊ทธ๋ ์ง ์์ ์นผ๋ผ์ผ๋ก ๋ถ๋ฅํ์ฌ ํ ์ด๋ธ์ ๋ถํ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์ํ ๋ถํ ํน์ ๋ฒ์๋ณ ์ฌ์ฉ ๋น๋์ ์ฐจ์ด๊ฐ ๋ง์ ๊ฒฝ์ฐ ํด๋น ๋ฒ์ ๋ณ๋ก ํ ์ด๋ธ์ ๋ถํ ํ ๋ ๋ฐฉ๋ฒ์ด๋ค.
ํ ์ด๋ธ ๋ถํ ๊ณ ๋ ค์ฌํญ
- ํน์ ์นผ๋ผ ๋๋ ๋ฒ์๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ ์ํ์๋์ ๋ง์ ์ํฅ์ด ์์์ ๊ณ ๋ ค ํด์ผ ํ๋ค.
- ๊ธฐ๋ณธํค์ ์ ์ผ์ฑ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ง๋ค.
- ์ก์ธ์ค ๋น๋๋ ์ฒ๋ฆฌํ ๋ฐ์ดํฐ์์ด ์ ์ ๊ฒฝ์ฐ๋ ๋ถํ ์ด ๋ถํ์ํจ์ ๊ณ ๋ คํ์ฌ์ผ ํ๋ค.
- ๋ถํ ๋ ํ ์ด๋ธ์ ์คํ๋ ค ์ํ์๋๋ฅผ ๋์๊ฒ ํ๊ธฐ๋ ํจ์ ์ ์ํ์ฌ์ผ ํ๋ค.
- ๋ฐ์ดํฐ ํ๋ก์ธ์ฑ ๊ด์ ์ด ์๋๋ผ ๊ฒ์์ ์ค์ ์ ๋์ด ๊ฒฐ์ ํ์ฌ์ผ ํ๋ค.
4. ํ ์ด๋ธ ์ ๊ฑฐ
- ํ ์ด๋ธ ์ฌ์ ์๋ ์นผ๋ผ์ ์ค๋ณตํ๋ก ๋ ์ด์ ์ก์ธ์ค ๋์ง ์๋ ํ ์ด๋ธ ๋ฐ์ํ ๊ฒฝ์ฐ
-> ์ ๊ทํ์ ๋ฐ์ ๊ทํ๋ฅผ ๊ฑฐ์น๋ฉด์ ์์ฐ์ด๊ฒ ๋์ด๋ฒ๋ฆฐ ํ ์ด๋ธ์ด ์๊ฒผ์ ๋ ์ ๊ฑฐํ๋ ๊ฒ์ ๋๋ค.
ํ ์ด๋ธ ์ ๊ฑฐ ๋ฐฉ๋ฒ
- ํด๋น ํ ์ด๋ธ์ ์ญ์ ํ๋ค.
ํ ์ด๋ธ ์ ๊ฑฐ ๊ณ ๋ ค์ฌํญ
- ๊ด๋ฆฌ ์ํ๋ก ์ธํด, ๋๋ฝ์ ์ ์ง๋ณด์ ๋จ๊ณ์์ ๋ง์ด ๋ฐ์ํ๋ ํ์์์ ๊ณ ๋ คํด์ผ ํ๋ค.
- ์ ์ง๋ณด์ ๋จ๊ณ์์ ์ด๊ธฐ ์ค๊ณ ์ ์์ํ์ง ๋ชปํ๋ ์๋ก์ด ์๊ตฌ์ฌํญ์ด ์ฆ๊ฐํ๊ฒ๋๋ฉด ๋์์ ํด๊ฒฐ์๋ง ๊ธ๊ธํ์ฌ ํ ์ด๋ธ์ ์ถ๊ฐ๋ ๋ณ๊ฒฝ์ด ํจ๋ถ๋ก ์ผ์ด๋๊ฒ ๋์ด ์์คํ ์ ์ผ๊ด์ฑ๊ณผ ํตํฉ์ฑ์ด ๋ฌด๋์ง๊ฒ ๋๋ค๋ ์ฌ์ค์ ๊ฐ๊ณผํด์๋ ์๋๋ค.
5. ์นผ๋ผ์ ์ค๋ณตํ
- ์์ฃผ ์ฌ์ฉ๋๋ ์นผ๋ผ์ด ๋ค๋ฅธ ํ ์ด๋ธ์ ๋ถ์ฐ๋์ด ์์ด ์์ธํ ์กฐ๊ฑด์๋ ๋ถ๊ตฌํ๊ณ ์ก์ธ์ค ๋ฒ์๋ฅผ ์ค์ด์ง ๋ชปํ๋ ๊ฒฝ์ฐ
- ๋๋ ๋ฐ์ดํฐ์์ Row๋ณ ์ฐ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ ์ ํ ๋ ์ฑ๋ฅํฅ์์ ์ํ ํ์(Derived) ์นผ๋ผ์ ์ถ๊ฐํ ๊ฒฝ์ฐ
- ๊ธฐ๋ณธํค์ ํํ๊ฐ ์ ์ ํ์ง ์๊ฑฐ๋ ๋๋ฌด ๋ง์ ์นผ๋ผ์ผ๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ
- ์ ๊ทํ ๊ท์น์ ์ฝ๋งค์ด์ง ์์ผ๋ฉด์ ์ฑ๋ฅํฅ์์ ๋ชฉ์ ์ผ๋ก ํ ๋ฐ์ ๊ทํ(Denomalization)๋ฅผ ํตํ ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ๋ ๊ฒฝ์ฐ
-> ์์ฃผ ์ฐ์ด๋ ์ปฌ๋ผ, ์๋ฅผ ๋ค์ด ์ฃผ๋ฏผ๋ฒํธ ์ปฌ๋ผ์ด ๋ชจ๋ ํ ์ด๋ธ์ ์ธ๋ํค๋ก ์ฐธ์กฐ๋๋ฉด์ ๊ทธ ํ ์ด๋ธ๋ค์ ๊ธฐ๋ณธํค๊ฐ ๋๋ ๊ฒฝ์ฐ๊ฐ ์๊ฒ ์ต๋๋ค. ๊ณ์ํด์ ๋ค๋ฅธ ํ ์ด๋ธ์ ์ฐธ์กฐํด์ผํ๊ณ , ํ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ค์ด ๋ง์ผ๋ฉด์ ์ธ๋ํค๋ค๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ, ๊ทธ๋ฅ ๊ทธ ์ธ๋ํค๋ฅผ ๊ทธ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ก ์ค๋ณตํด์ ์์ฑ์์ผ๋ฒ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋๋ฌด ๋ง์ ํ ์ด๋ธ๋ค๊ฐ์ ๊ด๊ณ๋ฅผ ์ง์ด๋ค๊ณ ์๊ฐํ์๋ฉด ๋๊ฒ ์ต๋๋ค.
์นผ๋ผ์ ์ค๋ณตํ ๋ฐฉ๋ฒ
- ํ์ํ ํด๋น ํ ์ด๋ธ์ด๋ ์นผ๋ผ์ ์ถ๊ฐํ๋ค.
์นผ๋ผ์ ์ค๋ณตํ ๊ณ ๋ ค์ฌํญ
- ํ ์ด๋ธ ์ค๋ณต๊ณผ ์นผ๋ผ์ ์ค๋ณต์ ๊ณ ๋ คํ๋ค.
- ๋ฐ์ดํฐ ์ผ๊ด์ฑ ๋ฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์ํด์ผ ํ๋ค.
- SQL Group Function์ ์ด์ฉํ์ฌ ํด๊ฒฐ ๊ฐ๋ฅํ์ง ๊ฒํ ํ๋ค.
- ์ ์ฅ๊ณต๊ฐ์ ์ง๋์น ๋ญ๋น๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค.
์ด๋ฒ ํฌ์คํ ์ ์ด๋ ๊ฒ ์ ๊ทํ์ ์ด์ด ๋ฐ์ ๊ทํ๊น์ง ์์ธํ ์์๋ณด์์ต๋๋ค.
์ ๊ทํ๋ ๋ ผ๋ฆฌ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์์ ์งํํ๊ณ , ์ดํ ๋ฌผ๋ฆฌ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ์์ ๋ฐ์ ๊ทํ๋ฅผ ์ํํ๋ค๋ ๊ฒ์ ์์๋์๋ฉด ๋๊ฒ ์ต๋๋ค.
๋๊ธ