์ 1์ ์ ๊ทํ
1. ์ ๊ทํ(Normalization)
- ์ ์: ๋ฐ์ดํฐ ๋ถํด ๊ณผ์ , ์ด์ํ์ ์ ๊ฑฐ
- ๋ชฉ์ : ์ฝ์ /์ญ์ /๊ฐฑ์ ์ด์ํ์ ๋ฐฉ์ง
- ํจ์์ ์ข ์์ฑ์ ๊ธฐ๋ฐํ ์ ๊ทํ ์ํ ํ์
2. ํจ์์ ์ข ์์ฑ(FD, Functional Dependency)
- ๋ฐ์ดํฐ๋ค์ด ์ด๋ค ๊ธฐ์ค๊ฐ์ ์ํด ์ข ์๋๋ ํ์์ ์ง์นญ, ๊ฒฐ์ ์์ ์ข ์์์ ๊ด๊ณ, ๊ฒฐ์ ์์ ๊ฐ์ผ๋ก ์ข ์์์ ๊ฐ์ ์ ์ ์์
- ๊ฒฐ์ ์, ex) ํ๋ฒ, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ
- ์ข
์์, ex) ์ด๋ฆ, ํ์กํ, ์ถ์์ง, ์ฃผ์
(ํ๋ฒ์ ์ด๋ฆ๊ณผ ํ์กํ์ ํจ์์ ์ผ๋ก ๊ฒฐ์ , ์ด๋ฆ๊ณผ ํ์กํ์ ํ๋ฒ์ ํจ์์ ์ผ๋ก ์ข ์๋จ)
3. ์ข ๋ฅ
- ์ ๊ทํ(NF, Normal Form): ์ ๊ทํ๋ก ๋์ถ๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ด ๊ฐ์ถฐ์ผ ํ ํน์ฑ
- ์ 1 ์ ๊ทํ(1NF): ๋ชจ๋ ๋๋ฉ์ธ์ด ์์๊ฐ์ผ๋ก๋ง ๋์ด ์๋ ์ ๊ทํ
- ์ 2 ์ ๊ทํ(2NF): ํ ์ด๋ธ R์ด 1NF์ด๊ณ ๊ธฐ๋ณธํค๊ฐ ์๋ ๋ชจ๋ ์์ฑ์ด ๊ธฐ๋ณธํค์ ๋ํ ์์ ํจ์์ ์ข ์
- ์ 3 ์ ๊ทํ(3NF): ํ ์ด๋ธ R์ด 2NF, ๊ธฐ๋ณธํคX, ๋ชจ๋ ์์ฑ์ด ๊ธฐ๋ณธํค์ ๋ํด ์ดํ์ ํจ์์ ์ข ์(AโB, BโC์ผ๋, AโC)
- BCNF: ํ ์ด๋ธ R์์ ๋ชจ๋ ๊ฒฐ์ ์๊ฐ ํ๋ณดํค
- ์ 4 ์ ๊ทํ(4NF): ํ
์ด๋ธ R์ ๋ค์ค๊ฐ ์ข
์ AโB๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ, R์ ๋ชจ๋ ์์ฑ์ด A์ ํจ์์ ์ข
์ ๊ด๊ณ๋ฅผ ๋ง์กฑ
- ๋ค์ค๊ฐ ์ข ์(AโโB): A, B, C 3๊ฐ์ ์์ฑ์ ๊ฐ์ง ํ ์ด๋ธ R์์ B๊ฐ์ด A๊ฐ์๋ง ์ข ์๋๊ณ , C๊ฐ๊ณผ๋ ๋ฌด๊ด - ์ 5 ์ ๊ทํ(5NF): ํ ์ด๋ธ R์ ๋ชจ๋ ์กฐ์ธ ์ข ์์ด R์ ํ๋ณดํค๋ฅผ ํตํด์๋ง ์ฑ๋ฆฝ
โน ๊ณผ์ ์ ๋ฆฌ(๋๋ถ์ด๊ฒฐ๋ค์กฐ)
๋น์ ๊ท ๋ฆด๋ ์ด์
โ ๋๋ฉ์ธ์ด ์์๊ฐ
1NF
โ ๋ถ๋ถ์ ํจ์ ์ข
์ ์ ๊ฑฐ
2NF
โ ์ดํ์ ํจ์ ์ข
์ ์ ๊ฑฐ
3NF
โ ๊ฒฐ์ ์์ด๋ฉด์ ํ๋ณดํค ์๋ ๊ฒ ์ ๊ฑฐ
BCNF
โ ๋ค์น ์ข
์ ์ ๊ฑฐ
4NF
โ ์กฐ์ธ ์ข
์์ฑ ์ด์ฉ
5NF
4. ์ ๊ทํ์ ํจ๊ณผ
- ์ฑ๋ฅ = ์กฐํ, ์ ๋ ฅ/์์ /์ญ์ 2๊ฐ์ง๋ก ๋ถ๋ฅ
- ๋ฐ์ดํฐ ์ค๋ณต ๊ฐ์ โ ์ฑ๋ฅ ํฅ์
- ๋ฐ์ดํฐ๊ฐ ๊ด์ฌ์ฌ๋ณ๋ก ๋ฌถ์ โ ์ฑ๋ฅ ํฅ์
- ์กฐํ ์ง์์์ ์กฐ์ธ์ด ๋ง์ด ๋ฐ์ โ ์ฑ๋ฅ ์ ํ
- โก๏ธ ์ ๋ ฅ/์์ /์ญ์ ์ ๊ฒฝ์ฐ ์ฑ๋ฅ ํฅ์ BUT! ์กฐํ์ ๊ฒฝ์ฐ ์ฒ๋ฆฌ์กฐ๊ฑด์ ๋ฐ๋ผ ํฅ์ or ์ ํ
์ 2์ ๊ด๊ณ์ ์กฐ์ธ์ ์ดํด
1. ์กฐ์ธ์ด๋
- ๊ฐ์ฅ ๊ธฐ๋ณธ์ ๊ต์งํฉ์ ๋ง๋๋ ๊ฒ
- ๋ ๊ฐ์ ํ ์ด๋ธ ๊ฐ์ ์ผ์นํ๋ ๊ฒ์ ์กฐ์ธ
- ์๋ณ์๋ฅผ ์์ํด(=์ธ๋ํค)๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ๊ฒฐํฉํด ์ฌ๋ฌ ์ํฐํฐ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ๊ฐ์ ธ์ค๋ ๊ฒ
โ ์ฑ๋ฅ์ ๊ด์ ์์ ์ฌ์ฉํ๋ ๊ฒ์! - EQUI JOIN (๋ฑ๊ฐ ๊ต์งํฉ)
- โ=โ์ ์ด์ฉํ์ฌ ๋ ๊ฐ์ ํ ์ด๋ธ ์ฐ๊ฒฐ
- ex) SELECT * FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;
- NON-EQUI JOIN (๋น๋ฑ๊ฐ ๊ต์งํฉ)
- ์ ํํ๊ฒ ์ผ์นํ์ง ์๋ ๊ฒ์ ์กฐ์ธ
- ๋ ๊ฐ์ ํ ์ด๋ธ ๊ฐ์ ์กฐ์ธํ๋ ๊ฒฝ์ฐ โ=โ ์ฌ์ฉํ์ง ์๊ณ >, >=, <=, <
2. INNER JOIN (๋ด๋ถ ์กฐ์ธ)
- ๊ทธ๋ฅ ์กฐ์ธ์ด๋ผ๊ณ ๋ ๋ถ๋ฆ (INNER JOIN์ JOIN์ด๋ผ๊ณ ๋ง ์จ๋ ๋จ)
- ๋ ํ ์ด๋ธ์ ์ฐ๊ฒฐํ ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ
- ๋ ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์์ด์ผ๋ง ๊ฒฐ๊ณผ ๋์ด
- INNER JOIN ์ ON๋ฌธ์ผ๋ก ํ ์ด๋ธ ์ฐ๊ฒฐ
- Ex)

3. OUTER JOIN (์ธ๋ถ ์กฐ์ธ)
- ํ์ชฝ์๋ง ๋ฐ์ดํฐ๊ฐ ์์ด๋ ๊ฒฐ๊ณผ๊ฐ ๋์ด
- LEFT OUTER JOIN: ์ผ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ๊ฐ์ด ์ถ๋ ฅ๋๋ ์กฐ์ธ
- FULL OUTER JOIN: ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ๊ฐ์ด ์ถ๋ ฅ๋๋ ์กฐ์ธ
- RIGHT OUTER JOIN: ์ผ์ชฝ ๋๋ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ๊ฐ์ด ์ถ๋ ฅ๋๋ ์กฐ์ธ

4. CROSS JOIN (์ํธ ์กฐ์ธ) - ์นด๋ค์์ ๊ณฑ(CARTESIAN PRODUCT)
- ํ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํ๊ณผ ๋ค๋ฅธ ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํ์ ์กฐ์ธ์ํค๋ ๊ธฐ๋ฅ
- ์กฐ์ธ ๊ฒฐ๊ณผ๋ ๋ ํ ์ด๋ธ์ ๊ฐ ํ ๊ฐ์๋ฅผ ๊ณฑํ ์๋งํผ ๋จ
- ex) SELECT * FROM [์ฒซ ๋ฒ์งธ ํ ์ด๋ธ] CROSS JOIN [๋ ๋ฒ์งธ ํ ์ด๋ธ]
5. SELF JOIN (์์ฒด ์กฐ์ธ)
- ์๊ธฐ ์์ ๊ณผ ์กฐ์ธ, ์ฆ 1๊ฐ์ ํ ์ด๋ธ ์ฌ์ฉ
- ๋ณ๋์ ๋ฌธ๋ฒ์ด ์กด์ฌX
6. UNION
- ๋ ๊ฐ์ ํ ์ด๋ธ์ ํ๋๋ก ํฉ์น๋ฉด์ ์ค๋ณต๋ ๋ฐ์ดํฐ ์ ๊ฑฐ
- ์ ๋ ฌ(SORT) ๊ณผ์ ์ ๋ฐ์์ํด
- ex) SELECT * FROM A UNION (ALL) SELECT * FROM B

7. UNION ALL
- ๋ฐ์ดํฐ ๊ฐ์ด ์ค๋ณต๋๋๋ผ๋ ์กฐ๊ฑด์ ์ผ์นํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ํ์ํจ

8. JOIN vs. UNION
JOIN | UNION |
์ ์ด๋ ํ๋์ ์์ฑ์ด ๊ณตํต์ธ ๋ ํ ์ด๋ธ ์์ฑ์ ๊ฒฐํฉํ๊ณ ์ ํ ๋ ์ฌ์ฉ | ํ๋์ ๊ฒฐ๊ณผ ์ธํธ๋ง ๋ํ๋ผ ๋ ์ฌ์ฉ |
์๋ก์ด ์ด๋ก ๊ฒฐํฉ (์ํ๊ฒฐํฉ) | ์๋ก์ด ํ์ผ๋ก ๊ฒฐํฉ (์์ง๊ฒฐํฉ) |
์ฒซ ๋ฒ์งธ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ ๋์ผํ ํ์ ๋ ๋ฒ์งธ ํ ์ด๋ธ ์ด๊ณผ ํจ๊ป ํ ์ด ์ธํธ์ ํ์ | ์ฒซ ๋ฒ์งธ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ ํ ํ ์ธํธ์ ์๊ณ ๋ ๋ฒ์งธ ํ ์ด๋ธ ๋ฐ์ดํฐ๋ ๋ค๋ฅธ ์ธํธ์ ํ |
์ 3์ ๋ชจ๋ธ์ด ํํํ๋ ํธ๋์ญ์ ์ ์ดํด
1. ํธ๋์ญ์ ์ด๋
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ผ๋ฆฌ์ ์ธ ์ฐ์ฐ ๋จ์ ํน์ ๋ ผ๋ฆฌ์ ์ธ ์ ๋ฌด๋จ์
2. ์๋ณ๊ด๊ณ vs ๋น์๋ณ๊ด๊ณ
- ์๋ณ๊ด๊ณ: ์ธ๋ํค(๋น๋ ค์จ ํค)๊ฐ PK(์๋ณ์)์ ์ผ๋ถ๋ถ์ธ๊ฐ?
- ๋น์๋ณ๊ด๊ณ: ์ธ๋ํค(๋น๋ ค์จ ํค)๊ฐ PK(์๋ณ์)์ ์ผ๋ถ๋ถ์ด ์๋๊ฐ?

3. ํธ๋์ญ์ ์ ํน์ฑ
- ์์์ฑ(ATOMICITY): ์ ๋ถ ์คํ๋๊ฑฐ๋ ์ ํ ์คํ๋์ง ์์์ผ ํจ(ALL OR NOTHING), ํธ๋์ญ์ ์ฒ๋ฆฌ๊ฐ ์์ ํ ๋๋์ง ์์ผ๋ฉด ์คํ๋์ง ์์ ์ํ์ ๊ฐ์์ผ ํจ
- ์ผ๊ด์ฑ(CONSISTENCY): ์คํ๊ฒฐ๊ณผ์ ๋ชจ์์ด ์์ด์ผ ํจ
- ๋ ๋ฆฝ์ฑ(๊ณ ๋ฆฝ์ฑ, ISOLATION): ์ฐ์ฐ ์ค๊ฐ์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ ๊ทผ ํ ์ ์์, ๋์ ์ํX, ๊ณ ๋ฆฝ๋์ด ์คํ
- ์ง์์ฑ(DURABILITY): ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ(COMMIT)๋ ํ ๊ทธ ๊ฒฐ๊ณผ๋ ์๊ตฌ์ ์ผ๋ก ์ ์คX
์ 4์ NULL ์์ฑ์ ์ดํด
1. NULL์ ํน์ง
- ์์ง ์ ํด์ง์ง ์์ ๊ฐ
- ๋ชจ๋ฅด๋ ๊ฐ์ ์๋ฏธ
- ๊ฐ์ ๋ถ์ฌ๋ฅผ ์๋ฏธ
- ์ซ์ ํน์ ๋ ์ง๋ฅผ ๋ํ๋ฉด NULL์ด ๋จ
- ์ด๋ค ๊ฐ์ ๋น๊ตํ ๋ โ์ ์ ์์โ์ด ๋ฐํ๋จ
2. NULL ๊ฐ ์กฐํ
- NULL ๊ฐ์ ์กฐํ = IS NULL
- NULL์ด ์๋ ๊ฐ์ ์กฐํ = IS NOT NULL
3. NULL ๊ด๋ จ ํจ์
- NVL ํจ์
- NULL์ด๋ฉด ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ฐ๊พธ๋ ํจ์
- ex) NVL(A, 0) = A ์นผ๋ผ์ด NULL์ด๋ฉด 0์ผ๋ก ๋ฐํ
- NVL2 ํจ์
- NVL ํจ์์ DECODE ํจ์๋ฅผ ํ๋๋ก ํฉ์น ๊ฒ
- ex) NVL2(A, 1, 0) = A ์นผ๋ผ์ด NULL์ด ์๋๋ฉด 1์, NULL์ด๋ฉด 0์ ๋ฐํ
- NULLIF ํจ์
- ๋ ๊ฐ์ ๊ฐ์ด ๊ฐ์ผ๋ฉด NULL, ๊ฐ์ง ์์ผ๋ฉด ์ฒซ ๋ฒ์งธ ๊ฐ์ ๋ฐํ
- ex) NULLIF(A, B) = A์ B๊ฐ ๊ฐ์ผ๋ฉด NULL์, ๊ฐ์ง ์์ผ๋ฉด A๋ฅผ ๋ฐํ
- COALESCE
- NULL์ด ์๋ ์ต์ด์ ์ธ์ ๊ฐ์ ๋ฐํ
- COALESCE(A, B, C, โฆ) = A๊ฐ NULL์ด ์๋๋ฉด A๋ฅผ, NULL์ด๋ฉด ๊ทธ ๋ค์ ๊ฐ์ NULL ์ฌ๋ถ๋ฅผ ํ๋จํ๋ ค ๊ฐ์ ๋ฐํ, ์ฆ NULL์ด ์๋ ๊ฐ์ด ๋์ฌ ๋๊น์ง ๋ค๋ก ๋
4. NULL์ด ํ์ํ ์ด์
- ํ ์ด๋ธ(=์ํฐํฐ)์ ํน์ฑ์ ํ X ์ด ํํ๋ฅผ ์ฐ์งํด์ผ ํจ
์ 5์ ๋ณธ์ง์๋ณ์ vs ์ธ์กฐ์๋ณ์
1. ์๋ณ์(IDENTIFIERS) ๋?
- ์ํฐํฐ ๋ด ์ ์ผํ๊ฒ ์ธ์คํด์ค๋ฅผ ์๋ณํ ์ ์๋ ์์ฑ์ ์งํฉ
2. ์๋ณ์ ๋ถ๋ฅ
- ๋ํ์ฑ ์ฌ๋ถ: ์ฃผ์๋ณ์ VS ๋ณด์กฐ์๋ณ์
- ์ค์ค๋ก์์ฑ์ฌ๋ถ: ๋ด๋ถ์๋ณ์ VS ์ธ๋ถ์๋ณ์
- ๋จ์ผ์์ฑ์ฌ๋ถ: ๋จ์ผ์๋ณ์ VS ๋ณตํฉ์๋ณ์
- ๋์ฒด์ฌ๋ถ: ๋ณธ์ง์๋ณ์ VS ์ธ์กฐ์๋ณ์
๋ณธ์ง ์๋ณ์ | ์ธ์กฐ ์๋ณ์ | |
์์ | ๊ตญ์ + ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ, ์ฐจ๋ ๋ฒํธ (์ฌ๋ฌ ์์ฑ์ ์กฐํฉ) | ์๋ ์์ฑ ๋ฒํธ |
ํน์ง | ์ ์ผ์ฑ: ์ ์ผํ๊ฒ ์๋ณ ์๋ฏธ์ ๊ฐ์น: ๋น์ฆ๋์ค์ ์๋ฏธ ๋ดํฌ O ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ: ์ค์ ๋ณํ์ ๋ฐ๋ผ ๋ณ๊ฒฝ | ์ ์ผ์ฑ: ๊ณ ์ ์ ๊ฐ์ ๊ฐ์ง ๋น์๋ฏธ์ : ๋น์ฆ๋์ค์ ์๋ฏธ ๋ดํฌ X ๋ถ๋ณ์ฑ: ํ๋ฒ ์์ฑ๋๋ฉด ๋ณ๊ฒฝX |
3. ์ธ์ ์ฌ์ฉํ์ง ?
- ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ: ์ธ์กฐ์๋ณ์๊ฐ ๋ฐ๋์ง (๋ณธ์ง ์๋ณ์๋ ๋ณ๊ฒฝ๋ ๊ฐ๋ฅ์ฑ์ด ์๊ธฐ์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์)
- ๋ณต์ก์ฑ: ์ธ์กฐ์๋ณ์๊ฐ ๋ฐ๋์ง (๋ณต์กํ ๋ณธ์ง ์๋ณ์๋ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ธ ์ ์์)
- ๋น์ฆ๋์ค ์๋ฏธ: ๋ณธ์ง ์๋ณ์๊ฐ ๋ฐ๋์ง. ๋น์ฆ๋์ค ํ๋ก์ธ์ค๋ ๊ท์น์์ ์ค์์์ ์ค์ํ ์๋ฏธ
4. ์ธ์กฐ์๋ณ์์ ๋ฌธ์
- ์ค๋ณต ๋ฐ์ดํฐ๋ก ์ธํ ํ์ง ๋ฌธ์ : ์ค๋ณต ๋ฐ์ดํฐ์ ์์ฒ ์ฐจ๋จ์ ํ ์ ์์
- ๋ถํ์ํ ์ธ๋ฑ์ค๊ฐ ํ์ํ ์ ์์
- ๋ณธ์ง ์๋ณ์๋ PK: ์ฃผ๋ฏผ๋ฒํธ + ์ํ๋ฒํธ
- ์ธ์กฐ์๋ณ์๋ FK: ์ฃผ๋ฌธ์ํ๋ฒํธ

'Computer Science ๐ > SQLD' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLD] 2๊ณผ๋ชฉ - 3์ฅ. ๊ด๋ฆฌ ๊ตฌ๋ฌธ (5) | 2024.11.18 |
---|---|
[SQLD] 2๊ณผ๋ชฉ - 2์ฅ. SQL ํ์ฉ (1) | 2024.11.18 |
[SQLD] 2๊ณผ๋ชฉ - 1์ฅ. SQL ๊ธฐ๋ณธ (1) | 2024.11.18 |
[SQLD] ๊ณผ๋ชฉ1 - 1์ฅ. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์ดํด (8) | 2024.11.08 |