๋ทฐ์ ๊ฐ์
๋ทฐ๋?
๊ด๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์์ ๋ทฐ๋ ํ๋์ ๊ฐ์ ๋ฆด๋ ์ด์ (ํฌํ์ ๊ฐ์ง ์์ ๋ฆด๋ ์ด์ )์ ์๋ฏธํจ
๋ทฐ๋ ๊ธฐ์กด์ ๊ธฐ๋ณธ ๋ฆด๋ ์ด์ ์ด๋ ๋ ๋ค๋ฅธ ๋ทฐ์ ๋ํ SELECT๋ฌธ์ ํํ๋ก ์ ์๋จ
๋ทฐ๋ ์์ฒด์ ์ผ๋ก ๋์คํฌ์ ์ ์ฅ๋ ํฌํ๋ค์ ๊ฐ๊ณ ์์ง ์์ง๋ง ์ฌ์ฉ์๊ฐ ์ง์ํ ์ ์๋ ๋ฆด๋ ์ด์
๋ง์ฝ ๊ธฐ๋ณธ ๋ฆด๋ ์ด์ ์ ํฌํ๋ค์ ๋ํ ๊ฐฑ์ ์ด ์ด๋ฃจ์ด์ง๋ฉด ํ์๋ ๋ทฐ์๋ ๋ฐ๋ก ์ํ๋จ
์ฐธ๊ณ ) ์ค๋ ์?
- ์ด๋ ์์ ์์ SELECT๋ฌธ์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ณธ ๋ฆด๋ ์ด์ ํํ๋ก ์ ์ฅํด๋์ ๊ฒ
- ๋ทฐ์ ๋ค๋ฅด๊ฒ ๊ธฐ๋ณธ ๋ฆด๋ ์ด์ ์ด ๊ฐฑ์ ์ด ๋๋๋ผ๋ ๋ณํ๊ฐ ์์
๋ทฐ์ ์ฅ์
1. ๋ทฐ๋ ๋ณต์กํ ์ง์๋ฅผ ๊ฐ๋จํ๊ฒ ํํํ ์ ์๊ฒ ํจ
Ex) ๋ทฐ์ ์ ์ ์์์์ ์ธ๊ธํ EMP_PLANNING ๋ทฐ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ธ ํด๋์ผ๋ฉด ๊ฐ๋จํ๊ฒ ๋ณ๊ฒฝ ๊ฐ๋ฅํจ
2. ๋ทฐ๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋๋ฐ ํ์ฉ๋จ
- WITH CHECK OPTION์ ์ฌ์ฉํ ๋ทฐ๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๋๋ฐ ์ฌ์ฉํ ์ ์์
- WITH CHECK OPTION์ ๋ทฐ๊ฐ ์ ํํ ์ ์๋ ํฌํ๋ค์ ์์ฑํ ์ ์๋๋ก ๋ณด์ฅํจ
- ๋ฐ๋ผ์ ์ฝ์ ๋๋ ๋ฐ์ดํฐ๋ ์์ ๋๋ ๋ฐ์ดํฐ์ ๋ํด ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด๊ณผ ๋ฐ์ดํฐ ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ์ํ๋ ์ ์๋๋ก ํจ
3. ๋ทฐ๋ ๋ฐ์ดํฐ ๋ ๋ฆฝ์ฑ์ ์ ๊ณตํจ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ๊ฐ ๋ฐ๋์ด๋ ๊ธฐ์กด ์ง์๋ฅผ ๋ค์ ์์ฑํ ํ์์ฑ์ ์ค์ด๋ ๋ฐ ์ฌ์ฉํ ์ ์์
- ์ฆ, ๋ทฐ๋ฅผ ์ ์ํ๋ ์ง์๋ง ๋ณ๊ฒฝํ๋ฉด ๋จ
Ex) EMPLOYEE ๋ฆด๋ ์ด์ ์ด ๋ ๊ฐ์ ๋ฆด๋ ์ด์ EMP1๊ณผ EMP2๋ก ๋ณ๊ฒฝ๋์๋ค๊ณ ํ๋ฉด?
=> EMP1๊ณผ EMP2์ ๋ํ SELECT๋ฌธ์ผ๋ก ๋ณ๊ฒฝํด์ผ ํจ. ํ์ง๋ง ๋ทฐ์ ์ ์๋ฅผ ๋ณ๊ฒฝํ๋ค๋ฉด? ๊ทธ๋ด ํ์๊ฐ ์์!
4. ๋ทฐ๋ ๋ฐ์ดํฐ ๋ณด์ ๊ธฐ๋ฅ์ ์ ๊ณตํจ
- ๋ทฐ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋๋ก ํ๊ธฐ ๋๋ฌธ์ ๋ณด์ ๋งค์ปค๋์ฆ์ผ๋ก ์ฌ์ฉํ ์ ์์
- ์ฌ์ฉ์์๊ฒ ๊ธฐ๋ณธ ๋ฆด๋ ์ด์ ์ ๊ทผ์ ํ๊ฐํ์ง ์๊ณ , ๊ทธ ๋์ ์ ๊ฐ ์ฌ์ฉ์๊ฐ ํ์๋กํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๊ตฌ์ฌํญ์ ๋ทฐ๋ก ์ ์ํ๊ณ , ๋ทฐ์ ๋ํ ๊ถํ์ ํ๊ฐํจ
- ์ฆ, SELECT ๋ฌธ์ผ๋ก ์ ํ์ ๋๊ธฐ ๋๋ฌธ์ ๋ฆด๋ ์ด์ ์ ์ผ๋ถ๋ง ์ ๊ทผํ๋๋ก ์ ํํ ์ ์์
๋ทฐ์ ๋จ์
- ๊ธฐ๋ณธ ๋ฆด๋ ์ด์ ์ ๋ํ ์ง์๋ณด๋ค ํ์คํ ์ฑ๋ฅ์ด ์์ข์์ง ์ ๋ฐ์ ์์
- ๋ทฐ์ ๋ํ ์ง์๋ ๊ธฐ๋ณธ ๋ฆด๋ ์ด์ ์ ๋ํ ์ง์๋ก ๋ณ๊ฒฝ๋๊ธฐ ๋๋ฌธ
๋ทฐ์ ์ ์
CREATE VIEW ๋ทฐ์ด๋ฆ [์ ํธ๋ฆฌ๋ทฐํธ๋ค]
AS SELECT๋ฌธ
[ WITH CHECK OPTION ];
- ์ ํธ๋ฆฌ๋ทฐํธ๋ฅผ ์๋ตํ๋ฉด ๋ทฐ๋ฅผ ์ ์ํ๋๋ฐ ์ฌ์ฉํ SELECT์ ์ ์ด๊ฑฐ๋ ์ ํธ๋ฆฌ๋ทฐํธ์ ์ด๋ฆ๊ณผ ๋์ผํ๊ฒ ํฌํจ๋จ
- ํ์ง๋ง ๋ทฐ์ ์ ์์ ์กฐ์ธ์ด ํฌํจ๋์ด ์๊ณ ๋ ๊ฐ ์ด์์ ๋ค๋ฅธ ๋ฆด๋ ์ด์ ์ผ๋ก๋ถํฐ ๊ฐ์ ธ์จ ์ ํธ๋ฆฌ๋ทฐํธ์ ์ด๋ฆ์ด ๊ฐ๋ค๋ฉด ๋ชจ๋ ์ ํธ๋ฆฌ๋ทฐํธ์ ์ด๋ฆ์ ์ง์ ํด์ผ ํจ
- ๋ทฐ์์ด ์ด๋ฆ๊ณผ ๊ธฐ๋ณธ ๋ฆด๋ ์ด์ ์ ์ด๋ฆ์ด ๊ฐ์์๋ ์๋จ
- ๋ทฐ์ ์ ์๋ฌธ์์๋ SELECT๋ฌธ์ ORDER BY์ ์ ์ฌ์ฉํ ์ ์์
- OPTION์ ๋ทฐ๋ฅผ ํฌํ์ ์ฝ์ ํ ๋์ ์กฐ๊ฑด์ ๋ช ์
Ex) ๊ธฐํ๋ถ์ ๊ทผ๋ฌดํ๋ ์ฌ์๋ค์ ์ด๋ฆ, ์ง์ฑ , ๊ธ์ฌ๋ก ์ด๋ฃจ์ด์ง ๋ทฐ
=> ๋ทฐ์ ์ ์์๋ ๋ทฐ์ ์ ํธ๋ฆฌ๋ทฐํธ๋ค์ ๋ณ๋๋ก ๋ช ์ํ์ง ์์๊ธฐ์ ๊ธฐ๋ณธ ๋ฆด๋ ์ด์ ์ ์ ํธ๋ฆฌ๋ทฐํธ ์ด๋ฆ๊ณผ ๊ฐ์
๋ทฐ์ ๊ฐฑ์
๋ทฐ์ ๋ํ ๊ฐฑ์ ๋ ๊ธฐ๋ณธ ๋ฆด๋ ์ด์ ์ ๋ํ ๊ฐฑ์ ์ผ๋ก ๋ณํ๋จ
๊ฐฑ์ ์ด ๋ถ๊ฐ๋ฅํ ๋ทฐ
1. ๊ธฐ๋ณธํค๊ฐ ํฌํจ๋์ง ์์ ๋ทฐ
- ๊ธฐ๋ณธ ํค๊ฐ ํฌํจ๋์ง ์์์ผ๋ฏ๋ก ๋ทฐ์ ๋ํ INSERT๋ฌธ์์ ๊ธฐ๋ณธํค ๊ฐ์ ์ง์ ํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํจ
- ๊ธฐ๋ณธ ํค์ ๊ฐ์ด ์์ผ๋ฏ๋ก ์ํฐํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ์๋ฐฐํจ
2. ๋ทฐ์ ํฌํจ๋์ง ์์ ์ ํธ๋ฆฌ๋ทฐํธ์ ๋ํด NOT NULL์ด ์ง์ ๋์์ ๋
- ๋ง์ฝ ๊ฐฑ์ ์ด ์ด๋ฃจ์ด์ก์ ๋, ํด๋น ์ ํธ๋ฆฌ๋ทฐํธ์ NULL ๊ฐ์ด ๋ค์ด๊ฐ ์ ๋ฐ์ ์์
- ๋ฐ๋ผ์ ๊ทธ ํฌํ์ ์ฝ์ ์ด ๊ฑฐ์ ๋จ
3. ์ง๋จ ํจ์๊ฐ ํฌํจ๋ ๋ทฐ
4. ์กฐ์ธ์ผ๋ก ์ ์๋ ๋ทฐ
VIEW์ DBMS
๋ทฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ ๋ ๊ด๊ณ DBMS๋ ์ด๋ค ๊ณผ์ ์ ๊ฑฐ์น ๊น?
- ์์คํ ์นดํ๋ก๊ทธ๋ก๋ถํฐ ๋ทฐ์ ์ ์, ์ฆ SELECT๋ฌธ์ ๊ฒ์ํจ
- ๊ธฐ๋ณธ ๋ฆด๋ ์ด์ ์ ๋ํ ๋ทฐ์ ์ ๊ทผ ๊ถํ์ ๊ฒ์ฌํจ
- ๋ทฐ๋ฅผ ํตํ ๊ฒ์์ด๋ ์์ ์ ๊ธฐ๋ณธ ๋ฆด๋ ์ด์ ์ ํตํด์ ์ํ๋จ
- ๋ง์ฝ ๋ทฐ์ ์ ์๋ ์ ํธ๋ฆฌ๋ทฐํธ๊ฐ ์ผ๋ถ์ ๋ถ๊ณผํ๋ค๋ฉด SELECT์์ '*'๋ฅผ ๋ช ์ํ์ด๋ ์ผ๋ถ์๋ง ์ง์๋ฌธ์ด ์ด๋ฃจ์ด์ง
- ๋ทฐ๊ฐ ๋ ์ด์ ํ์ ์๊ฑฐ๋ ๋ทฐ์ ์์ฑ์๊ฐ ๋ทฐ์ ์ ์์์ ์ฐธ์กฐ๋ ๊ธฐ๋ณธ ๋ฆด๋ ์ด์ ์ ๋ํ SELECT ๊ถํ์ ์์ผ๋ฉด ๋ทฐ๋ฅผ ์ญ์
- ๋ทฐ๋ฅผ ์ ๊ฑฐํ๋ ์ง์๋ฌธ์ DROP VIEW ๋ทฐ์ด๋ฆ;
Reference
ORACLE์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฐ์ํฐ, ํ์๊ฒฝ ์ง์, ์๋ฅ์ถํ