๋ด๊ฐ ๋ณผ๋ ค๊ณ ์ ๋ฆฌํจ
1. ์ํฐํฐ์ ํน์ง
๋ค์ ์ค ์ํฐํฐ๊ฐ ๊ฐ๋ ํน์ง์ผ๋ก ์ ํฉํ์ง ์์ ๊ฒ์?
- ๋ค๋ฅธ ์ํฐํฐ์ 1๊ฐ ์ด์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค
- ๋ฐ๋์ ์์ฑ์ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค.
- `1๊ฐ ์ด์`์ ์ธ์คํด์ค๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค. => 2๊ฐ
- ์ ๋ํฌํจ์ ๋ณด์ฅํ ์ ์๋ ์๋ณ์๊ฐ ์์ด์ผ ํ๋ค.
ํ ๊ฐ์ ์ํฐํฐ๋ ๋ ๊ฐ ์ด์์ ์ธ์คํด์ค๋ฅผ ๊ฐ๋๋ค.
ํ ๊ฐ์ ์ธ์คํด์ค๋ ๋ ๊ฐ ์ด์์ ์์ฑ์ ๊ฐ๋๋ค.
ํ ๊ฐ์ ์์ฑ์ ํ๋์ ์์ฑ ๊ฐ์ ๊ฐ๋๋ค.
์ํฐํฐ : ํ ์ด๋ธ ์ ์ฒด (์: `๊ณ ๊ฐํ ์ด๋ธ`)
์ธ์คํดํธ : ํ (์: `๊ณ ๊ฐ 1๋ช `)
์์ฑ : ์ด (์: ๊ณ ๊ฐ์ `์ด๋ฆ`,`์ ํ๋ฒํธ`,`์ฃผ์`)
2. ๊ธฐ๋ณธ ์ํฐํฐ, ์ค์ฌ ์ํฐํฐ, ํ์ ์ํฐํฐ
๋ฐ์์์ ์ ๋ฐ๋ฅธ ๋ถ๋ฅ
`๊ธฐ๋ณธ ์ํฐํฐ`๋ ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑ๋์ด ์์ ๋ง์ ์ฃผ์๋ณ์๋ฅผ ๊ฐ์ง๋ฉฐ ๋ค๋ฅธ ์ํฐํฐ์ ๋ถ๋ชจ ์ญํ ์ ํ๊ฒ ๋๋ค. `์ค์ฌ ์ํฐํฐ`๋ ๊ธฐ๋ณธ ์ํฐํฐ๋ก๋ถํฐ ๋ฐ์๋์ด ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ฒ ๋๋ฉฐ ํ์ ์ํฐํฐ๋ฅผ ์์ฑํ๋ค. `ํ์์ํฐํฐ`๋ ๋ ๊ฐ ์ด์์ ๋ถ๋ชจ ์ํฐํฐ๋ก๋ถํฐ ํ์๋๊ณ ๋ณดํต ์ค๊ณ ์ด๊ธฐ ๋จ๊ณ๋ณด๋ค๋ ์์ธ ์ค๊ณ๋จ๊ณ์์ ๋ง์ด ๋์ถ๋๋ค.
+ ์ /๋ฌดํ์ ๋ฐ๋ฅธ ๋ถ๋ฅ : ์ ํ/๊ฐ๋ /์๊ฐ ์ํฐํฐ
3. ๊ธฐ๋ณธ์์ฑ, ์ค๊ณ์์ฑ, ํ์์์ฑ
๋ค์ ์ค ์์ฑ์ ํน์ฑ์ ๋ฐ๋ฅธ ๋ถ๋ฅ๋ก ๋ง์ง ์๋ ๊ฒ์?
1. ๊ธฐ๋ณธ์์ฑ - ์ํ์ด๋ฆ
2. ์ค๊ณ์์ฑ - ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ
3. ํ์์์ฑ - ์ด๋ฒคํธ์๋ชจ๊ฑด์
4. ๊ธฐ๋ณธ์์ฑ - ์ํ๊ฐ๊ฒฉ
์ค๊ณ์์ฑ์ ๋ชจ๋ธ๋ง์ ์ํด ์ธ์์ ์ผ๋ก ๋ง๋ค์ด์ ์ ์ํ ์์ฑ์ฒ๋ผ ์ผ๋ จ๋ฒํธ์ฒ๋ผ ์ ๋ํฌํ ์๋ณ์๋ฅผ ๋ถ์ฌํ๊ธฐ ์ํ ๊ฒ์ด ๋ชฉ์ ์ด๋ค. ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ๋ ์๋ ์กด์ฌํ๋ ์์ฑ์ด๋ฏ๋ก ๊ธฐ๋ณธ์์ฑ์ ์ํ๋ค.
๊ธฐ๋ณธ ์์ฑ :
ํ์ ์ํฐํฐ์์ ์ด๋ฆ, ํ๋ฒ, ์๋
์์ผ
์ํ ์ํฐํฐ์์ ์ํ๋ช
, ๊ฐ๊ฒฉ, ์ ์กฐ์ฌ
ํ์ ์์ฑ:
๋ฐ์ดํฐ ์กฐํ ์ ๋น ๋ฅธ ์ฑ๋ฅ ๋ณด์ฅํ๊ธฐ ์ํด ๋ณธ๋์ ์์ฑ๊ฐ์ ๊ณ์ฐํด์ ๋ฐ๋ก ์ ์ฅ ํ ์ ์๊ฒ ๋ง๋ ์์ฑ
ํ์ ์ํฐํฐ์์ ๋์ด๋ ์๋
์์ผ์ ๊ธฐ๋ฐ์ผ๋ก ๊ณ์ฐ๋ ์ ์์ผ๋ฏ๋ก ํ์ ์์ฑ
์ฃผ๋ฌธ ์ํฐํฐ์์ ์ด ๊ธ์ก์ ๊ฐ ์ํ ๊ฐ๊ฒฉ๊ณผ ์๋์ ๊ณฑํด ๊ณ์ฐ๋๋ ์์ฑ
์ค๊ณ์์ฑ: ์ฃผ๋ฌธ ID ๋ฑ
4. ์ํฐํฐ๊ฐ์ ๊ด๊ณ
๋ค์ ์ค ์ํฐํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ผ ๋ ํ๊ธฐํ๋ ํญ๋ชฉ์ ํด๋นํ์ง ์๋ ๊ฒ์?
1. ๊ด๊ณ๋ช
2. ๊ด๊ณ์ฐจ์
3. ๊ด๊ณํ์
4. ๊ด๊ณ์ ํ์ฌ์
๊ด๊ณ์ ํ๊ธฐ๋ฒ์๋ ๊ด๊ณ๋ช , ๊ด๊ณ์ฐจ์, ๊ด๊ณ์ ํ์ฌ์์ด ํฌํจ๋๋ค.
[Database] Data Modeling (IE Crow Foot Notation)
โญ๋๊ทธ๋ผ๋ฏธ ๋ถ์ ์ชฝ์ด optional (๊ด๊ณ์ ํ์ฌ์)
โญ๊น๋ง๊ท ๋ค๋ฆฌ ๋ถ์ ์ชฝ์ด ์์ ํ ์ด๋ธ
โญ์๋ณ์ ๊ด๊ณ๋ ์ค์ , ๋น์๋ณ์ ๊ด๊ณ๋ ์ ์
Barker ํ๊ธฐ๋ฒ์ ์ค๊ฐ์ ์ ์ข ๋ฅ๊ฐ ๋ฌ๋ผ์ง
Peter Chen ํ๊ธฐ๋ฒ์ ๊ฐ์ด๋ฐ ์ ๋ค์ด์
IDEF1X ํ๊ธฐ๋ฒ์ ์๋์ ๋ง๋ฆ๋ชจ๋ ์
Barker ํ๊ธฐ๋ฒ vs IE ํ๊ธฐ๋ฒ
5. ์๋ณ์(Identifiers)
์๋ณ์ ๋ถ๋ฅ ๋ฐฉ์
1. ๋ํ์ฑ ์ฌ๋ถ
์ฃผ์๋ณ์ : ์ ์ผ์ฑ, ์ต์์ฑ, ๋ถ๋ณ์ฑ, ์กด์ฌ์ฑ ๊ฐ์ง ๋ํ ์๋ณ์, ๋ค๋ฅธ ์ํฐํฐ์ ์ฐธ์กฐ ๊ด๊ณ๋ก ์ฐ๊ฒฐ
๋ณด์กฐ์๋ณ์ : ์ธ์คํดํธ ์๋ณํ ์ ์์ง๋ง ๋ํ์๋ณ์๋ ์๋, ๋ค๋ฅธ ์ํฐํฐ์ ์ฐธ์กฐ๊ด๊ณ๋ก ์ฐ๊ฒฐX
2. ์ค์ค๋ก ์์ฑ๋์๋์ง ์ฌ๋ถ
๋ด๋ถ์๋ณ์ : ์ํฐํฐ ๋ด๋ถ์์ ์ค์ค๋ก ์์ฑ
์ธ๋ถ์๋ณ์ : ๋ค๋ฅธ ์ํฐํฐ์์ ์จ ์๋ณ์, ์ฐ๊ฒฐ๊ณ ๋ฆฌ ์ญํ
3. ๋จ์ผ์์ฑ ์ฌ๋ถ
๋จ์ผ์๋ณ์ : ํ๋์ ์์์ผ๋ก ๊ตฌ์ฑ๋ ์๋ณ์
๋ณตํฉ์๋ณ์ : ๋ ๊ฐ ์ด์์ ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋ ์๋ณ์
4. ๋์ฒด ์ฌ๋ถ
โญ์์กฐ์๋ณ์ : ์ ํธ ํ๋ก์ธ์ค์ ์กด์ฌํ๋ ์๋ณ์, ๊ฐ๊ณต๋์ง ์์ ์๋์ ์๋ณ์(๋ณธ์ง์๋ณ์)
โญ๋๋ฆฌ์๋ณ์ : ์ฃผ์๋ณ์์ ์์ฑ์ด ๋ ๊ฐ ์ด์์ธ ๊ฒฝ์ฐ, ๊ทธ ์์ฑ๋ค์ ํ๋๋ก ๋ฌถ์ด์ ์ฌ์ฉํ๋ ์๋ณ์(์ธ์กฐ์๋ณ์)
6. ์๋ณ์ ๊ด๊ณ vs. ๋น์๋ณ์ ๊ด๊ณ
7. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์ ์์ฌํญ
๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ํ ๋ ์ง์ํด์ผ ํ ์
- ์ค๋ณต(Duplication) : ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ์ํฐํฐ์ ์ค๋ณต์ผ๋ก ์ ์ฅ๋๋ ํ์
- ๋น์ ์ฐ์ฑ(Inflexibility) : application๊ณผ ๋ฐ์ดํฐ ๊ฐ์ ์ฐ๊ณ์ฑ์ด ๋์ผ๋ฉด application์ด ๋ณ๊ฒฝ ๋ ๋ ๋ง๋ค ๋ฐ์ดํฐ ๋ชจ๋ธ๋ ๋ณ๊ฒฝ๋์ด์ผ ํ๋ ์ํฉ, ์ฆ ๋ฐ์ดํฐ๋ชจ๋ธ์ ์ค๊ฒ์ ๋ฐ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ํ ๋ณ๊ฒฝ์๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ด ์์๋ก ๋ณ๊ฒฝ๋์ด์ผ ํ๋ ์ํฉ์ผ๋ก ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ํ๋ก์ธ์ค๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ ์ฐ์ฑ์ ๋์ฌ์ผ ํ๋ค.
- ๋น์ผ๊ด์ฑ(Inconsistency) : ๋ฐ์ดํฐ๊ฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ํธ ์ฐ๊ด๊ด๊ณ๋ฅผ ๋ช ํํ๊ฒ ์ ์ํด์ผ ํจ
๋ค์ ์ค ERD์ ๋ํ ์ค๋ช ์ผ๋ก ์ณ์ง ์์ ๊ฒ์?
1. ๊ด๊ณ๋ช ์ผ๋ก ์ํฐํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ ์๋ค.
2. 1:1์ ๊ด๊ณ์ฐจ์๋ฅผ ๊ฐ๋ ์ํฐํฐ๋ค์ ๊ด๊ณ์ ์ฐธ์ฌํ๋ ๊ฐ๊ฐ์ ์ํฐํฐ์ ๋ํด ๋จ์ง ํ๋์ ๊ด๊ณ๋ง์ ๊ฐ์ง๋ค.
3. ์กด์ฌ์ ์ํ ๊ด๊ณ์ ํ์์ ์ํ ๊ด๊ณ๋ฅผ ๊ตฌ๋ถํด์ ํํํ๋ค.
4. ๊ด๊ณ ์ฐจ์๋ก๋ 1:1, 1:M, M:N์ด ์์ ์ ์๋ค.
3์ ๋น์ผ๊ด์ฑ์ ๋ํ ์ค๋ช
ERD์์๋ ์กด์ฌ์ ์ํ ๊ด๊ณ์ ํ์์ ์ํ ๊ด๊ณ๋ฅผ ๊ตฌ๋ถํ์ง ์๊ณ ํํํ๋ฉฐ, ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์์๋ ์ด๊ฒ์ ๊ตฌ๋ถํ์ฌ ์ฐ๊ด ๊ด๊ณ์ ์์กด ๊ด๊ณ๋ก ํํํ๋ค.
p. 34
07. ๋ค์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋ํ ์ค๋ช ์ผ๋ก ๊ฐ์ฅ ์ณ์ ๊ฒ์?
ํ์๊ณผ ๋ฐฐ์ก์ง๊ฐ 1:M, ์ฃผ์๋ณ์ ๊ด๊ณ, ํ์ ๊ด๊ณ
1. ๋ฐฐ์ก์ง๊ฐ ๋ฑ๋ก๋์ง ์์ ํ์์ด ์กด์ฌํ ์ ์๋ค. X (ํ์๊ด๊ณ)
2. ํ ๋ช ์ ํ์์ ์ฌ๋ฌ ๊ฐ์ ๋ฐฐ์ก์ง๋ฅผ ๋ฑ๋ก ํ ์ ์๋ค. O(1:M) ์ ๋ต
3. ํ๋์ ๋ฐฐ์ก์ง๋ ์ฌ๋ฌ ํ์์๊ฒ ์ํ ์ ์๋ค. X
4. ๋ฐฐ์ก์ง๋ ์ญ์ ๋ ์ ์๋ค. X (ํ์๊ด๊ณ)
1:M ๊ด๊ณ์์ ํ๋์ ํ์์ด ์ฌ๋ฌ ๊ฐ์ ๋ฐฐ์ก์ง๋ฅผ ๊ฐ์ง ์ ์์ง๋ง, ํ๋์ ๋ฐฐ์ก์ง๋ ํ ๋ช ์ ํ์์๊ฒ๋ง ์ํ ์ ์์ต๋๋ค.์ฌ๋ฌ ํ์์ด ํ๋์ ๋ฐฐ์ก์ง๋ฅผ ๊ณต์ ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ํ๋์ ๋ฐฐ์ก์ง๋ ํน์ ํ์ ํ๋์๋ง ์ฐ๊ฒฐ๋ ์ ์์ผ๋ฉฐ, ์ฌ๋ฌ ํ์์ด ๋์ผํ ๋ฐฐ์ก์ง๋ฅผ ๊ณต์ ํ ์๋ ์์ต๋๋ค.
p.35
ERD ์์ฑ์์
1. ์ํฐํฐ๋ฅผ ๊ทธ๋ฆฐ๋ค
2. ์ํฐํฐ๋ฅผ ์ ์ ํ๊ฒ ๋ฐฐ์นํ๋ค.
3. ์ํฐํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค.
4. ๊ด๊ณ๋ช ์ ์ ์ํ๋ค.
5. ๊ด๊ณ์ ์ฐธ์ฌ๋๋ฅผ ๋ํ๋ธ๋ค.
7. ๊ด๊ณ์ ํ์ ์ฌ๋ถ๋ฅผ ๋ํ๋ธ๋ค.
p. 36
๊ธฐ๋ณธ์ํฐํฐ
์ ๋ฌด์ ์๋ ์กด์ฌํ๋ ์ ๋ถ, ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑ๋๋ฉฐ ์์ ์ํฐํฐ ๊ฐ์ง ์ ์์ - ์ํ, ํ์, ์ฌ์, ๋ถ์
์ค์ฌ์ํฐํฐ
์ ๋ฌด์ ์์ด์ ํต์ฌ์ ์ธ ์ญํ ์ ํ๋ฉฐ ๋ฐ์ดํฐ์ ์์ด ๋ง์ด ๋ฐ์๋๋ ์ํฐํฐ์ด๋ค. ๊ธฐ๋ณธ ์ํฐํฐ๋ก๋ถํฐ ํ์๋๊ณ , ํ์ ์ํฐํฐ ์์ฑ - ๊ณ์ฝ, ์ฌ๊ณ , ์ฒญ๊ตฌ, ์ฃผ๋ฌธ, ๋งค์ถ
ํ์์ํฐํฐ
2๊ฐ ์ด์์ ์ํฐํฐ๋ก๋ถํฐ ํ์, ๋ฐ์ดํฐ๊ฐ ์์ฃผ ๋ณ๊ฒฝ๋๊ฑฐ๋ ์ฆ๊ฐํ ์ ์์ - ์ฃผ๋ฌธ ๋ด์ญ, ์ด๋ฒคํธ ์๋ชจ ๋ด์ญ
p. 40
๋ค์ ์ค ์ฃผ๋ฌธ ์ํฐํฐ์ ์๋ณ์์ ํด๋นํ์ง ์๋ ๊ฒ์?
์ฃผ๋ฌธํ ์ด๋ธ
์ฃผ๋ฌธ๋ฒํธ(pk) |
ํ์๋ฒํธ(fk) |
์ฃผ๋ฌธ์ผ์ |
1. ์ฃผ์๋ณ์
2. ๋ด๋ถ์๋ณ์
3. ๋ณด์กฐ์๋ณ์
4. ๋จ์ผ์๋ณ์
์ฃผ๋ฌธ ์ํฐํฐ์ ์ฃผ๋ฌธ๋ฒํธ ์์ฑ์ ์ฃผ์๋ณ์, ๋ด๋ถ์๋ณ์, ๋จ์ผ์๋ณ์, ๋๋ฆฌ์๋ณ์์ด๋ค.
๋ณด์กฐ์๋ณ์๋?
`๋ณด์กฐ์๋ณ์`๋ ์ธ์คํด์ค๋ฅผ ์๋ณ ํ ์๋ ์์ง๋ง ๋ํ ์๋ณ์๊ฐ ์๋. ๋ค๋ฅธ ์ํฐํฐ์ ์ฐธ์กฐ ๊ด๊ณ๋ก ์ฐ๊ฒฐ๋์ง ์์. ์ฆ, `ํ๋ณดํค`์ด๋ฉด์ `์ฃผ์๋ณ์`๊ฐ ์๋๊ณ `์ธ๋ํค` ์๋ ์์ฑ์ด ๋ณด์กฐ์๋ณ์์ด๋ค. ์๋ฅผ ๋ค๋ฉด ํ์ ์ํฐํฐ์ ์์ด๋๊ฐ ๋ณด์กฐ์๋ณ์์ด๋ค.
๋๋ฆฌ์๋ณ์๋?
`์ธ์กฐ์๋ณ์(๋๋ฆฌ์๋ณ์)`์ ๊ตฌ๋ถ๋๋ `์์ฐ ์๋ณ์`๋ ๋น์ฆ๋์ค์ ์ผ๋ก ์๋ฏธ๊ฐ ์๋ ๊ฐ์ด๋ค. ์๋ฅผ ๋ค์ด, ์ด๋ฉ์ผ, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ, ์ฌํ๋ณด์ฅ๋ฒํธ ๋ฑ์ ์์ฐ ์๋ณ์๋ก ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋ ๋ค๋ฉด `๋๋ฆฌ์๋ณ์`๋? ์ฃผ๋ฌธ๋ฒํธ๋ ๊ณ ๊ฐID์ฒ๋ผ ๋น์ฆ๋์ค์ ์๋ฏธ ์์ด ์์คํ ์์ ์๋์ผ๋ก ์์ฑ๋๋ ๊ฐ์ด๋ค. ์ด ๋ฌธ์ ์์ ์ฃผ๋ฌธ๋ฒํธ๋ ๋๋ฆฌ์๋ณ์์ธ๋ฐ ํ์๋ฒํธ๋ ๋ง์ ์๋ ์๊ณ ์๋ ์๋ ์๋ค. ํ์๋ฒํธ๊ฐ ์์คํ ์์ ์๋์ผ๋ก ์์ฑ๋์์ผ๋ฉด ๋๋ฆฌ์๋ณ์์ด์ง๋ง, ๋น์ฆ๋์ค์ ์ธ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ฉฐ ๊ณ ์ ํ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๋ํ๋ด์ ํ์์ ์ด๋ฉ์ผ์ด๋ ์ฃผ์๋ ์ฐ๊ฒฐ๋๋ค๋ฉด, ์์ฐ ์๋ณ์๋ก ๊ฐ์ฃผ๋ ์ ์๋ค.
๋ณตํฉ์๋ณ์ vs ๋๋ฆฌ์๋ณ์
๋ณตํฉ์๋ณ์ : ๋ ๊ฐ ์ด์์ ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋ ์๋ณ์
๋๋ฆฌ์๋ณ์ : ์ฃผ์๋ณ์์ ์์ฑ์ด ๋ ๊ฐ ์ด์์ธ ๊ฒฝ์ฐ ๊ทธ ์์ฑ๋ค์ ํ๋๋ก ๋ฌถ์ด์ ์ฌ์ฉํ๋ ์๋ณ์(=์ธ์กฐ์๋ณ์)
'Coding > SQL&DataBase' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLD] JOIN (Inner, Outer, Self, Natural, Cross JOIN) (6) | 2024.11.17 |
---|---|
[SQLD] NULL ๊ด๋ จ ํจ์, CASE, DECODE, SQL์คํ์์ (5) | 2024.11.16 |
[SQLD] SQL ๊ธฐ๋ณธ ํจ์ (๋ฌธ์์ด, ์ซ์, ๋ ์ง ๋ฑ) (7) | 2024.11.16 |
[SQLD] ์ ๊ทํ, ๋ฐ์ ๊ทํ (36) | 2024.11.16 |
[Database] ์ ๊ทํ ์ฝ๊ฒ ์ดํดํ๊ธฐ, ์ 1์ ๊ทํ, ์ 2์ ๊ทํ, ์ 3์ ๊ทํ, BCNF (1) | 2024.03.26 |