etc/์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ] ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
minzhen
2022. 7. 19. 19:48
โผ ์ง๋ ํฌ์คํ ๋ณด๊ธฐ
์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ - ์ 2๊ณผ๋ชฉ ๋ฐ์ดํฐ ์ ์ถ๋ ฅ ๊ตฌํ
1. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์
2. ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ E-R ๋ชจ๋ธ
3. ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
2์ฐจ์์ ์ธ ํ๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ ์ํธ๊ด๊ณ๋ฅผ ์ ์ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- 1970๋ IBM์ ๊ทผ๋ฌดํ๋ ์ฝ๋(E.F.Codd)์ ์ํด ์ฒ์ ์ ์๋จ
ํน์ง
- ์ฅ์ : ๊ฐ๊ฒฐํ๊ณ ๋ณด๊ธฐ ํธ๋ฆฌํ๋ฉฐ, ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก์ ๋ณํ์ด ์ฉ์ดํจ
- ๋จ์ : ์ฑ๋ฅ์ด ๋ค์ ๋จ์ด์ง
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฆด๋ ์ด์ ๊ตฌ์กฐ
- Relation(๋ฆด๋ ์ด์ ) : ๋ฐ์ดํฐ๋ค์ ํ(table)์ ํํ๋ก ํํํ ๊ฒ์ผ๋ก, ๊ตฌ์กฐ๋ฅผ ๋ํ๋ด๋ ๋ฆด๋ ์ด์ ์คํค๋ง์ ์ค์ ๊ฐ๋ค์ธ ๋ฆด๋ ์ด์ ์ธ์คํด์ค๋ก ๊ตฌ์ฑ๋จ
- Tuple (ํํ) : ๊ฐ ํ
- Cardinality (์นด๋๋๋ฆฌํฐ) : (=๊ธฐ์, ๋์์) ํํ์ ์
- Attribute (์์ฑ) : ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ์ฅ ์์ ๋ ผ๋ฆฌ์ ๋จ์
- Degree (๋๊ทธ๋ฆฌ) : (=์ฐจ์) ์์ฑ์ ์
- Domain (๋๋ฉ์ธ) : ํ๋์ ์์ฑ์ด ์ทจํ ์ ์๋ ๊ฐ์ ํ์ ์ ์์๊ฐ๋ค์ ์งํฉ (ex: ‘์ฑ๋ณ’ ์ ํธ๋ฆฌ๋ทฐํธ์ ๋๋ฉ์ธ์ ‘๋จ’, ‘์ฌ’๋ก, ๊ทธ ์ธ์ ๊ฐ์ ์ ๋ ฅ๋ ์ ์์)
๋ฆด๋ ์ด์ ์ ํน์ง
- ํ ๋ฆด๋ ์ด์ ์ ๋๊ฐ์ ํํ์ด ํฌํจ๋ ์ ์์ผ๋ฏ๋ก ๋ฆด๋ ์ด์ ๋ด์ ํํ์ ๋ชจ๋ ์์ดํ๋ค.
- ํ ๋ฆด๋ ์ด์ ์์ ํํ๋ค ์ฌ์ด์๋ ์์๊ฐ ์๋ค.
- ์์ฑ์ ์ ์ผํ ์๋ณ์ ์ํด ์์ฑ์ ๋ช ์นญ์ ์ ์ผํด์ผ ํ๋ค.
- ๋ฆด๋ ์ด์ ์ ํํ๋ค์ ์ ์ผํ๊ฒ ์๋ณํ๊ธฐ ์ํด ์์ฑ๋ค์ ๋ถ๋ถ์งํฉ์ key๋ก ์ค์ ํ๋ค.
- ์์ฑ์ ๊ฐ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ ์ด์ ์ชผ๊ฐค ์ ์๋ ์์๊ฐ์ ์ ์ฅํ๋ค.
๊ด๊ณ ๋ชจ๋ธ์ ํ
์ด๋ธ์ Relation ↔ ๊ฐ์ฒด๊ฐ์ ๊ด๊ณ๋ Relationship
๊ด๊ณํ ๋ฐ์ดํฐ ๋ชจ๋ธ
Relational Data Model
: 2์ฐจ์์ ์ธ ํ๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ ์ํธ๊ด๊ณ๋ฅผ ์ ์ํ๋ DB๊ตฌ์กฐ
ํน์ง
- ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ๋ชจ๋ธ
- Primary Key(๊ธฐ๋ณธ ํค)์ ์ด๋ฅผ ์ฐธ์กฐํ๋ Foreign Key(์ธ๋ ํค)๋ก ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ํํํจ
- ๊ณ์ธต ๋ชจ๋ธ๊ณผ ๋ง ๋ชจ๋ธ์ ๋ณต์กํ ๊ตฌ์กฐ๋ฅผ ๋จ์ํ์ํจ ๋ชจ๋ธ
- ๊ด๊ณํ ๋ชจ๋ธ์ ๋ํ์ ์ธ ์ธ์ด๋ SQL
- 1:1, 1:N, N:M ๊ด๊ณ๋ฅผ ์์ ๋กญ๊ฒ ํํํ ์ ์์
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฝ ์กฐ๊ฑด
1. Key
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํํ์ ์ฐพ๊ฑฐ๋ ์์๋๋ก ์ ๋ ฌํ ๋ ๊ธฐ์ค์ด ๋๋ ์์ฑ
- ํ๋ณดํค (Candidate Key) : ์์ฑ๋ค ์ค์์ ํํ์ ์ ์ผํ๊ฒ ์๋ณํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์์ฑ๋ค์ ๋ถ๋ถ์งํฉ
- ๊ธฐ๋ณธํค๋ก ์ฌ์ฉ ๊ฐ๋ฅ
- ์ ์ผ์ฑ(Unique) ๋ง์กฑ : ํ๋์ ํค ๊ฐ์ผ๋ก ํ๋์ ํํ๋ง์ ์ ์ผํ๊ฒ ์๋ณ
- ์ต์์ฑ(Mnimality) ๋ง์กฑ : ์์ฑ ํ๋๋ฅผ ์ ๊ฑฐํ๋ฉด ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋๋ก, ๊ผญ ํ์ํ ์ต์์ ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋์ด์ผ ํจ
- ๊ธฐ๋ณธํค (Primary Key) : ํ๋ณดํค ์ค์ ํน๋ณํ ์ ์ ๋ ์ฃผํค
- ์ค๋ณต๋ ๊ฐ์ ๊ฐ์ง ์ ์์
- NULL ๊ฐ์ ๊ฐ์ง ์ ์์
- ํ ๋ฆด๋ ์ด์ ์์ ํน์ ํํ์ ์ ์ผํ๊ฒ ๊ตฌ๋ณํ ์ ์๋ ์์ฑ
- ๋์ฒดํค (Alternate Key) : ํ๋ณดํค๊ฐ ๋ ์ด์์ผ ๋ ๊ธฐ๋ณธํค๋ฅผ ์ ์ธํ ๋๋จธ์ง ํ๋ณดํค (= ๋ณด์กฐํค)
- ์ํผํค (Super Key) : ํ ๋ฆด๋ ์ด์
๋ด์ ์๋ ์์ฑ๋ค์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋ ํค
- ๋ชจ๋ ํํ์ ๋ํด ์ ์ผ์ฑ์ ๋ง์กฑํ์ง๋ง, ์ต์์ฑ์ ๋ง์กฑํ์ง ๋ชปํจ
- ์ธ๋ํค (Foreign Key) : ๋ค๋ฅธ ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธํค๋ฅผ ์ฐธ์กฐํ๋ ์์ฑ ๋๋ ์์ฑ๋ค์ ์งํฉ
2. Integrity (๋ฌด๊ฒฐ์ฑ)
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ๊ณผ ํ์ค ์ธ๊ณ์ ์ค์ ๊ฐ์ด ์ผ์นํ๋ ์ ํ์ฑ
๋ฌด๊ฒฐ์ฑ์ ์ข ๋ฅ
- ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ : ๊ธฐ๋ณธ ํ ์ด๋ธ ๊ธฐ๋ณธํค์ ์ด๋ค ์์ฑ๋ NULL๊ฐ์ด๋ ์ค๋ณต๊ฐ์ ๊ฐ์ง ์ ์์
- ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ : ์ธ๋ํค ๊ฐ์ Null์ด๊ฑฐ๋ ์ฐธ์กฐ ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธํค๊ฐ๊ณผ ๋์ผํด์ผ ํจ. ์ฆ, ๋ฆด๋ ์ด์ ์ ์ฐธ์กฐํ ์ ์๋ ์ธ๋ํค๊ฐ์ ๊ฐ์ง ์ ์์
- ๋๋ฉ์ธ ๋ฌด๊ฒฐ์ฑ : ์ฃผ์ด์ง ์์ฑ ๊ฐ์ด ์ ์๋ ๋๋ฉ์ธ์ ์ํ ๊ฐ์ด์ด์ผ ํ๋ค๋ ๊ท์
- ์ฌ์ฉ์ ์ ์ ๋ฌด๊ฒฐ์ฑ : ์์ฑ ๊ฐ๋ค์ด ์ฌ์ฉ์๊ฐ ์ ์ํ ์ ์ฝ์กฐ๊ฑด์ ๋ง์กฑ๋์ด์ผ ํ๋ค๋ ๊ท์
- NULL ๋ฌด๊ฒฐ์ฑ : ๋ฆด๋ ์ด์ ํน์ ์์ฑ ๊ฐ์ด NULL์ด ๋ ์ ์๋๋ก ํ๋ ๊ท์
- ๊ณ ์ ๋ฌด๊ฒฐ์ฑ : ๋ฆด๋ ์ด์ ํน์ ์์ฑ์ ๋ํด ๊ฐ ํํ์ด ๊ฐ๋ ์์ฑ๊ฐ๋ค์ด ๋ชจ๋ ๋ฌ๋ผ์ผ ํจ
- ํค ๋ฌด๊ฒฐ์ฑ : ํ๋์ ๋ฆด๋ ์ด์ ์๋ ์ ์ด๋ ํ๋์ Key๊ฐ ์กด์ฌํด์ผ ํจ
- ๊ด๊ณ ๋ฌด๊ฒฐ์ฑ : ๋ฆด๋ ์ด์ ์ ์ด๋ ํ ํํ์ ์ฝ์ ๊ฐ๋ฅ ์ฌ๋ถ ๋๋ ๋ฆด๋ ์ด์ ๊ฐ์ ํํ๋ค ์ฌ์ด์ ๊ด๊ณ์ ๋ํ ์ ์ ์ฑ ์ฌ๋ถ๋ฅผ ์ง์ ํ ๊ท์
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๊ฐํ
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ฐ์ดํฐ ํ์ง์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ฏ๋ก → ๋ฐ์ดํฐ ํน์ฑ์ ๋ง๋ ์ ์ ํ ๋ฌด๊ฒฐ์ฑ์ ์ ์ํ๊ณ ๊ฐํํด์ผ ํจ
- ๋ฌด๊ฒฐ์ฑ ๊ฐํ ๋ฐฉ๋ฒ : ์ ํ๋ฆฌ์ผ์ด์ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋ฆฌ๊ฑฐ, ์ ์ฝ ์กฐ๊ฑด