
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ Relation(๊ด๊ณ) ๋ ํ ์ด๋ธ ๊ฐ์ ์ฐ๊ฒฐ์ ์ ์ํ๋ ํต์ฌ ์์๋ค.
๋ ผ๋ฆฌ์ ๋ชจ๋ธ๋ง์์๋ ์ฐธ์ฌ๋, ์ธ๋ ํค ์์น, ์นด๋๋๋ฆฌํฐ(1:1, 1:N, M:N)๋ฅผ ์ ํํ ์ค๊ณํด์ผ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ๊ณผ ์กฐํ ํจ์จ์ด ๋ณด์ฅ๋๋ค.
์ด ๊ธ์์๋ ๊ด๊ณ์ ๊ธฐ๋ณธ ์์น๋ถํฐ 1:1, M:N ๊ด๊ณ์ ์ค๋ฌด ๊ตฌํ ํจํด๊น์ง ์ ๋ฆฌํ๋ค.
1. ๊ด๊ณ์ ๊ธฐ๋ณธ ์์น
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๊ณ๋ ๋ฐฉํฅ์ด ์๋ค.
JOIN์ ํตํด ์ด๋ ์ชฝ์์๋ ์๋ฐฉํฅ์ผ๋ก ์์ ๋กญ๊ฒ ํ์ํ ์ ์๋ค. ์ธ๋ ํค๋ ๋จ์ํ ์ ์ฝ์กฐ๊ฑด์ผ ๋ฟ, ์กฐํ ๋ฐฉํฅ์ ์ ํํ์ง ์๋๋ค.
์ฐธ์ฌ๋(Participation)
- ์ฐธ์ฌ๋๋ ์ํฐํฐ๊ฐ ๊ด๊ณ์ ํ์(Mandatory)์ธ์ง ์ ํ(Optional)์ธ์ง๋ฅผ ๋ํ๋ธ๋ค.
- ๋ ผ๋ฆฌ์ ๋ชจ๋ธ๋ง์์๋ ์ธ๋ ํค์ NULL ํ์ฉ ์ฌ๋ถ๋ก ๊ตฌํํ๋ค.
๊น๋ง๊ท๋ฐ ํ๊ธฐ๋ฒ ํต์ฌ ์์น
- ํ ์ํฐํฐ ์ชฝ ๋์ ์๋ ๊ธฐํธ๋ ๋ฐ๋ํธ ์ํฐํฐ์ ๋ํ ๊ท์น์ ์ค๋ช ํ๋ค.
- ๊ด๊ณ์ ๋์ ๊ธฐํธ๋ ๋ฐ๋ํธ ์ํฐํฐ์ ์ต์/์ต๋ ์ฐธ์ฌ ์๋ฅผ ๋ปํ๋ค.


2. ERD์ ๋น์ฆ๋์ค ๊ท์น
ERD๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฝ์กฐ๊ฑด์ผ๋ก ๊ตฌํํ๊ธฐ ์ด๋ ค์ด ๋น์ฆ๋์ค ๊ท์น๋ ๊ทธ๋๋ก ํํํ๋ค.
DDL์ ERD ์ค DB๊ฐ ๊ฐ์ ํ ์ ์๋ ๋ถ๋ถ๋ง ๊ตฌํํ๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์์ DDL๋ก ๊ตฌํํ์ง ๋ชปํ ๋๋จธ์ง ๊ท์น์ ์ฒ๋ฆฌํ๋ค.
๊ด๊ณํ DB์ ๊ธฐ๋ณธ ๋ฒ์น
- ์ธ๋ ํค๋ ํญ์ '๋ค(N)' ์ชฝ์ ์กด์ฌํ๋ค.
- FK๋ฅผ N์ชฝ์ ๋๋ฉด NULL๋ก ์ ํ์ ๊ด๊ณ๋ฅผ ํํํ ์ ์๋ค.
- ๋ถ๋ชจ-์์ ๊ด๊ณ์์ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ์งํจ๋ค.
- PK๋ ์ ์ผํ๋ค: ๋์ผ PK ํ์ ์กด์ฌํ ์ ์๋ค.
- FK๋ ๋จ์ผ ํ๋ง ์ฐธ์กฐํ๋ค: ํ ๊ฐ์ด ์ ํํ ํ๋์ ํ์ ๊ฐ๋ฆฌํจ๋ค.
- ์ปฌ๋ผ์ ์์์ : ํ๋์ ์ปฌ๋ผ์ ์ฌ๋ฌ ๊ฐ ๋ฃ์ง ์๋๋ค (์ 1์ ๊ทํ).
3. ์ผ๋์ผ(1:1) ๊ด๊ณ
1:1 ๊ด๊ณ๋ ๋๋ฌผ์ง๋ง ์ฑ๋ฅ ์ต์ ํ, ๋ณด์, ์ ํ์ ์ ๋ณด ๋ถ๋ฆฌ, ๊ด์ฌ์ฌ ๋ถ๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉํ๋ค.
DB์์ 1:1์ ๊ฐ์ ํ๋ ค๋ฉด ์ธ๋ ํค์ UNIQUE ์ ์ฝ์กฐ๊ฑด์ ์ถ๊ฐํ๋ค.
์ธ๋ ํค ์์น ์ ํ
๋ณด์กฐ ํ ์ด๋ธ์ FK (๊ถ์ฅ)
- ์ฃผ ํ ์ด๋ธ ๋ณ๊ฒฝ ์์ด ๊ด๊ณ ์ถ๊ฐ ๊ฐ๋ฅ
- 1:N์ผ๋ก ํ์ฅ ์ฉ์ด
- ๊ฐ๋ฐฉ-ํ์ ์์น(OCP) ๋ง์กฑ
์ฃผ ํ ์ด๋ธ์ FK (์์ธ์ )
- ๊ด๊ณ๊ฐ ํ์์ ์ผ ๋: NOT NULL๋ก ์ ํฉ์ฑ ๊ฐ์
- ์กฐํ ์ฑ๋ฅ์ด ๊ทน๋๋ก ์ค์ํ ๋: JOIN ์์ด ์กด์ฌ ์ฌ๋ถ ํ์ธ
ํ์ฅ์ฑ ๋น๊ต
- ์์ธ๋ฅผ ์ ์ธํ๊ณ ๋ณด์กฐ ํ ์ด๋ธ์ FK๋ฅผ ๋๋ ๊ฒ์ด ํ์ค์ด๋ค. โญ๏ธ
| ์์น | ์ฅ์ | ๋จ์ |
| ๋ณด์กฐ ํ ์ด๋ธ | ํ์ฅ์ฑ ๋์, 1:N์ผ๋ก UNIQUE๋ง ์ ๊ฑฐํ๋ฉด ๋ณ๊ฒฝ | - |
| ์ฃผ ํ ์ด๋ธ | ์ฃผ ํ ์ด๋ธ ํ์ ๊ด๊ณ ๊ฐ์ ๊ฐ๋ฅ | ์กฐํ ๋น ๋ฆ ํ์ฅ์ฑ ๋ฎ์, ๋ก์ง ๋ณต์ก |
4. ๋ค๋๋ค(M:N) ๊ด๊ณ
๊ด๊ณํ DB๋ ์์์ฑ, PK ์ ์ผ์ฑ, FK ๋จ์ผ ์ฐธ์กฐ ์ ์ฝ ๋๋ฌธ์ M:N์ ์ง์ ํํํ ์ ์๋ค.
์ด ๋, ์ค๊ฐ์ ์ฐ๊ฒฐ ํ ์ด๋ธ(Junction Table)์ ๋๋ ๊ฒ์ด ๋ฐฉ๋ฒ์ด๋ค.
์ฐ๊ฒฐ ํ ์ด๋ธ์ ์ญํ


์ค๋ฌด์์ ๋๋ถ๋ถ ์ฐ๊ด ์ํฐํฐ(Associative Entity)๊ฐ ๋์ด ๋น์ฆ๋์ค ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค!
textA ํ
์ด๋ธ (1) ←→ (N) ์ฐ๊ฒฐ ํ
์ด๋ธ (1) ←→ (N) B ํ
์ด๋ธ
- ์์ชฝ PK๋ฅผ FK๋ก ๊ฐ์ ธ ๋ค๋ฆฌ ์ญํ ํ๋ค.
- JOIN์ผ๋ก ์๋ฐฉํฅ ์กฐํ ๊ฐ๋ฅ.
- ๊ด๊ณ ์์ฒด์ ์์ฑ(์ฃผ๋ฌธ ์๋, ๊ฐ๊ฒฉ ๋ฑ)์ ์ ์ฅํ๋ค.
์ฐ๊ด ์ํฐํฐ ์ถ์ฒ ์ด๋ฆ ๋ฐ ํน์ง
- ์ฐ๊ฒฐ ๊ฐ์กฐ
- ์ฃผ๋ฌธ์ํ(order_product)
- '์ฃผ๋ฌธ'๊ณผ '์ํ' ํ ์ด๋ธ์ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐํ๋ค๋ ๊ด๊ณ๋ฅผ ์ด๋ฆ์ ๋ช ์์ ์ผ๋ก ๋ณด์ฌ์ค๋ค.
- ๋งค์ฐ ์ง๊ด์ ์ด๊ณ ๋จ์ํ์ฌ ๊ด๊ณ๋ฅผ ํ์ ํ๊ธฐ ์ฝ๋ค๋ ์ฅ์ ์ด ์๋ค.
- ์ฃผ๋ฌธ์ํ(order_product)
- ์๋ฏธ ์๋ ์ด๋ฆ
- ์ฃผ๋ฌธ ํญ๋ชฉ(order_item)
- '์ฃผ๋ฌธ'์ ํฌํจ๋ 'ํญ๋ชฉ'์ด๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ฅ ๋ช ํํ๊ฒ ์ ๋ฌํ๋ค.
- ์ค์ ์ผํ๋ชฐ ๋น์ฆ๋์ค ๋ก์ง(์: ์ฅ๋ฐ๊ตฌ๋ ํญ๋ชฉ, ์ฃผ๋ฌธ ํญ๋ชฉ)๊ณผ ์ฉ์ด๊ฐ ์ผ์นํ์ฌ ์ดํดํ๊ธฐ ์ฝ๋ค.
- ์ฃผ๋ฌธ์์ธ(order_detail)
- '์ฃผ๋ฌธ์ ์์ธ ๋ด์ญ'์ด๋ผ๋ ์๋ฏธ๋ก, ‘order_item' ๊ณผ ๊ฑฐ์ ๋์ผํ ์๋ฏธ๋ก ๋๋ฆฌ ์ฌ์ฉ๋๋ค.
- ์ฃผ๋ฌธ์ ์ํ ๊ฐ ์ํ ์ ๋ณด๋ฅผ ์์ธํ ๋ํ๋ธ๋ค๋ ์ ์ ๊ฐ์กฐํ๋ค.
- ์ฃผ๋ฌธ ํญ๋ชฉ(order_item)
5. ๊ฐ๋ ์ vs ๋ ผ๋ฆฌ์ ๋ชจ๋ธ๋ง
์์ฑ ์๋ M:N
- ๊ฐ๋ ์ : M:N ๊ด๊ณ๋ก ํํ
- ๋ ผ๋ฆฌ์ : ์ฐ๊ฒฐ ํ ์ด๋ธ๋ก 1:N + 1:N ๋ถํด
์์ฑ ์๋ M:N
- ๊ฐ๋ ์ : ์ด๋ฏธ ์ฐ๊ด ์ํฐํฐ๋ก ํํ
- ๋ ผ๋ฆฌ์ : ๊ทธ๋๋ก ํ ์ด๋ธ ๊ตฌํ
์ค๋ฌด ํ: ์์ฑ ์๋ M:N์ ๋ฐ๊ฒฌํ๋ฉด "์ด ๊ด๊ณ์ ์ด๋ค ์ถ๊ฐ ์ ๋ณด๊ฐ ํ์ํ๊ฐ?"๋ฅผ ๊ณ ๋ฏผํ๋ค. ๋๋ถ๋ถ ์จ๊ฒจ์ง ์์ฑ์ด ๋๋ฌ๋ ์ฐ๊ด ์ํฐํฐ๊ฐ ๋๋ค.
๋ง๋ฌด๋ฆฌ

๋ ผ๋ฆฌ์ ๋ชจ๋ธ๋ง์์ ๊ด๊ณ ์ค๊ณ๋ ์ฐธ์ฌ๋, ์ธ๋ ํค ์์น, ์นด๋๋๋ฆฌํฐ๋ฅผ ์ ํํ ํ์ ํ๋ ๋ฐ ๋ฌ๋ ค ์๋ค.
1:1์ ๋ณด์กฐ ํ ์ด๋ธ์ FK + UNIQUE, M:N์ ์ฐ๊ฒฐ ํ ์ด๋ธ๋ก ํ์ด๋ธ๋ค.
์ด ํจํด์ ๋ฐ๋ฅด๋ฉด DB ์ ์ฝ๊ณผ ๋น์ฆ๋์ค ๊ท์น์ด ๋ชจ๋ ์กฐํ๋กญ๊ฒ ๊ตฌํ๋๋ค.
๋!
'Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง โ ์ ๊ทํ์ ๋ชจ๋ ๊ฒ (0) | 2026.01.03 |
|---|---|
| ๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง โ ์๋ณ๊ด๊ณ vs ๋น์๋ณ๊ด๊ณ (0) | 2026.01.03 |
| ๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง โ ํค(Key)์ ๋ชจ๋ ๊ฒ (0) | 2026.01.03 |
| Postgres์ PostGIS ๊ฐ๋ , ์ปค๋จธ์ค ํ์ฉ ์ฌ๋ก ๋ฐ ์ค์น ๊ฐ์ด๋ (1) | 2026.01.01 |
| ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋์์ฑ ์ ์ด (0) | 2026.01.01 |