Ver3.0 ๐ฏ ERD ์ค๊ณ์ ์ ๊ทํ ๊ธฐ๋ฒ: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์ ๋ชจ๋ ๊ฒ

๐ฏ ERD ์ค๊ณ์ ์ ๊ทํ ๊ธฐ๋ฒ: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์ ๋ชจ๋ ๊ฒ
์น๊ตฌ์ฒ๋ผ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ์๋ฒฝ ๊ฐ์ด๋
์ฒ์์๋ "๊ทธ๋ฅ ํ ์ด๋ธ ๋ช ๊ฐ ๋ง๋ค๋ฉด ๋๋ ๊ฑฐ ์๋?"๋ผ๊ณ ์๊ฐํ๊ธฐ ์ฌ์ด๋ฐ, ๋ง์ ํ๋ก์ ํธ๊ฐ ์ปค์ง๋ฉด ์์ ๋๋ฆฌ๊ฐ ๋๊ฑฐ๋ . ๋ฐ์ดํฐ๊ฐ ์ค๋ณต๋๊ณ , ์์ ํ ๋๋ง๋ค ์ฌ๊ธฐ์ ๊ธฐ ์๋ด์ผ ํ๊ณ , ์ฑ๋ฅ์ ๋๋ ค์ง๊ณ ... ์ง์ง ์ ๋ชฝ์ด์ง.
๊ทธ๋์ ์ค๋์ ERD ์ค๊ณ์ ์ ๊ทํ ๊ธฐ๋ฒ์ ๋ํด ์ ๋๋ก ํํค์ณ๋ณผ ๊ฑฐ์ผ. ์ด๊ฑฐ ํ ๋ฒ ์ ๋๋ก ๋ฐฐ์๋๋ฉด ๋์ค์ ์ง์ง ๋ง์ด ์จ๋จน์ ์ ์์ด! ๐ช
์ง์ ์ง์ ๋ ์ค๊ณ๋๊ฐ ํ์ํ๋ฏ์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ง๋ค๊ธฐ ์ ์ ERD๋ก ์ ์ฒด ๊ตฌ์กฐ๋ฅผ ๊ทธ๋ ค๋ณด๋ ๊ฑฐ์ง. ์ด๊ฒ ์์ผ๋ฉด ๋์ค์ "์, ์ด ํ ์ด๋ธ์ด ์ ์ฌ๊ธฐ ์์ง?" ํ๋ฉด์ ํท๊ฐ๋ฆฌ๊ฒ ๋ผ.
### ๐ฏ ERD์ ํต์ฌ ๊ตฌ์ฑ์์
### ๐ ์ํฐํฐ์ ๋ถ๋ฅ **1. ๊ฐํ ์ํฐํฐ vs ์ฝํ ์ํฐํฐ**
๊ฐํ ์ํฐํฐ๋ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ ์ ์๋ ์ ๋ค์ด์ผ. ์๋ฅผ ๋ค์ด "ํ์" ํ ์ด๋ธ์ ๋ค๋ฅธ ํ ์ด๋ธ ์์ด๋ ์กด์ฌํ ์ ์์์?
๋ฐ๋ฉด ์ฝํ ์ํฐํฐ๋ ๋ค๋ฅธ ์ํฐํฐ์ ์์กดํด์ผ ํด. "์ฃผ๋ฌธ์์ธ" ํ ์ด๋ธ์ "์ฃผ๋ฌธ" ํ ์ด๋ธ์ด ์์ผ๋ฉด ์๋ฏธ๊ฐ ์์ง. ์ฃผ๋ฌธ์ด ์๋๋ฐ ์ฃผ๋ฌธ์์ธ๊ฐ ๋ญ๊ฐ ์๊ฒ ์ด? ๐
**2. ์ค์ฒด ์ํฐํฐ vs ๊ด๊ณ ์ํฐํฐ**
์ค์ฒด ์ํฐํฐ๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์กด์ฌํ๋ ๊ฒ๋ค์ด์ผ. ํ์, ์ํ, ์ง์ ๊ฐ์ ๊ฑฐ.
๊ด๊ณ ์ํฐํฐ๋ ๋ ์ํฐํฐ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ๋ง๋๋ ๊ฑฐ์ผ. ์๋ฅผ ๋ค์ด "์๊ฐ์ ์ฒญ"์ ํ์๊ณผ ๊ณผ๋ชฉ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ํํํ๋ ์ํฐํฐ์ง.
### ๐จ ์์ฑ์ ์ข ๋ฅ
| ์์ฑ ํ์ | ์ค๋ช | ์์ |
|---|---|---|
| ๋จ์ ์์ฑ | ๋ ์ด์ ๋๋ ์ ์๋ ์์ฑ | ๋์ด, ์ฑ๋ณ |
| ๋ณตํฉ ์์ฑ | ์ฌ๋ฌ ๊ฐ์ ์๋ฏธ๋ก ๋๋ ์ ์๋ ์์ฑ | ์ฃผ์(์, ๊ตฌ, ๋์ผ๋ก ๋ถ๋ฆฌ ๊ฐ๋ฅ) |
| ๋จ์ผ๊ฐ ์์ฑ | ํ๋์ ๊ฐ๋ง ๊ฐ์ง๋ ์์ฑ | ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ |
| ๋ค์ค๊ฐ ์์ฑ | ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ๊ฐ์ง ์ ์๋ ์์ฑ | ์ ํ๋ฒํธ(์ง, ํ์ฌ, ํด๋ํฐ) |
| ์ ๋ ์์ฑ | ๋ค๋ฅธ ์์ฑ์ผ๋ก๋ถํฐ ๊ณ์ฐ๋๋ ์์ฑ | ๋์ด(์๋ ์์ผ๋ก๋ถํฐ ๊ณ์ฐ) |
### ๐ซ ์นด๋๋๋ฆฌํฐ(Cardinality) ์นด๋๋๋ฆฌํฐ๋ "๋ช ๋ ๋ช์ ๊ด๊ณ๋"๋ฅผ ๋ํ๋ด๋ ๊ฑฐ์ผ. ํฌ๊ฒ ์ธ ๊ฐ์ง๊ฐ ์์ง:
- **์ ์ฒด ์ฐธ์ฌ(Total Participation)**: ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๋ฐ๋์ ๊ด๊ณ์ ์ฐธ์ฌํด์ผ ํด. ์๋ฅผ ๋ค์ด ๋ชจ๋ ์ง์์ ๋ฐ๋์ ํ๋์ ๋ถ์์ ์ํด์ผ ํ๋ค๋ฉด ์ ์ฒด ์ฐธ์ฌ์ผ.
- **๋ถ๋ถ ์ฐธ์ฌ(Partial Participation)**: ์ฐธ์ฌํ์ง ์์๋ ๋ผ. ๋ชจ๋ ํ์์ด ์ฃผ๋ฌธ์ ํ๋ ๊ฑด ์๋์์? ์ด๊ฒ ๋ถ๋ถ ์ฐธ์ฌ์ผ.
ERD์์๋ ์ ์ฒด ์ฐธ์ฌ๋ฅผ ์ด์ค์ (==)์ผ๋ก, ๋ถ๋ถ ์ฐธ์ฌ๋ฅผ ๋จ์ผ์ (-)์ผ๋ก ํํํด.
์์งํ ์ฒ์์๋ "์ ์ด๋ ๊ฒ ๋ณต์กํ๊ฒ ํด์ผ ๋ผ?"๋ผ๊ณ ์๊ฐํ ์ ์์ด. ํ์ง๋ง ์ ๊ทํ๋ฅผ ์ ๋๋ก ์ ํ๋ฉด ๋์ค์ ์ง์ง ํฐ์ผ ๋๊ฑฐ๋ !
### ๐ฑ ์ ๊ทํ๋ฅผ ์ ํ๋ฉด ์๊ธฐ๋ ๋ฌธ์ ๋ค
๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ ๋ ์ํ์ง ์๋ ์ ๋ณด๊น์ง ํจ๊ป ์ ๋ ฅํด์ผ ํ๋ ๋ฌธ์ ์ผ. ์๋ฅผ ๋ค์ด ์ ์ ์ฌ์ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๋ ค๋๋ฐ, ์์ง ๋ถ์๊ฐ ๋ฐฐ์ ์ ๋๋ค๋ฉด? ๋ถ์ ์ ๋ณด๊ฐ ํ์๋ผ๋ฉด ์ ๋ ฅ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํด์ง์ง. ๐
๋ฐ์ดํฐ๋ฅผ ์์ ํ ๋ ์ฌ๋ฌ ๊ณณ์ ๋ค ๋ฐ๊ฟ์ผ ํ๋ ๋ฌธ์ ์ผ. ๋ถ์ ์ด๋ฆ์ด ๋ฐ๋์๋๋ฐ, ๊ทธ ๋ถ์์ ์ํ ์ง์ ๋ ์ฝ๋๋ฅผ ์ ๋ถ ์ฐพ์์ ์์ ํด์ผ ํ๋ค๋ฉด? ํ๋๋ผ๋ ๋น ๋จ๋ฆฌ๋ฉด ๋ฐ์ดํฐ ๋ถ์ผ์น๊ฐ ๋ฐ์ํด! ๐ฅ
๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ๋ ์ํ์ง ์๋ ์ ๋ณด๊น์ง ํจ๊ป ์ญ์ ๋๋ ๋ฌธ์ ์ผ. ๋ง์ง๋ง ๋จ์ ์ง์์ด ํด์ฌํ๋ฉด์ ๋ถ์ ์ ๋ณด๊น์ง ๋ ์๊ฐ๋ฒ๋ฆฐ๋ค๋ฉด? ๋ถ์๋ ์์ง ์กด์ฌํ๋๋ฐ ๋ง์ด์ผ! ๐๏ธ
## ๐ฅ ์ 1์ ๊ทํ(1NF) **ํต์ฌ ๊ท์น: ๋ชจ๋ ์์ฑ์ ์์๊ฐ(Atomic Value)์ ๊ฐ์ ธ์ผ ํด!**
์ฝ๊ฒ ๋งํ๋ฉด, ํ ์นธ์ ํ๋์ ๊ฐ๋ง ๋ค์ด๊ฐ์ผ ํ๋ค๋ ๊ฑฐ์ผ. ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์ผํ๋ก ๊ตฌ๋ถํด์ ๋ฃ์ผ๋ฉด ์ ๋ผ!
โ 1NF ์๋ฐ ์์:
| ํ์ID | ์ด๋ฆ | ์๊ฐ๊ณผ๋ชฉ |
|---|---|---|
| 1001 | ๊น์ฒ ์ | ์ํ, ์์ด, ๊ณผํ |
| 1002 | ์ด์ํฌ | ๊ตญ์ด, ์ญ์ฌ |
| ํ์ID | ์ด๋ฆ | ์๊ฐ๊ณผ๋ชฉ |
|---|---|---|
| 1001 | ๊น์ฒ ์ | ์ํ |
| 1001 | ๊น์ฒ ์ | ์์ด |
| 1001 | ๊น์ฒ ์ | ๊ณผํ |
| 1002 | ์ด์ํฌ | ๊ตญ์ด |
| 1002 | ์ด์ํฌ | ์ญ์ฌ |
์... ์ด๊ฒ ์ข ์ด๋ ต๊ฒ ๋ค๋ฆด ์ ์๋๋ฐ, ์ฝ๊ฒ ์ค๋ช ํ ๊ฒ. ๊ธฐ๋ณธํค๊ฐ ์ฌ๋ฌ ๊ฐ์ ์ปฌ๋ผ์ผ๋ก ์ด๋ฃจ์ด์ง ๊ฒฝ์ฐ(๋ณตํฉํค), ๊ธฐ๋ณธํค์ ์ผ๋ถ๋ถ์๋ง ์ข ์๋๋ ์์ฑ์ด ์์ผ๋ฉด ์ ๋๋ค๋ ๊ฑฐ์ผ.
โ 2NF ์๋ฐ ์์:
| ํ์ID | ๊ณผ๋ชฉ์ฝ๋ | ํ์์ด๋ฆ | ๊ณผ๋ชฉ๋ช | ์ฑ์ |
|---|---|---|---|---|
| 1001 | CS101 | ๊น์ฒ ์ | ์๋ฃ๊ตฌ์กฐ | A+ |
| 1001 | CS102 | ๊น์ฒ ์ | ์๊ณ ๋ฆฌ์ฆ | A |
โ 2NF ์ค์ ์์:
**ํ์ ํ ์ด๋ธ:**
| ํ์ID | ํ์์ด๋ฆ |
|---|---|
| 1001 | ๊น์ฒ ์ |
| 1002 | ์ด์ํฌ |
| ๊ณผ๋ชฉ์ฝ๋ | ๊ณผ๋ชฉ๋ช |
|---|---|
| CS101 | ์๋ฃ๊ตฌ์กฐ |
| CS102 | ์๊ณ ๋ฆฌ์ฆ |
| ํ์ID | ๊ณผ๋ชฉ์ฝ๋ | ์ฑ์ |
|---|---|---|
| 1001 | CS101 | A+ |
| 1001 | CS102 | A |
์ด๊ฒ๋ ์ด๋ ต๊ฒ ๋ค๋ฆฌ๋๋ฐ, ๊ฐ๋จํ ๋งํ๋ฉด "A โ B์ด๊ณ B โ C์ผ ๋, A โ C๊ฐ ์ฑ๋ฆฝํ๋ ๊ด๊ณ"๋ฅผ ์์ ์ผ ํ๋ค๋ ๊ฑฐ์ผ. ์ฆ, ๊ธฐ๋ณธํค๊ฐ ์๋ ์์ฑ์ด ๋ค๋ฅธ ์์ฑ์ ๊ฒฐ์ ํ๋ฉด ์ ๋ผ!
โ 3NF ์๋ฐ ์์:
| ์ง์ID | ์ง์์ด๋ฆ | ๋ถ์์ฝ๋ | ๋ถ์๋ช |
|---|---|---|---|
| E001 | ๊น์ฒ ์ | D01 | ๊ฐ๋ฐํ |
| E002 | ์ด์ํฌ | D01 | ๊ฐ๋ฐํ |
| E003 | ๋ฐ๋ฏผ์ | D02 | ๋์์ธํ |
๋ฌธ์ ๋ ๋ญ๋๋ฉด, ๋ถ์๋ช ์ด ๋ฐ๋๋ฉด ํด๋น ๋ถ์์ ๋ชจ๋ ์ง์ ๋ ์ฝ๋๋ฅผ ์์ ํด์ผ ํ๋ค๋ ๊ฑฐ์ง. ๐ฐ
โ 3NF ์ค์ ์์:
**์ง์ ํ ์ด๋ธ:**
| ์ง์ID | ์ง์์ด๋ฆ | ๋ถ์์ฝ๋ |
|---|---|---|
| E001 | ๊น์ฒ ์ | D01 |
| E002 | ์ด์ํฌ | D01 |
| E003 | ๋ฐ๋ฏผ์ | D02 |
| ๋ถ์์ฝ๋ | ๋ถ์๋ช |
|---|---|
| D01 | ๊ฐ๋ฐํ |
| D02 | ๋์์ธํ |
### ๐ BCNF (Boyce-Codd Normal Form) 3NF์ ๊ฐํ ๋ฒ์ ์ด์ผ. ๋ชจ๋ ๊ฒฐ์ ์๊ฐ ํ๋ณดํค์ฌ์ผ ํ๋ค๋ ์กฐ๊ฑด์ด ์ถ๊ฐ๋ผ. ์ค๋ฌด์์๋ 3NF์ BCNF๋ฅผ ๊ฑฐ์ ๊ฐ์ ์๋ฏธ๋ก ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์.
### ๐ 4NF (Fourth Normal Form) ๋ค์น ์ข ์์ฑ์ ์ ๊ฑฐํ๋ ๋จ๊ณ์ผ. ์์งํ ์ด ์ ๋๊น์ง ๊ฐ๋ฉด ์ค๋ฌด์์๋ ๊ฑฐ์ ์ ์ฐ๋ ์์ค์ด์ผ. ๐
### โญ 5NF (Fifth Normal Form) ์กฐ์ธ ์ข ์์ฑ์ ์ ๊ฑฐํ๋ ์ต์ข ๋จ๊ณ. ์ด๋ก ์ ์ผ๋ก๋ ์๋ฒฝํ์ง๋ง, ์ค๋ฌด์์๋ ์คํ๋ ค ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์ด์ ์ฌ๊ธฐ๊น์ง ๊ฐ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ด.
๋ง์, ์ญ์ ๊ทํ๋ ์ ๊ทํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์๋์ ์ผ๋ก ์ค๋ณต์ ํ์ฉํ๋ ๋ฐฉํฅ์ผ๋ก ๋๋๋ฆฌ๋ ๊ฑฐ์ผ. ์ ์ด๋ฐ ์ง์ ํ ๊น?
### ๐ฏ ์ญ์ ๊ทํ๊ฐ ํ์ํ ๊ฒฝ์ฐ
### ๐ Step 1: ์๊ตฌ์ฌํญ ๋ถ์ ๋จผ์ ์ด๋ค ๊ธฐ๋ฅ์ด ํ์ํ์ง ์ ๋ฆฌํด์ผ ํด:
- ํ์์ด ๊ฐ์ ํ๊ณ ๋ก๊ทธ์ธํ ์ ์์ด์ผ ํด
- ์ํ์ ์นดํ ๊ณ ๋ฆฌ๋ณ๋ก ๋ถ๋ฅํด์ ๋ณด์ฌ์ค์ผ ํด
- ํ์์ด ์ํ์ ์ฅ๋ฐ๊ตฌ๋์ ๋ด์ ์ ์์ด์ผ ํด
- ์ฃผ๋ฌธํ๊ณ ๊ฒฐ์ ํ ์ ์์ด์ผ ํด
- ์ฃผ๋ฌธ ๋ด์ญ์ ์กฐํํ ์ ์์ด์ผ ํด
### ๐จ Step 2: ์ํฐํฐ ์๋ณ ์๊ตฌ์ฌํญ์์ ๋ช ์ฌ๋ค์ ๋ฝ์๋ด๋ฉด ์ํฐํฐ๊ฐ ๋ผ:
- ํ์(Member)
- ์ํ(Product)
- ์นดํ ๊ณ ๋ฆฌ(Category)
- ์ฅ๋ฐ๊ตฌ๋(Cart)
- ์ฃผ๋ฌธ(Order)
- ์ฃผ๋ฌธ์์ธ(OrderDetail)
### ๐ Step 3: ๊ด๊ณ ์ ์ ์ํฐํฐ๋ค ์ฌ์ด์ ๊ด๊ณ๋ฅผ ํ์ ํด๋ณด์:
์ฃผ๋ฌธ - ์ฃผ๋ฌธ์์ธ: 1:N ๊ด๊ณ (ํ ์ฃผ๋ฌธ์ ์ฌ๋ฌ ์ํ์ด ํฌํจ๋ ์ ์์)
์ํ - ์ฃผ๋ฌธ์์ธ: 1:N ๊ด๊ณ (ํ ์ํ์ ์ฌ๋ฌ ์ฃผ๋ฌธ์ ํฌํจ๋ ์ ์์)
์นดํ ๊ณ ๋ฆฌ - ์ํ: 1:N ๊ด๊ณ (ํ ์นดํ ๊ณ ๋ฆฌ์ ์ฌ๋ฌ ์ํ์ด ์ํจ)
ํ์ - ์ฅ๋ฐ๊ตฌ๋: 1:N ๊ด๊ณ (ํ ํ์์ ์ฌ๋ฌ ์ํ์ ์ฅ๋ฐ๊ตฌ๋์ ๋ด์ ์ ์์)
**ํ์(Member)**
- member_id (PK)
- email
- password
- name
- phone
- address
- created_at
**์ํ(Product)**
- product_id (PK)
- category_id (FK)
- name
- description
- price
- stock_quantity
- image_url
- created_at
**์ฃผ๋ฌธ(Order)**
- order_id (PK)
- member_id (FK)
- order_date
- total_amount
- status
- shipping_address
**์ฃผ๋ฌธ์์ธ(OrderDetail)**
- order_detail_id (PK)
- order_id (FK)
- product_id (FK)
- quantity
- unit_price
- subtotal
### โ
Step 5: ์ ๊ทํ ๊ฒ์ฆ
์ค๊ณํ ํ
์ด๋ธ๋ค์ด ์ ๊ทํ ๊ท์น์ ๋ง์กฑํ๋์ง ํ์ธํด:โ 1NF: ๋ชจ๋ ์์ฑ์ด ์์๊ฐ? โ OK!
โ 2NF: ๋ถ๋ถ ํจ์ ์ข ์ ์์? โ OK!
โ 3NF: ์ดํ์ ํจ์ ์ข ์ ์์? โ OK!
### ๐ ๋ฌด๋ฃ ๋๊ตฌ
### โ ์ค์ 1: ๊ณผ๋ํ ์ ๊ทํ "์ ๊ทํ๊ฐ ์ข๋ค๋ฉฐ? ๊ทธ๋ผ ์ต๋ํ ์ชผ๊ฐ์ผ์ง!"
์ด๋ ๊ฒ ์๊ฐํ๋ฉด ์ ๋ผ! ํ ์ด๋ธ์ ๋๋ฌด ๋ง์ด ์ชผ๊ฐ๋ฉด ์กฐ์ธ์ด ๋ง์์ ธ์ ์คํ๋ ค ์ฑ๋ฅ์ด ๋จ์ด์ ธ. 3NF ์ ๋๋ฉด ์ถฉ๋ถํ๋ค๋ ๊ฑธ ๊ธฐ์ตํด!
### โ ์ค์ 2: ์๋ฏธ ์๋ ID ๋จ๋ฐ ๋ชจ๋ ํ ์ด๋ธ์ ๋ฌด์กฐ๊ฑด auto_increment ID๋ฅผ ๋ถ์ด๋ ๊ฒฝ์ฐ๊ฐ ์์ด. ํ์ง๋ง ๋๋ก๋ ์์ฐํค(Natural Key)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๋ ๋์ ์ ์์ด.
์๋ฅผ ๋ค์ด "๊ตญ๊ฐ ์ฝ๋" ํ ์ด๋ธ์ด๋ผ๋ฉด ๊ตณ์ด ID๋ฅผ ๋ง๋ค ํ์ ์์ด ISO ๊ตญ๊ฐ ์ฝ๋(KR, US ๋ฑ)๋ฅผ ๊ธฐ๋ณธํค๋ก ์ฐ๋ ๊ฒ ๋ ์ง๊ด์ ์ด์ง.
### โ ์ค์ 3: NULL ๊ฐ ๋จ์ฉ "์ผ๋จ NULL ํ์ฉํ๊ณ ๋์ค์ ์๊ฐํ์!"
์ด๊ฒ๋ ์ํํด! NULL์ "๊ฐ์ด ์์"๊ณผ "์ ์ ์์"์ ๊ตฌ๋ถํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค์ด. ๊ฐ๋ฅํ๋ฉด NOT NULL ์ ์ฝ์กฐ๊ฑด์ ๊ฑธ๊ณ , ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ๋ ๊ฒ ์ข์.
### โ ์ค์ 4: ๋ฐ์ดํฐ ํ์ ์๋ชป ์ ํ ์ ํ๋ฒํธ๋ฅผ ์ซ์ํ์ผ๋ก ์ ์ฅํ๊ฑฐ๋, ๋ ์ง๋ฅผ ๋ฌธ์์ด๋ก ์ ์ฅํ๋ ๊ฒฝ์ฐ๊ฐ ์์ด. ์ด๋ฌ๋ฉด ๋์ค์ ์ ๋ ฌ์ด๋ ๊ฒ์ํ ๋ ๋ฌธ์ ๊ฐ ์๊ฒจ!
๋์ค์๋ ๋ฐ์ดํฐ๊ฐ ์์ฌ์ ์ธ๋ฑ์ค ์ถ๊ฐํ๋ ๊ฒ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ค! ์ฒ์ ์ค๊ณํ ๋๋ถํฐ ์์ฃผ ๊ฒ์ํ ์ปฌ๋ผ์๋ ์ธ๋ฑ์ค๋ฅผ ๊ณ ๋ คํด์ผ ํด.
### โ ์ค์ 6: ๋ช ๋ช ๊ท์น ๋ฌด์ ํ ์ด๋ธ ์ด๋ฆ์ ๋ณต์ํ, ์ปฌ๋ผ ์ด๋ฆ์ ๋จ์ํ... ์ด๋ฐ ๊ท์น์ ๋ฌด์ํ๊ณ ์ ๋ฉ๋๋ก ์ง๋ ๊ฒฝ์ฐ๊ฐ ์์ด. ์ผ๊ด์ฑ ์๋ ๋ช ๋ช ๊ท์น์ ์ ๋ง ์ค์ํด!
- ํ ์ด๋ธ๋ช : ์๋ฌธ์, ๋ณต์ํ (users, products, orders)
- ์ปฌ๋ผ๋ช : ์๋ฌธ์, ์ธ๋์ค์ฝ์ด ๊ตฌ๋ถ (user_id, created_at)
- ์ธ๋ํค: ์ฐธ์กฐ ํ ์ด๋ธ๋ช _id (user_id, product_id)
- ์ธ๋ฑ์ค: idx_ํ ์ด๋ธ๋ช _์ปฌ๋ผ๋ช (idx_users_email)
### ๐จ ์ธ๋ฑ์ค ์ ๋ต
### ๐ ์บ์ฑ ์ ๋ต ์์ฃผ ์กฐํ๋์ง๋ง ์ ๋ณํ์ง ์๋ ๋ฐ์ดํฐ๋ ์บ์๋ฅผ ํ์ฉํด. ์นดํ ๊ณ ๋ฆฌ ๋ชฉ๋ก ๊ฐ์ ๊ฑด Redis ๊ฐ์ ์บ์์ ์ ์ฅํด๋๋ฉด DB ๋ถํ๋ฅผ ์ค์ผ ์ ์์ด.
### ๐ ํต๊ณ ํ ์ด๋ธ ๋ถ๋ฆฌ ์ค์๊ฐ์ผ๋ก ์ง๊ณํ ํ์ ์๋ ํต๊ณ ๋ฐ์ดํฐ๋ ๋ณ๋ ํ ์ด๋ธ๋ก ๋ถ๋ฆฌํด. ์๋ฅผ ๋ค์ด "์ผ๋ณ ํ๋งค ํต๊ณ"๋ ๋ฐฐ์น ์์ ์ผ๋ก ๋ฏธ๋ฆฌ ๊ณ์ฐํด์ ์ ์ฅํด๋๋ฉด ์กฐํ๊ฐ ํจ์ฌ ๋นจ๋ผ์ ธ!
### ๐ ์คํ ์คํค๋ง (Star Schema) ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์์ ๋ง์ด ์ฐ๋ ๊ธฐ๋ฒ์ด์ผ. ์ค์์ ํฉํธ ํ ์ด๋ธ์ด ์๊ณ , ์ฃผ๋ณ์ ์ฐจ์ ํ ์ด๋ธ๋ค์ด ๋ณ์ฒ๋ผ ๋ฐฐ์น๋๋ ๊ตฌ์กฐ์ง.
์๋ฅผ ๋ค์ด ํ๋งค ๋ถ์ ์์คํ ์ด๋ผ๋ฉด:
- ํฉํธ ํ ์ด๋ธ: ํ๋งค ๋ด์ญ (๋งค์ถ, ์๋ ๋ฑ)
- ์ฐจ์ ํ ์ด๋ธ: ์๊ฐ, ์ํ, ๊ณ ๊ฐ, ์ง์ญ ๋ฑ
์ด๋ ๊ฒ ํ๋ฉด ๋ณต์กํ ๋ถ์ ์ฟผ๋ฆฌ๋ฅผ ๋น ๋ฅด๊ฒ ์คํํ ์ ์์ด!
### โ๏ธ ์ค๋ ธ์ฐํ๋ ์ดํฌ ์คํค๋ง (Snowflake Schema) ์คํ ์คํค๋ง๋ฅผ ๋ ์ ๊ทํํ ๋ฒ์ ์ด์ผ. ์ฐจ์ ํ ์ด๋ธ์ ๋ ์ธ๋ถํํด์ ๋์ก์ด ๋ชจ์์ฒ๋ผ ๋ง๋๋ ๊ฑฐ์ง. ์ ์ฅ ๊ณต๊ฐ์ ์ ์ฝ๋์ง๋ง ์กฐ์ธ์ด ๋ง์์ ธ์ ์ฑ๋ฅ์ ์ข ๋จ์ด์ง ์ ์์ด.
### ๐ ์ฌ๋ก์ฐ๋ฆฌ ์ฒด์ธ์ง ๋๋ฉ์ (SCD) ์๊ฐ์ ๋ฐ๋ผ ๋ณํ๋ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๊ด๋ฆฌํ ์ง์ ๋ํ ๊ธฐ๋ฒ์ด์ผ. ์๋ฅผ ๋ค์ด ๊ณ ๊ฐ์ ์ฃผ์๊ฐ ๋ฐ๋์์ ๋:
- Type 1: ๊ทธ๋ฅ ๋ฎ์ด์ฐ๊ธฐ (์ด๋ ฅ ์์)
- Type 2: ์ ๋ ์ฝ๋ ์ถ๊ฐ (์ ์ฒด ์ด๋ ฅ ๋ณด์กด)
- Type 3: ์ด์ ๊ฐ์ ๋ณ๋ ์ปฌ๋ผ์ ์ ์ฅ (์ ํ์ ์ด๋ ฅ)
์ํฉ์ ๋ง๊ฒ ์ ํํ๋ฉด ๋ผ!
### ๐ ๋ฌธ์ : ๋์๊ด ๊ด๋ฆฌ ์์คํ ์ค๊ณ ๋ค์ ์๊ตฌ์ฌํญ์ ๋ง์กฑํ๋ ERD๋ฅผ ์ค๊ณํด๋ด:
1. ํ์์ ์ฌ๋ฌ ๊ถ์ ์ฑ ์ ๋์ถํ ์ ์๋ค
2. ํ ๊ถ์ ์ฑ ์ ์ฌ๋ฌ ํ์์ด ๋์ถํ ์ ์๋ค (์๊ฐ์ฐจ๋ก)
3. ์ฑ ์ ์นดํ ๊ณ ๋ฆฌ์ ์ํ๋ค
4. ๋์ถ ์ด๋ ฅ์ ๊ด๋ฆฌํด์ผ ํ๋ค
5. ์ฐ์ฒด๋ฃ๋ฅผ ๊ณ์ฐํ ์ ์์ด์ผ ํ๋ค
### ๐ก ํํธ - ํ์ํ ์ํฐํฐ: ํ์, ์ฑ , ์นดํ ๊ณ ๋ฆฌ, ๋์ถ
- ๋์ถ ํ ์ด๋ธ์๋ ๋์ถ์ผ, ๋ฐ๋ฉ์์ ์ผ, ์ค์ ๋ฐ๋ฉ์ผ์ด ํ์ํด
- ์ฐ์ฒด๋ฃ๋ ์ ๋ ์์ฑ์ผ๋ก ๊ณ์ฐ ๊ฐ๋ฅํด
### โ ํด๋ต (๊ฐ๋จ ๋ฒ์ ) **ํ์(Member)**
- member_id (PK)
- name
- email
- phone
- join_date
**์ฑ
(Book)**
- book_id (PK)
- category_id (FK)
- title
- author
- isbn
- publish_date
**์นดํ
๊ณ ๋ฆฌ(Category)**
- category_id (PK)
- name
**๋์ถ(Loan)**
- loan_id (PK)
- member_id (FK)
- book_id (FK)
- loan_date
- due_date
- return_date
- status
์ฐ์ฒด๋ฃ๋ (return_date - due_date) * ์ผ์ผ์ฐ์ฒด๋ฃ๋ก ๊ณ์ฐํ๋ฉด ๋ผ!### ๐ NoSQL๊ณผ ERD ์์ฆ์ MongoDB ๊ฐ์ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ง์ด ์ฐ์์? NoSQL์์๋ ์ ํต์ ์ธ ERD๊ฐ ๋ ์ค์ํด ๋ณด์ด์ง๋ง, ๊ทธ๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค๊ณ๋ ํ์ํด!
NoSQL์์๋ "์ปฌ๋ ์ "๊ณผ "๋ํ๋จผํธ" ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๋๋ฐ, ์ด๊ฒ๋ ์ผ์ข ์ ๋ชจ๋ธ๋ง์ด์ผ. ์๋ฒ ๋ฉ(Embedding)ํ ์ง ์ฐธ์กฐ(Reference)ํ ์ง ๊ฒฐ์ ํ๋ ๊ฒ ๊ด๊ณํ DB์ ์ ๊ทํ์ ๋น์ทํ ๊ณ ๋ฏผ์ด์ง.
### ๐ฏ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์์๋ ๊ฐ ์๋น์ค๊ฐ ์๊ธฐ๋ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ์ ธ. ์ด๋ ์๋น์ค ๊ฐ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ด๋ป๊ฒ ์ ์งํ ์ง๊ฐ ์ค์ํ ๊ณผ์ ์ผ.
์ด๋ฒคํธ ์์ฑ(Event Sourcing)์ด๋ CQRS(Command Query Responsibility Segregation) ๊ฐ์ ํจํด๋ค์ด ์ฃผ๋ชฉ๋ฐ๊ณ ์์ด.
### ๐ค AI์ ์๋ํ ์์ฆ์ AI๊ฐ ERD๋ฅผ ์๋์ผ๋ก ์์ฑํด์ฃผ๋ ๋๊ตฌ๋ค๋ ๋์ค๊ณ ์์ด! ์๊ตฌ์ฌํญ ๋ฌธ์๋ฅผ ์ ๋ ฅํ๋ฉด ERD ์ด์์ ๋ง๋ค์ด์ฃผ๋ ๊ฑฐ์ง. ๋ฌผ๋ก ์์ง์ ์ฌ๋์ ๊ฒํ ๊ฐ ํ์ํ์ง๋ง, ์ ์ ๋ฐ์ ํ๊ณ ์์ด.
### โ๏ธ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค AWS Aurora, Google Cloud Spanner ๊ฐ์ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ค์ด ๋ฑ์ฅํ๋ฉด์, ํ์ฅ์ฑ๊ณผ ๊ฐ์ฉ์ฑ์ ๊ณ ๋ คํ ์ค๊ณ๊ฐ ๋ ์ค์ํด์ก์ด.
๋ ๊น์ด ๊ณต๋ถํ๊ณ ์ถ๋ค๋ฉด ์ด๋ฐ ๊ฒ๋ค์ ์ถ์ฒํด:
### ๐ ์ถ์ฒ ๋์ - "๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์ ๊ตฌ์ถ" - ์ค๋ฌด ์ค์ฌ์ ์ข์ ์ฑ ์ด์ผ
- "SQL ์ฒซ๊ฑธ์" - ๊ธฐ์ด๋ถํฐ ํํํ๊ฒ ๋ฐฐ์ธ ์ ์์ด
- "Real MySQL" - MySQL ์ฌ์ฉ์๋ผ๋ฉด ํ๋ ์!
### ๐ ์จ๋ผ์ธ ๊ฐ์ - Udemy, ์ธํ๋ฐ ๋ฑ์ ์ข์ ๊ฐ์๋ค์ด ๋ง์
- YouTube์๋ ๋ฌด๋ฃ ๊ฐ์๊ฐ ๋ง์ผ๋ ํ์ฉํด๋ด
- ๋ํ ๊ฐ์ ์๋ฃ๋ค๋ ๊ฒ์ํ๋ฉด ๋์
### ๐ป ์ค์ต ํ๋ก์ ํธ ์ด๋ก ๋ง ๋ฐฐ์ฐ์ง ๋ง๊ณ ์ง์ ํ๋ก์ ํธ๋ฅผ ํด๋ด! ๊ฐ๋จํ ๊ฒ๋ถํฐ ์์ํด:
1. ๊ฐ์ธ ์ผ์ ๊ด๋ฆฌ ์์คํ
2. ๊ฐ๋จํ ๋ธ๋ก๊ทธ ์์คํ
3. ์ผํ๋ชฐ ์์คํ
4. SNS ์์คํ
๋ณต์ก๋๋ฅผ ์ ์ ๋์ฌ๊ฐ๋ฉด์ ์ฐ์ตํ๋ฉด ์ค๋ ฅ์ด ์ฅ์ฅ ๋ ๊ฑฐ์ผ! ๐ช
ERD ์ค๊ณ์ ์ ๊ทํ๋ ์ฒ์์๋ ์ด๋ ต๊ฒ ๋๊ปด์ง ์ ์์ด. ํ์ง๋ง ๊ณ์ ์ฐ์ตํ๋ค ๋ณด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๋ชธ์ ๋ฐฐ๊ฒ ๋ผ. ๋ง์น ์์ ๊ฑฐ ํ๋ ๋ฒ์ ๋ฐฐ์ฐ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ผ! ๐ด
- โ ERD๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค๊ณ๋์ผ
- โ ์ ๊ทํ๋ 3NF๊น์ง๋ง ํด๋ ์ถฉ๋ถํด
- โ ์ํฉ์ ๋ฐ๋ผ ์ญ์ ๊ทํ๋ ๊ณ ๋ คํด์ผ ํด
- โ ์ฑ๋ฅ๊ณผ ์ ์ง๋ณด์์ฑ์ ๊ท ํ์ด ์ค์ํด
- โ ๋ช ๋ช ๊ท์น๊ณผ ์ผ๊ด์ฑ์ ์ง์ผ์ผ ํด
- โ ์ค์ ํ๋ก์ ํธ๋ก ์ฐ์ตํ๋ ๊ฒ ์ต๊ณ ์ผ
ํผ์ ๊ณต๋ถํ๊ธฐ ์ด๋ ต๋ค๋ฉด ์ฃผ์ ํ์ง ๋ง๊ณ ๋์์ ์์ฒญํด. ์ปค๋ฎค๋ํฐ์ ์ง๋ฌธํ๊ฑฐ๋, ๋ฉํ ๋ฅผ ์ฐพ๊ฑฐ๋, ์คํฐ๋ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์ผ. ํนํ ์ค๋ฌด ๊ฒฝํ์ด ์๋ ์ฌ๋๋ค์ ์กฐ์ธ์ ์ ๋ง ๊ฐ์ง ๊ฑฐ๊ฑฐ๋ !
์, ์ด์ ์ง์ ERD๋ฅผ ๊ทธ๋ ค๋ณด๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค๊ณํด๋ด! ์ฒ์์๋ ์ํด๋ฌ๋ ๊ด์ฐฎ์. ์ค์ํ๋ฉด์ ๋ฐฐ์ฐ๋ ๊ฒ ๊ฐ์ฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ด๋๊น. ๐ช
ํ์ดํ ! ๋ ํ ์ ์์ด! ๐โจ
๊ด๋ จ ํค์๋
๋๊ธ ์์ฑ
์ด ๊ธ์ ๋ํ ์ฌ๋ฌ๋ถ์ ์๊ฐ์ ๋ค๋ ค์ฃผ์ธ์
๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค
๋๊ธ์ ์์ฑํ๋ ค๋ฉด ๋จผ์ ๋ก๊ทธ์ธํด์ฃผ์ธ์.
๋๊ธ 0
์ง์์ธ์ ์ฒ - ์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
- ์ ์๊ถ ๋ฐ ์์ ๊ถ: ๋ณธ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ๋ ์ AI ๊ธฐ์ ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ํ๋ฏผ๊ตญ ์ ์๊ถ๋ฒ ๋ฐ ๊ตญ์ ์ ์๊ถ ํ์ฝ์ ์ํด ๋ณดํธ๋ฉ๋๋ค.
- AI ์์ฑ ์ปจํ ์ธ ์ ๋ฒ์ ์ง์: ๋ณธ AI ์์ฑ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ์ง์ ์ฐฝ์๋ฌผ๋ก ์ธ์ ๋๋ฉฐ, ๊ด๋ จ ๋ฒ๊ท์ ๋ฐ๋ผ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ฌ์ฉ ์ ํ: ์ฌ๋ฅ๋ท์ ๋ช ์์ ์๋ฉด ๋์ ์์ด ๋ณธ ์ปจํ ์ธ ๋ฅผ ๋ณต์ , ์์ , ๋ฐฐํฌ, ๋๋ ์์ ์ ์ผ๋ก ํ์ฉํ๋ ํ์๋ ์๊ฒฉํ ๊ธ์ง๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ง ๊ธ์ง: ๋ณธ ์ปจํ ์ธ ์ ๋ํ ๋ฌด๋จ ์คํฌ๋ํ, ํฌ๋กค๋ง, ๋ฐ ์๋ํ๋ ๋ฐ์ดํฐ ์์ง์ ๋ฒ์ ์ ์ฌ์ ๋์์ด ๋ฉ๋๋ค.
- AI ํ์ต ์ ํ: ์ฌ๋ฅ๋ท์ AI ์์ฑ ์ปจํ ์ธ ๋ฅผ ํ AI ๋ชจ๋ธ ํ์ต์ ๋ฌด๋จ ์ฌ์ฉํ๋ ํ์๋ ๊ธ์ง๋๋ฉฐ, ์ด๋ ์ง์ ์ฌ์ฐ๊ถ ์นจํด๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์์ง ๋๊ธ์ด ์์ต๋๋ค.