
๋ ผ๋ฆฌ์ ๋ชจ๋ธ๋ง์์ ์๋ณ๊ด๊ณ์ ๋น์๋ณ๊ด๊ณ๋ ํ ์ด๋ธ ๊ฐ์ ๊ฒฐํฉ ๊ฐ๋๋ฅผ ๊ฒฐ์ ํ๋ ํต์ฌ ๊ฐ๋ ์ด๋ค. ์๋ณ๊ด๊ณ๋ ๋ถ๋ชจ์ PK๊ฐ ์์์ PK๊น์ง ๊ด์ฌํ๋ ๊ฐํ ๊ฒฐํฉ์ด๊ณ , ๋น์๋ณ๊ด๊ณ๋ ๋ ๋ฆฝ์ ์ธ PK๋ฅผ ์ ์งํ๋ ์ฝํ ๊ฒฐํฉ์ด๋ค. ํ๋ ์ค๊ณ์์๋ ์ ์ฐ์ฑ๊ณผ ํ์ฅ์ฑ์ ์ํด ๋น์๋ณ๊ด๊ณ๋ฅผ ์์น์ผ๋ก ํ๋ค.
1. ๊ฐ๋ ์ ๋ณธ์ง
์๋ณ ๊ด๊ณ
- ๋ถ๋ชจ ํ ์ด๋ธ์ PK๋ฅผ ์์ ํ ์ด๋ธ์ PK + FK๋ก ์ฌ์ฉํ๋ค.
- ๋ถ๋ชจ ์์ด๋ ์์์ด ์๋ณ๋ ์ ์๋ ๊ฐํ ์ข ์ ๊ด๊ณ๋ค.
๋น์๋ณ ๊ด๊ณ
- ๋ถ๋ชจ ํ ์ด๋ธ์ PK๋ฅผ ์์ ํ ์ด๋ธ์ ์ผ๋ฐ ์ปฌ๋ผ(FK)์ผ๋ก๋ง ์ฐธ์กฐํ๋ค.
- ์์์ ๋ ๋ฆฝ์ ์ธ PK๋ฅผ ๊ฐ์ง๋ฉฐ ๋ถ๋ชจ์ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ ์ ์๋ค.
2. ์ผ๋๋ค(1:N) ๊ด๊ณ์์์ ์ฐจ์ด
๋น์๋ณ ๊ด๊ณ
- ์์ ํ ์ด๋ธ์ ๋ ๋ฆฝ์ ์ธ PK(๋๋ฆฌ ํค)๋ฅผ ๊ฐ์ง๋ค. ๊ตฌ์กฐ๊ฐ ๋จ์ํ๊ณ ๋ช ํํ๋ฉฐ ๊ด๊ณ ๋ณ๊ฒฝ์ ์ ์ฐํ๋ค. ORM๊ณผ๋ ์์ฐ์ค๋ฝ๊ฒ ๋งคํ๋๋ค.
์๋ณ ๊ด๊ณ
- ๋ถ๋ชจ PK๋ฅผ ํฌํจํ ๋ณตํฉํค๋ฅผ ์์์ PK๋ก ์ฌ์ฉํ๋ค. PK ์์ฒด๊ฐ ๋น์ฆ๋์ค ์๋ฏธ๋ฅผ ๊ฐ์ง์ง๋ง ๋ณตํฉํค ๊ด๋ฆฌ๊ฐ ๋ณต์กํ๊ณ ํ์ฅ์ฑ์ด ๋จ์ด์ง๋ค.
์๋ณ ๊ด๊ณ์ ๋ฌธ์ ์
- ์ ์ฐ์ฑ ๋ถ์กฑ: PK๋ก ๊ฐํ๊ฒ ๊ฒฐํฉ๋์ด ๋น์ฆ๋์ค ๋ณ๊ฒฝ์ ๋์ํ๊ธฐ ์ด๋ ต๋ค.
- PK ์ ํ: ๋ถ๋ชจ-์์-์์ ๊ณ์ธต์ด ๊น์ด์ง์๋ก PK๊ฐ ๊ธธ๊ณ ๋ณต์กํด์ง๋ค. SQL๊ณผ ORM ๋งคํ์ด ์ด๋ ค์์ง๋ค.
3. ์ฟผ๋ฆฌ์ ์ฑ๋ฅ ๊ด์
์ฟผ๋ฆฌ ๋จ์์ฑ
- ๋น์๋ณ ๊ด๊ณ๋ ๋จ์ผ PK๋ฅผ ์ฌ์ฉํ๋ฏ๋ก WHERE ์กฐ๊ฑด๊ณผ JOIN์ด ๋จ์ํ๋ค. API ์ค๊ณ์ ๊ฐ๋ฐ ํธ์์ฑ์ด ๋๋ค.
์ธ๋ฑ์ค ์ฑ๋ฅ
- ์๋ณ ๊ด๊ณ๋ ๋ณตํฉ PK ์ธ๋ฑ์ค๋ก ํน์ ์กฐํ(๋ถ๋ชจ์ ์ํ ์์ ์ ์ฒด)๊ฐ ๋น ๋ฅด๋ค.
- ๋น์๋ณ ๊ด๊ณ๋ FK์ ์ธ๋ฑ์ค๋ฅผ ์ง์ ์์ฑํด์ผ ํ๋ค.
- ํ์ง๋ง FK ์ธ๋ฑ์ค ์ถ๊ฐ๋ ๊ฐ๋จํ๊ณ , ์ฌ์ํ ์ฑ๋ฅ ์ด์ ์ ์ํด ์ค๊ณ์ ์ ์ฐ์ฑ์ ํฌ์ํ๋ ๊ฒ์ ํ๋ช ํ์ง ์๋ค.
4. ์ผ๋์ผ(1:1) ๊ด๊ณ
๋น์๋ณ ๊ด๊ณ
- ์์ ํ ์ด๋ธ์ ๋ ๋ฆฝ PK๋ฅผ ๊ฐ์ง๋ฉฐ FK์ UNIQUE ์ ์ฝ์กฐ๊ฑด์ ์ถ๊ฐํ๋ค. ๊ฒฐํฉ๋๊ฐ ๋ฎ๊ณ ํฅํ 1:N์ผ๋ก ํ์ฅ ๊ฐ๋ฅํ๋ค.
์๋ณ ๊ด๊ณ
- ์์์ PK๊ฐ ๋ถ๋ชจ PK์ ๋์ผํ๋ค. ๊ตฌ์กฐ์ ์ผ๋ก ๊ฐํ ๊ฒฐํฉ์ ํํํ์ง๋ง ์ ์ฐ์ฑ์ด ๋ฎ๋ค.
- 1:1์ด 1:N์ผ๋ก ๋ณ๊ฒฝ๋ ๊ฐ๋ฅ์ฑ์ ๊ณ ๋ คํ๋ฉด ๋น์๋ณ ๊ด๊ณ๊ฐ ํจ์ฌ ์ ๋ฆฌํ๋ค.
5. ๋ค๋๋ค(M:N) ๊ด๊ณ
์๋ณ ๊ด๊ณ
- ์ฐ๊ฒฐ ํ ์ด๋ธ์์ ์์ชฝ ๋ถ๋ชจ PK๋ฅผ ๋ณตํฉ PK๋ก ์ฌ์ฉํ๋ค.
- 'ํ๋์ ์ฃผ๋ฌธ์ ๋์ผ ์ํ ์ค๋ณต ๋ถ๊ฐ' ๊ฐ์ ๊ท์น์ ๊ฐ์ ํ์ง๋ง ๊ท์น ๋ณ๊ฒฝ ์ PK ์์ ์ด ํ์ํ๋ค.
๋น์๋ณ ๊ด๊ณ
- ๋ ๋ฆฝ์ ์ธ PK๋ฅผ ์ฌ์ฉํ๊ณ FK ์กฐํฉ์ UNIQUE ์ ์ฝ์กฐ๊ฑด์ ๋๋ค. ์ ์ฐ์ฑ๊ณผ ์ ํฉ์ฑ์ ๋ชจ๋ ํ๋ณดํ๋ค.
6. ํ๋ ์ค๊ณ ํธ๋ ๋
๋น์๋ณ ๊ด๊ณ๋ ์ ์ฐ์ฑ, ๊ตฌ์กฐ ๋จ์์ฑ, ORM ์นํ์ฑ, ๋น์ฆ๋์ค ๋ถ๋ฆฌ ์ธก๋ฉด์์ ์๋์ ์ด๋ค.
๋ณํ์ ๋ฏผ์ฒฉํด์ผ ํ๋ ํ๋ ์ํํธ์จ์ด ํ๊ฒฝ์์ ์ฌ์ค์ ํ์ค์ผ๋ก ์๋ฆฌ์ก์๋ค.
์ค๊ณ์ ํฉ๊ธ๋ฅ โญโญโญ
1. ๊ธฐ๋ณธ ํค(PK)
- ํ ์ด๋ธ์ PK๋ ๋น์ฆ๋์ค์ ๋ฌด๊ดํ ๋๋ฆฌ ํค๋ฅผ ์ฌ์ฉํ๋ค.
- BIGINT AUTO_INCREMENT๊ฐ ๊ฐ์ฅ ์ผ๋ฐ์ ์ด๋ค.
2. ๊ด๊ณ
- ๋ชจ๋ ๊ด๊ณ๋ ๋น์๋ณ ๊ด๊ณ๋ก ์ค๊ณํ๋ค.
- ๋ถ๋ชจ PK๋ ์์์ ์ผ๋ฐ ์ปฌ๋ผ(FK)์ผ๋ก๋ง ์ฐธ์กฐํ๋ค.
3. ๋น์ฆ๋์ค ๊ท์น
- ์ค๋ณต ๋ฐฉ์ง ๋ฑ ๊ท์น์ UNIQUE ์ ์ฝ์กฐ๊ฑด์ผ๋ก ๋ณด์ฅํ๋ค.
- PK๋ก ํด๊ฒฐํ๋ ค ํ์ง ์๋๋ค.
๊ฒฐ๋ก
ํต์ฌ ์ํฐํฐ ๋จผ์
- ๊ธฐ๋ณธ ํ ์ด๋ธ๋ถํฐ ์ค๊ณํ๋ค. ๋ค๋ฅธ ํ ์ด๋ธ์ ๋ถ๋ชจ ์ญํ ์ ํ๋ ํ ์ด๋ธ์ด ๋ง๋ค.
- ์์ฐ ํค ํ๋ณด์๋ UNIQUE ์ ์ฝ์กฐ๊ฑด์ ๊ฑด๋ค.
๊ด๊ณ ํ ์ด๋ธ ์ค๊ณ
- 1:N, M:N ๊ด๊ณ ํ ์ด๋ธ์ ๋ง๋ ๋ค. M:N์ ์ฐ๊ฒฐ ํ ์ด๋ธ๋ก ํด์ํ๋ค.
1:1 ๊ด๊ณ ํ ์ด๋ธ
- NOT NULL, UNIQUE ์ ์ฝ์กฐ๊ฑด์ ์ถ๊ฐํ๋ค.
ํฉ๊ธ๋ฅ ์ ์งํค๋ฉด ๋ณต์กํ ๋น์ฆ๋์ค ํ๊ฒฝ์์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ํ๋ค๋ฆฌ์ง ์๋๋ค.
์๋ณ๊ด๊ณ๋ ๊ณผ๊ฑฐ์ ์ ์ฐ์ด๋ค. ํ๋ ์ค๊ณ๋ ๋น์๋ณ + ๋๋ฆฌํค๋ก ๊ฐ๋ค!!!!!!
'Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง โ ์ ๊ทํ์ ๋ชจ๋ ๊ฒ (0) | 2026.01.03 |
|---|---|
| ๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง โ Relation(๊ด๊ณ)์ ๋ชจ๋ ๊ฒ (0) | 2026.01.03 |
| ๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง โ ํค(Key)์ ๋ชจ๋ ๊ฒ (0) | 2026.01.03 |
| Postgres์ PostGIS ๊ฐ๋ , ์ปค๋จธ์ค ํ์ฉ ์ฌ๋ก ๋ฐ ์ค์น ๊ฐ์ด๋ (1) | 2026.01.01 |
| ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋์์ฑ ์ ์ด (0) | 2026.01.01 |