์ด์ ํฌ์คํ
https://rkdrkd-history.tistory.com/20
7. ํค(key) ์ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด
1. ํค์ ๊ฐ๋
ํค: ๊ด๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํํ์ ์๋ณํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์์ฑ์ด๋ ์์ฑ์ ์งํฉ
ํค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐธ์กฐ, ๊ฒ์ ์ ์ด์ฉ๋๋ค.
2. ํค์ ์ข ๋ฅ
2-1. ํ๋ณด ํค(Candidate Key)
์ ์: ๋ฆด๋ ์ด์ ์์ ๊ฐ ํํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ์์ฑ์ด๋ ์์ฑ์ ์งํฉ
ํ๋ณดํค๊ฐ ๋ ์ ์๋ ์กฐ๊ฑด์ ์ ์ผ์ฑ๊ณผ ์ต์์ฑ์ ๋ง์กฑํด์ผ ํ๋ค.
2-2. ๊ธฐ๋ณธ ํค(Primary Key)
์ ์: ํ๋ณดํค ์ค์์ ํํ์ ์๋ณํ๊ธฐ ์ํค ํน๋ณํ ์ ์ ๋ ํค
- ๊ธฐ๋ณธํค๋ ์ค๋ณต๋ ์ ์์ผ๋ฉฐ, NULL ๊ฐ์ ๊ฐ์ง์ง ์๋๋ค.
- ์ ์ผ์ฑ๊ณผ ์ต์์ฑ์ ๋ง์กฑํด์ผ ํ๋ค.
2-3. ๋์ฒด ํค(Alternate Key)
์ ์: ํ๋ณดํค ์ค์์ ๊ธฐ๋ณธํค๋ฅผ ์ ์ธํ ์์ฑ
2-4. ์ธ๋ ํค(Foreign Key)
์ ์: ํ๋์ ํ ์ด๋ธ์์ ์ํ๋ ์๋ฃ๋ฅผ ์ป์ง ๋ชปํ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ํ ์ด๋ธ์ ์ฐธ์กฐ(์ด์ฉ)ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์์ฑ
- ์ธ๋ํค๋ ์ฐธ์กฐ ๋ฆด๋ ์ด์ (ํ ์ด๋ธ)์ ๊ธฐ๋ณธํค์ ๊ฐ์์ผ ํ๋ค.
- ์ธ๋ํค๋ NULL ๊ฐ์ด ์ฌ ์ ์๋ค.
- ์ธ๋ํค์ ์์ฑ๋ช ๊ณผ ์ฐธ์กฐ ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธํค ์์ฑ๋ช ์ ์๋ก ๋ฌ๋ผ๋ ๋ฌด๋ฐฉํ๋ค.
2-5. ์ํผ ํค(Super Key)
์ ์: ํ ๋ฆด๋ ์ด์ ๋ด์ ํํ๋ค์ ์๋ณ ํ ์ ์๋ ํ๋ณดํค์ ๋ค๋ฅธ ์์ฑ๋ค๊ณผ์ ๋ชจ๋ ์กฐํฉ์ ๋ปํ๋ค.
- ์ ์ผ์ฑ์ ๋ง์กฑํ์ง๋ง, ์ต์์ฑ์ ๋ง์กฑํ์ง ์๋๋ค.
3. ๋ฌด๊ฒฐ์ฑ(Integrity) ์ ์ฝ์กฐ๊ฑด
๋ฌด๊ฒฐ์ฑ: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฃ์ ์ค๋ฅ ์๋ ์ ํ์ฑ๊ณผ ์์ ์ฑ์ ๋ํ๋ด๋ ๊ฒ
๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ์ ํ์ฑ๊ณผ ์์ ์ฑ์ ์ ์งํ๊ธฐ ์ํ ์ ์ฝ์กฐ๊ฑด์ด๋ค.
3-1. ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ
- ๊ธฐ๋ณธํค๋ NULL ๊ฐ์ด ์ฌ์ ์์ผ๋ฉฐ, ์ค๋ณต๋ ์ ์์์ ๋ํ๋ด๋ ์ ์ฝ ์กฐ๊ฑด
- ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ์ ๊ฐ์ฒด๋ฅผ ์๋ณํ๊ธฐ ์ํด ์ค๋ฅ๊ฐ ์๋๋ก ํ๊ธฐ ์ํ ์ ์ฝ์กฐ๊ฑด์ด๋ค.
3-2. ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ
- ์ธ๋ํค๋ NULL ๊ฐ์ด ์ฌ ์ ์์ผ๋ฉฐ, ์ฐธ์กฐ ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธํค์ ๊ฐ์์ผ ํ๋ ์ ์ฝ์กฐ๊ฑด์ด๋ค
- ํ ์ด๋ธ ์ฐธ์กฐ ์ ์ค๋ฅ๊ฐ ์๋๋ก ํ๊ธฐ ์ํ ์ ์ฝ์กฐ๊ฑด
3-3. ๋๋ฉ์ธ ๋ฌด๊ฒฐ์ฑ
- ๋ฆด๋ ์ด์ ์์ ์์ฑ๊ฐ์ ๋ฒ์๊ฐ ์ ์๋ ๊ฒฝ์ฐ ๊ทธ ์์ฑ๊ฐ์ ์ ํด์ง ๋ฒ์ ์ด๋ด์ ๊ฐ์ผ๋ก ๊ตฌ์ฑํด์ผ ํ๋ ์ ์ฝ ์กฐ๊ฑด
- ๋์ผํ ์์ฑ์ ๋ํด ๋ฐ์ดํฐ ํ์ ๊ณผ ๋ฐ์ดํฐ ๊ธธ์ด๊ฐ ๋์ผํด์ผ ํ๋ค.
3-4. ๊ณ ์ (Unique) ๋ฌด๊ฒฐ์ฑ
- ํน์ ์์ฑ์ ๋ํด ๊ณ ์ ํ ๊ฐ์ ๊ฐ์ง๋๋ก ์กฐ๊ฑด์ด ์ฃผ์ด์ง ๊ฒฝ์ฐ, ๊ทธ ์์ฑ๊ฐ์ ๋ชจ๋ ๋ฌ๋ผ์ผ ํ๋ ์ ์ฝ ์กฐ๊ฑด
3-5. NULL ๋ฌด๊ฒฐ์ฑ
- ํน์ ์์ฑ๊ฐ์ NULL์ด ์ฌ์ ์๋ค๋ ์กฐ๊ฑด์ด ์ฃผ์ด์ง ๊ฒฝ์ฐ, ๊ทธ ์์ฑ๊ฐ์ NULL ๊ฐ์ด ์ฌ ์ ์๋ค๋ ์ ์ฝ์กฐ๊ฑด
3-6. ํค ๋ฌด๊ฒฐ์ฑ
- ํ ๋ฆด๋ ์ด์ ์๋ ์ต์ํ ํ๋์ ํค๊ฐ ์กด์ฌํด์ผ ํ๋ ์ ์ฝ ์กฐ๊ฑด
8. ๊ด๊ณ ๋ฐ์ดํฐ ์ฐ์ฐ
๊ด๊ณ ๋ฐ์ดํฐ ์ฐ์ฐ: ๊ด๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ์์ ์ฌ์ฉ๋๋ ์ฐ์ฐ
์ข ๋ฅ: ๊ด๊ณ ๋์, ๊ด๊ณ ํด์
1. ๊ด๊ณ ๋์(Relational Algebra)
๊ด๊ณ ๋์: ๋ฆด๋ ์ด์ ์์ ์ฌ์ฉ์๊ฐ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด ์ฐ์ฐ์๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ
์ข ๋ฅ: ์์ ๊ด๊ณ ์ฐ์ฐ์, ์ผ๋ฐ ์งํฉ ์ฐ์ฐ์
1-1. ์ ๋ ํธ(SELECT, σ)
- ๋ฆด๋ ์ด์ ์์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ํ์ ๋ถ๋ถ ์งํฉ(ํํ)์ ๊ตฌํ๊ธฐ ์ํ ์ฐ์ฐ
- ๊ฒฐ๊ณผ๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํํ๋ค๋ก ํ ์ด๋ธ์ด ๋ง๋ค์ด์ง๋ค.
- ์ฐ์ฐ ๊ธฐํธ๋ ์๊ทธ๋ง(σ) ๋ฅผ ์ด์ฉํ๋ค.
1-2. ํ๋ก์ ํธ(PROJECT, π)
- ๋ฆด๋ ์ด์ ์์ ์์ง์ ๋ถ๋ถ ์งํฉ(์์ฑ์ ๊ฐ)์ ๊ตฌํ๋ ์ฐ์ฐ์ผ๋ก ์ํ๋ ์์ฑ๋ง ์ถ์ถํ๊ธฐ ์ํ ์ฐ์ฐ
- ์ฐ์ฐ ๊ธฐํธ๋ ํ์ด(π)๋ฅผ ์ด์ฉํ๋ค.
1-3. ์กฐ์ธ(JOIN, โ)
- ๋ ํ ์ด๋ธ๋ก๋ถํฐ ์กฐ๊ฑด์ ๋ง๋ ๊ด๋ จ๋ ํํ๋ค์ ํ๋์ ํํ๋ก ์งํฉํ์ฌ ํ๋์ ํ ์ด๋ธ๋ก ๋ง๋๋ ์ฐ์ฐ
- ์ข ๋ฅ: ๋์ผ ์กฐ์ธ(Equi Join), ์์ฐ ์กฐ์ธ(Natural Join), ์ธ๋ถ ์กฐ์ธ(Outer Join) ๋ฑ ์ฌ๋ฌ ์ข ๋ฅ๊ฐ ์๋ค.
- ์ฐ์ฐ ๊ธฐํธ๋ โ์ ์ฌ์ฉํ๋ค.
1-3-1. ๋์ผ ์กฐ์ธ
- ๊ด๊ณ ์ฐ์ฐ์์ค '=' ์ฐ์ฐ์๋ง์ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด์ ํํํ๋ค.
- ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ์กฐ์ธ์ด๋ฉฐ, ๋ ํ ์ด๋ธ์ ๋ชจ๋ ์์ฑ์ ํฉํ ํ๋์ ํ ์ด๋ธ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด์ง๋ค(์ค๋ณต๋๋ ์์ฑ ํฌํจ).
1-3-2. ์์ฐ ์กฐ์ธ
- ๋์ผ ์กฐ์ธํ ๊ฒฐ๊ณผ์์ ์ค๋ณต๋๋ ์์ฑ์ ์ ๊ฑฐํ์ฌ ํํํ๋ค.
1-3-3. ์ธ๋ถ ์กฐ์ธ
- ์กฐ์ธ ์ ๋ ํ ์ด๋ธ ๊ฐ์ ๊ด๋ จ ์๋, ์กฐ๊ฑด์ ๋ง์ง ์๋ ํํ๋ ๊ฒฐ๊ณผ ํ ์ด๋ธ์ ํฌํจ์์ผ ์กฐ์ธํ๋ ๋ฐฉ๋ฒ์ผ๋ก ํด๋น ์๋ฃ๊ฐ ์๋ ๋ถ๋ถ์ NULL ๊ฐ์ด ์จ๋ค.
1-4. ๋๋น์ (DIVISION, ÷)
- A, B ๋ ํ ์ด๋ธ์ ๋ํด 'A DIVISION B' ๋ B ํ ์ด๋ธ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ ์ด๋ธ A ์์ ์ถ์ถํ๋ ์ฐ์ฐ
- ๊ฒฐ๊ณผ๋ ์ฐ์ฐ์ ์ฌ์ฉ๋ ์์ฑ์ ์ ์ธ๋๋ค.
- ์ฐ์ฐ ๊ธฐํธ๋ ÷ ๋ฅผ ์ด์ฉํ๋ค.
2. ๊ด๊ณ ํด์
๊ด๊ณ ํด์: ๋ฆด๋ ์ด์ ์์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํ ๊ณผ์ ์ ํํํ๋ ๊ฒ์ผ๋ก, ์ฐ์ฐ์ ์์ด ์ ์ํ๋ ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ ๋น์ ์ฐจ์ ์ธ์ด์ด๋ค.
์ข ๋ฅ: ํํ ๊ด๊ณ ํด์, ๋๋ฉ์ธ ๊ด๊ณ ํด์
ํ๊ธฐ ํ์: [๊ฒฐ๊ณผ๊ฐ | ์กฐ๊ฑด]
9. ์ด์(Anomaly) ์ ํจ์์ ์ข ์
์ด์: ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฌ ๋ ผ๋ฆฌ์ ์ค๊ณ ์ ํ๋์ ๋ฆด๋ ์ด์ ์ ๋ง์ ์์ฑ๋ค์ด ์กด์ฌํ์ฌ, ๋ฐ์ดํฐ ์ค๋ณต๊ณผ ์ข ์์ผ๋ก ์ธํด ๋ฐ์๋๋ ๋ฌธ์ ์ ๋ค
์ข ๋ฅ: ์ญ์ ์ด์, ์ฝ์ ์ด์, ๊ฐฑ์ ์ด์
1. ์ญ์ ์ด์
์ ์: ํ ์ด๋ธ์์ํ๋์ ์๋ฃ๋ฅผ ์ญ์ ํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ ๊ทธ ์๋ฃ๊ฐ ํฌํจ๋ ํํ์ด ์ญ์ ๋จ์ผ๋ก ์ธํด ์ํ์ง ์์ ์๋ฃ๊น์ง ํจ๊ป ์ญ์ ๊ฐ ์ด๋ฃจ์ด์ ธ ๋ฐ์ํ ๋ฌธ์
์ ๋ฆฌ
์ํ์ง ์๋ ์ ๋ณด๊ฐ ์์ค๋๋ ๋ฌธ์
2. ์ฝ์ ์ด์(Insertion Anomaly)
์ ์: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ฃ๋ฅผ ์ฝ์ ํ๋ ๊ณผ์ ์์ ์์น ์์ ์๋ฃ๊ฐ ์ฝ์ ๋๊ฑฐ๋, ์ฝ์ ์ ์๋ฃ๊ฐ ๋ถ์กฑํด ์ฝ์ ์ด ๋์ง ์์ ๋ฐ์ํ๋ ๋ฌธ์
์ ๋ฆฌ
์ํ์ง ์๊ฒ ์ฝ์
์ด ๋์ง ์๋ ํ์
3. ๊ฐฑ์ ์ด์(Update Anomaly)
์ ์: ์๋ฃ ๊ฐฑ์ ๊ณผ์ ์ค ์ ํํ์ง ์๊ฑฐ๋ ์ผ๋ถ์ ํํ๋ง ๊ฐฑ์ ๋จ์ผ๋ก ์ธํด ์ ๋ณด๊ฐ ๋ชจํธํด์ง๊ฑฐ๋ ์ผ๊ด์ฑ์ด ์์ด์ ธ ์ ํํ ์ ๋ณด ํ์ ์ด ์๋๋ ํ์
4. ํจ์์ ์ข ์(Functional Dependency)
ํจ์์ ์ข ์: ์ด๋ค ๋ฆด๋ ์ด์ A, B ๊ฐ ์์๋, ์์ ํํ์์ A์ ๊ฐ์ด B์ ๊ฐ์ ํจ์์ ์ผ๋ก ๊ฒฐ์ ํ๋ค๋ฉด, ์ฆ A์ ๊ฐ์ ์๋ฉด B์ ๊ฐ์ ์ ์ ์๊ฑฐ๋ A์ ๊ฐ์ ๋ฐ๋ผ B์ ๊ฐ์ด ๋ฌ๋ผ์ง๋ค๋ฉด B๋ A์ ํจ์์ ์ผ๋ก ์ข ์๋์๋ค๊ณ ํ๋ค
๊ธฐํธ: A -> B
A๊ฐ ๊ฒฐ์ ์, B๋ฅผ ์ข ์์ ๋ผ๊ณ ํ๋ค.
4-1. ์์ ํจ์ ์ข ์๊ณผ ๋ถ๋ถ ํจ์ ์ข ์์์ ํจ์ ์ข ์(Full Functional Dependency): ๋ฆด๋ ์ด์ ์์ ํ ์์ฑ์ด ์ค์ง ๊ธฐ๋ณธ ํค์๋ง ์ข ์์ด ๋๋ ๊ฒฝ์ฐ๋ถ๋ถ ํจ์ ์ข ์(Partial Functional Dependency): ๋ฆด๋ ์ด์ ์์ ํ ์์ฑ์ด ๊ธฐ๋ณธํค๊ฐ ์๋ ๋ค๋ฅธ ์์ฑ์ ์ข ์์ด ๋๊ฑฐ๋, ๊ธฐ๋ณธํค๋ค 2๊ฐ ์ด์ ํฉ์ฑ ํค(๋ณตํฉ ํค)๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ
4-2. ์ดํ์ ํจ์ ์ข ์์ดํ์ ํจ์ ์ข ์(Transitive Functional Dependency): ๋ฆด๋ ์ด์ A, B, C ์ธ๊ฐ์ง ์์ฑ ๊ฐ์ ์ข ์์ด A -> B, B -> C ์ผ๋,A -> C ๊ฐ ์ฑ๋ฆฝ์ด ๋๋ ๊ฒฝ์ฐ