[DB] ๐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด ๐ต๏ธ ์ ๋ฆฌ
๋ฌด๊ฒฐ์ฑ
- ๋ฐ์ดํฐ์ ์ ํ์ฑ ๋๋ ์ ํจ์ฑ์ ์๋ฏธ
- ์ผ๊ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๋ฅผ ์ ์ํ๋ ๊ท์น๋ค์ ๋ฌต์์ ์ผ๋ก ๋๋ ๋ช ์์ ์ผ๋ก ์ ์ํจ
๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด
โ
1. ๋๋ฉ์ธ ์ ์ฝ์กฐ๊ฑด(domain constraint)
- ๊ฐ ์ ํธ๋ฆฌ๋ทฐํธ ๊ฐ์ด ๋ฐ๋์ ์์๊ฐ์ด์ด์ผ ํจ
- ์ ํธ๋ฆฌ๋ทฐํธ ๊ฐ์ ๋ํดํธ ๊ฐ, ๊ฐ๋ฅํ ๊ฐ๋ค์ ๋ฒ์ ๋ฑ์ ์ง์ ํ ์ ์์
2. ํค ์ ์ฝ์กฐ๊ฑด(key constraint)
- ํค ์ ํธ๋ฆฌ๋ทฐํธ์ ์ค๋ณต๋ ๊ฐ์ด ์กด์ฌํด์๋ ์๋จ
-> ๊ธฐ๋ณธํค๊ฐ ์๋
3. ์ํฐํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด(entity integrity constraint)
- ์ํฐํฐ : ๋ฐ์ดํฐ ์งํฉ (์ฌ์, ๋ถ์, ๊ณ ๊ฐ, ์ํ...)
- ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธ ํค๋ฅผ ๊ตฌ์ฑํ๋ ์ด๋ค ์ ํธ๋ฆฌ๋ทฐํธ๋ ๋๊ฐ์ ๊ฐ์ง ์ ์์
- ๋์ฒด ํค์๋ ์ ์ฉ๋์ง ์์
4. ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด(referential integrity constraint)
- ๋ ๋ฆด๋ ์ด์ ์ ์ฐ๊ด๋ ํฌํ๋ค ์ฌ์ด์ ์ผ๊ด์ฑ์ ์ ์งํ๋๋ฐ ์ฌ์ฉ๋จ
- ๋ฆด๋ ์ด์
R2์ ์ธ๋ ํค๊ฐ ๋ฆด๋ ์ด์
R1์ ๊ธฐ๋ณธ ํค๋ฅผ ์ฐธ์กฐํ ๋, ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ์๋์ ๋ ์กฐ๊ฑด ์ค ํ๋๊ฐ ์ฑ๋ฆฝ๋๋ฉด ๋ง์กฑ๋จ.
1) ์ธ๋ ํค์ ๊ฐ์ R1์ ์ด๋ค ํฌํ์ ๊ธฐ๋ณธ ํค ๊ฐ๊ณผ ๊ฐ๋ค
2) ์ธ๋ ํค๊ฐ ์์ ์ ํฌํจํ๊ณ ์๋ ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธ ํค๋ฅผ ๊ตฌ์ฑํ๊ณ ์์ง ์์ผ๋ฉด ๋๊ฐ์ ๊ฐ์ง๋ค.
๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ์ ์ง
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๊ฐฑ์ ์ฐ์ฐ : ์ฝ์ ์ฐ์ฐ, ์ญ์ ์ฐ์ฐ, ์์ ์ฐ์ฐ
- DBMS๋ ๊ฐ๊ฐ์ ๊ฐฑ์ ์ฐ์ฐ์ ๋ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด๋ค์ ๋ง์กฑํ๋๋ก ํ์ํ ์กฐ์น๋ฅผ ์ทจํจ
- DBMS๋ ์ธ๋ ํค๊ฐ ๊ฐฑ์ ๋๊ฑฐ๋, ์ฐธ์กฐ๋ ๊ธฐ๋ณธ ํค๊ฐ ๊ฐฑ์ ๋์์ ๋ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ด ์๋ฐฐ๋์ง ์๋๋ก ์กฐ์น
DEPARTMENT : ์ฐธ์กฐ๋ ๋ฆด๋ ์ด์ (๋ถ๋ชจ)
EMPLOYEE : ์ฐธ์กฐํ๋ ๋ฆด๋ ์ด์ (์์)
ex) ์ธ๋ํค๊ฐ ์๊ฒผ๋ค -> 1 ๋ ๋ค ๊ด๊ณ
1 ๋ ๋ค์์ ์ถ๊ฐ๋๋ ์ด์ ์ฐธ์กฐ ํค์ ๋ง์ถฐ์ ์ถ๊ฐ. ์ญ์ ๋ ๋๋ ์๊ด์์
- ์์์ ์ฝ์ , ์์ ์ฐธ์กฐ๋ฌด๊ฒฐ์ฑ ์ ๊ฒฝO (๋ถ๋ชจ ๊ธฐ๋ณธํค์ ๋ง์ถฐ์ ํด์ผํจ)
- ์์์ ์ญ์ ๋ ์ฐธ์กฐ๋ฌด๊ฒฐ์ฑ ์ ๊ฒฝX
- ๋ถ๋ชจ์ ์ญ์ ๋ ์ ๊ฒฝO (์์ ์ธ๋ํค์ ์ํฅ)
- ๋ถ๋ชจ์ ์ฝ์ ์ ๊ฒฝX
์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ๋ง์กฑ์ํค๊ธฐ ์ํด์ DBMS๊ฐ ์ ๊ณตํ๋ ์ต์
1. ์ ํ(restricted)
- ์๋ฐฐ๋ฅผ ์ผ๊ธฐํ ์ฐ์ฐ์ ๋จ์ํ ๊ฑฐ์
- ์: DEPARTMENT ๋ฆด๋ ์ด์ ์์ (3, ๊ฐ๋ฐ, 9)๋ฅผ ์ญ์ ํ๋ฉด ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ์๋ฐฐํ๊ฒ ๋๋ฏ๋ก ์ญ์ ์ฐ์ฐ์ ๊ฑฐ์
โ
2. ์ฐ์(cascade)
- ์ฐธ์กฐ๋๋ ๋ฆด๋ ์ด์ ์์ ํฌํ์ ์ญ์ ํ๊ณ , ์ฐธ์กฐํ๋ ๋ฆด๋ ์ด์ ์์ ์ด ํฌํ์ ์ฐธ์กฐํ๋ ํฌํ๋ค๋ ํจ๊ป ์ญ์
- ์: DEPARTMENT ๋ฆด๋ ์ด์ ์์ (3, ๊ฐ๋ฐ, 9)๋ฅผ ์ญ์ ํ๋ฉด EMPLOYEE ๋ฆด๋ ์ด์ ์์ ๋ถ์๋ฒํธ 3์ ์ฐธ์กฐํ๋ ๋ ๋ฒ์งธ ํฌํ๊ณผ ๋ค์ฏ ๋ฒ์งธ ํฌํ๋ ํจ๊ป ์ญ์
- ๋ถ์ 3์ด ์ญ์ ๋๋ฉด ๋ธ๋ ค์ค๋ ๊ฒ๋ ๋ค ์ญ์ -> ์ฐ์
- ๋ถ์ ๋ฒํธ๋ฅผ 5๋ก ์์ ํ๋ฉด ์ฐ๊ด๋์ด์๋ ๊ฑธ ๋ค 5๋ก ์์
- ๊ธฐ๋ณธ ์ญ์ ๋ ์ ํ์ด ๋ํดํธ๊ณ , ์์ ์ ์ฐ์๊ฐ ๋ํดํธ๋ก ์์ฉํ๋ค.
3. ๋๊ฐ(nullify)
- ์ฐธ์กฐ๋๋ ๋ฆด๋ ์ด์ ์์ ํฌํ์ ์ญ์ ํ๊ณ , ์ฐธ์กฐํ๋ ๋ฆด๋ ์ด์ ์์ ์ด ํฌํ์ ์ฐธ์กฐํ๋ ํฌํ๋ค์ ์ธ๋ ํค์ ๋๊ฐ์ ์ฝ์
์: DEPARTMENT ๋ฆด๋ ์ด์ ์์ (3, ๊ฐ๋ฐ, 9)๋ฅผ ์ญ์ ํ๋ฉด EMPLOYEE ๋ฆด๋ ์ด์ ์์ ๋ถ์๋ฒํธ 3์ ์ฐธ์กฐํ๋ ๋ ๋ฒ์งธ ํฌํ๊ณผ ๋ค์ฏ ๋ฒ์งธ ํฌํ์ ๋ถ์๋ฒํธ์ ๋๊ฐ์ ์ฝ์
4. ๋ํดํธ๊ฐ
- ๋๊ฐ์ ๋ฃ๋ ๋์ ์ ๋ํดํธ๊ฐ์ ๋ฃ๋๋ค๋ ๊ฒ์ ์ ์ธํ๊ณ ๋ ๋ฐ๋ก ์์ ์ต์ ๊ณผ ๋น์ทํจ