
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์์ ๋ ผ๋ฆฌ์ ๋ชจ๋ธ๋ง(Logical Modeling) ์ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ์ ์ํ๊ณ ์ํฐํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ช ํํ ํ๋ ํต์ฌ ๋จ๊ณ๋ค. ๊ทธ์ค์์๋ Key ๋ ๋ฐ์ดํฐ์ ์ ์ฒด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ ๊ฐ์ฅ ์ค์ํ ์์๋ค. ์ด๋ฒ ๊ธ์์๋ Key์ ์ข ๋ฅ์ ์ญํ , ๊ทธ๋ฆฌ๊ณ ํ๋ ์ค๊ณ์์ ์ ๋๋ถ๋ถ์ ์์คํ ์ด ๋๋ฆฌ ํค(Surrogate Key) ๋ฅผ ์ ํํ๋์ง ์์๋ณด์.
1. Key๋ ๋ฌด์์ธ๊ฐ
Key๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ ํ(Row)์ ์ ์ผํ๊ฒ ์๋ณํ๊ธฐ ์ํ ์ฅ์น๋ค.
๋ฐ์ดํฐ๊ฐ ์๋ฌด๋ฆฌ ๋ง์๋ Key๋ฅผ ํตํด ํน์ ํ์ ์ ํํ ์ฐพ์๋ผ ์ ์์ด์ผ ํ๋ค.
์ด๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ถ๋ฐ์ ์ด๋ค.
2. ๊ธฐ๋ณธ ํค (Primary Key, PK)
๊ธฐ๋ณธ ํค๋ ํ ์ด๋ธ์ ๋ชจ๋ ํ์ ์ ์ผํ๊ฒ ์๋ณํ๋ ๋ํ ํค๋ค.
- NULL ๋ถ๊ฐ: ๊ฐ์ด ๋ฐ๋์ ์กด์ฌํด์ผ ํ๋ค.
- ์ ์ผ์ฑ ๋ณด์ฅ: ์ค๋ณต๋ ๊ฐ์ด ์์ด์๋ ์ ๋๋ค.
- ๋ถ๋ณ์ฑ ์ ์ง: ํ ๋ฒ ์ ํด์ง ๊ฐ์ ๋ณ๊ฒฝํ์ง ์๋๋ค.
์ด๋ก ์ ์ผ๋ก๋ PK๋ฅผ ์์ ํ ์ ์์ง๋ง,
์ค์ ๋ก๋ ์ธ๋ ํค ์ฐธ์กฐ์ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์ด ๋ณต์กํ๊ฒ ์ฝํ๊ธฐ ๋๋ฌธ์ ์ค๋ฌด์์๋ ์ ๋ ๋ณ๊ฒฝํ์ง ์๋๋ค.
3. ํ๋ณด ํค (Candidate Key)์ ๋์ฒด ํค (Alternate Key)
- ํ๋ณด ํค๋ ๊ธฐ๋ณธ ํค๊ฐ ๋ ์ ์๋ ๋ชจ๋ ํค๋ค.
- ์ ์ผ์ฑ๊ณผ ์ต์์ฑ์ ๋ชจ๋ ๋ง์กฑํด์ผ ํ๋ค.
- ๋์ฒด ํค๋ ํ๋ณด ํค ์ค์์ ๊ธฐ๋ณธ ํค๋ก ์ ํ๋์ง ์์ ๋๋จธ์ง ํค๋ค.
์๋ฅผ ๋ค์ด users ํ ์ด๋ธ์์ user_id์ email์ด ๋ชจ๋ ์ ์ผํ๋ค๋ฉด, ๋ ์ปฌ๋ผ ๋ชจ๋ ํ๋ณด ํค๋ค.
๊ทธ์ค user_id๋ฅผ ๊ธฐ๋ณธ ํค๋ก ์ ํํ๋ฉด email์ ๋์ฒด ํค๊ฐ ๋๋ค.
4. ์ธ๋ ํค (Foreign Key, FK)
์ธ๋ ํค๋ ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ฐ๊ฒฐํ๋ ์ญํ ์ ํ๋ค.
ํ ํ ์ด๋ธ์ ์ปฌ๋ผ์ด ๋ค๋ฅธ ํ ์ด๋ธ์ ๊ธฐ๋ณธ ํค๋ฅผ ์ฐธ์กฐํ๋ฉฐ, ๋ฐ์ดํฐ ๊ฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ค.
์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์๋ฐ์ ๋ฐฉ์งํ๊ธฐ ์ํด FK ์ ์ฝ์กฐ๊ฑด์ ์ ์คํ ์ค๊ณํด์ผ ํ๋ค.
5. ์์ฐ ํค (Natural Key)์ ๋๋ฆฌ ํค (Surrogate Key)
์์ฐ ํค
๋น์ฆ๋์ค ๋ก์ง์์ ์์ฐ์ค๋ฝ๊ฒ ์กด์ฌํ๋ ๊ฐ์ ๊ธฐ๋ณธ ํค๋ก ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
์๋ฅผ ๋ค์ด email, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ, ์ฌ์ ์๋ฑ๋ก๋ฒํธ ๋ฑ์ด ์์ฐ ํค์ ์์๋ค.
๋ฌธ์ ์
- ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์๋ฐ ๊ฐ๋ฅ์ฑ
- ์ฐ์ ์ ๋ฐ์ดํธ๋ก ์ธํ ์์คํ ๋ถํ
- ๋ฐ์ดํฐ ์ญ์ฌ์ฑ ํผ์
- ์ธ๋ถ ์์คํ ๊ณผ ์ถฉ๋ ๋ฐ์ ๊ฐ๋ฅ์ฑ
๋๋ฆฌ ํค
๋ฐ์ดํฐ ์๋ณ๋ง์ ๋ชฉ์ ์ผ๋ก ์ธ์์ ์ผ๋ก ์์ฑํ ํค๋ค.
๋ณดํต AUTO_INCREMENT ๋๋ UUID ๋ฑ์ ์ฌ์ฉํ๋ค.
์ด๋ค ๋น์ฆ๋์ค ์๋ฏธ๋ ๊ฐ์ง์ง ์์ผ๋ฉฐ, ์ค์ง ์๋ณ๋ง์ ๋ด๋นํ๋ค.
ํ๋์ ์ธ ์ค๊ณ ํจํด
- ๊ธฐ๋ณธ ํค๋ ๋๋ฆฌ ํค๋ก ์ค์ ํ๋ค.
- ์์ฐ ํค์๋ UNIQUE ์ ์ฝ์กฐ๊ฑด์ ๋ถ์ฌํด ์ค๋ณต์ ๋ฐฉ์งํ๋ค.
6. ์ฑ๋ฅ ํธ๋ ์ด๋์คํ
| ๊ตฌ๋ถ | ์ฅ์ | ๋จ์ |
| ์์ฐํค | ๋น์ฆ๋์ค ํค๋ก ์ง์ ์กฐํ ๊ฐ๋ฅ, JOIN ๋ถํ์ | ํฌ๊ธฐ๊ฐ ์ปค์ ์ธ๋ฑ์ค ๋จํธํ ๋ฐ ์ฑ๋ฅ ์ ํ |
| ๋๋ฆฌํค | ์ฐ๊ธฐ ์ฑ๋ฅ ์ฐ์, ๊ณต๊ฐ ํจ์จ ๋์ | ์ถ๊ฐ ์กฐ์ธ ํ์, UNIQUE ์ธ๋ฑ์ค ์ถ๊ฐ ๋ถ๋ด |
์์คํ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ๋๋ฆฌ ํค์ ์ฅ์ ์ด ๋๋ ทํด์ง๋ค.
๋ฐ์ดํฐ๊ฐ ์ปค์ง๊ณ ํธ๋ํฝ์ด ๋์ด๋ ์๋ก ๋จ์ํ๊ณ ์์ธก ๊ฐ๋ฅํ ์๋ณ์๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
7. ํ๋์ ์ค๊ณ ๋ฐฉํฅ โญ๏ธ
๋ค์๊ณผ ๊ฐ์ ํ๋ฆ์ด ๋๋ฆฌ ํค์ ์ฌ์ฉ์ ํ์ค์ผ๋ก ๋ง๋ค๊ณ ์๋ค.
- ๋น์ฆ๋์ค ๋ก์ง์ ์ฆ์ ๋ณํ๋ก ์ธํด ์์ฐ ํค๋ ์์ ์ฑ์ ์ ์งํ๊ธฐ ์ด๋ ต๋ค.
- ORM ๊ธฐ์ ์ด ๋ถ๋ณ ์๋ณ์๋ฅผ ์ ์ ๋ก ๋์ํ๋ค.
- ๋ถ์ฐ ์์คํ ๊ณผ MSA ๊ตฌ์กฐ์์๋ ์ธ๋ถ ์์กด๋๋ฅผ ์ค์ด๊ธฐ ์ํด ๋๋ฆฌ ํค๊ฐ ํ์ํ๋ค.
๋๋ฆฌ ํค๋ ๋ณํ๋ฌด์ํ ๋น์ฆ๋์ค ๋ก์ง์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ์ ID๋ฅผ ๋ณดํธํ๋ ์ตํ์ ๋ฐฉ์ด์ ์ด๋ค.
8. ๋ณตํฉ ํค (Composite Key)
๋ ๊ฐ ์ด์์ ์ปฌ๋ผ์ ๋ฌถ์ด ์ ์ผ์ฑ์ ํ๋ณดํ๋ ๋ฐฉ์์ด๋ค.
์: {user_id, role_id} ์กฐํฉ์ผ๋ก ์ ์ผ์ฑ ํ๋ณด.
ํ์ง๋ง ์ง๊ด์ ์ด์ง ์๊ณ , ORM์ด๋ ์ฝ๋ ๋ ๋ฒจ์์ ๋ณ๋ ์๋ณ์ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ผ ํ๋ ๋ฑ ๋ณต์ก๋๊ฐ ๋๋ค.
๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ ํ๋์ ์ ๊ทผ์ด ์ ํธ๋๋ค.
{๋๋ฆฌ ํค(PK)} + {๋ณตํฉ UNIQUE ์ ์ฝ์กฐ๊ฑด}
์ด ๋ฐฉ์์ ๊ตฌ์กฐ๊ฐ ๋จ์ํ๊ณ ๋ช ํํ๋ค.
๋จ์ผ ์ปฌ๋ผ์ผ๋ก ์ธ๋ ํค๋ฅผ ์ฐ๊ฒฐํ ์ ์๊ณ , UNIQUE ์ ์ฝ์กฐ๊ฑด์ด ์ค๋ณต์ ๋ฐฉ์งํ๋ค.
๋ค๋ง ๊ธฐ๋ณธ ํค ์ธ๋ฑ์ค์ UNIQUE ์ธ๋ฑ์ค๊ฐ ๋ฐ๋ก ์์ฑ๋์ด ์ ์ฅ ๊ณต๊ฐ์ด ์กฐ๊ธ ๋์ด๋๋ค.
๋ง๋ฌด๋ฆฌ
๋ ผ๋ฆฌ์ ๋ชจ๋ธ๋ง์์ ํค ์ค๊ณ๋ ๋จ์ํ ๊ธฐ์ ์์๊ฐ ์๋๋ผ ๋ฐ์ดํฐ์ ์ ์ฒด์ฑ์ ์ ์ํ๋ ์ผ์ด๋ค.
ํ๋ ์์คํ ์์๋ ๋๋ถ๋ถ ๋๋ฆฌ ํค๋ฅผ ๊ธฐ๋ณธ ํค๋ก, ์์ฐ ํค๋ UNIQUE๋ก ๊ด๋ฆฌํ๋ ํจํด์ ๋ฐ๋ฅธ๋ค.
์ด ๋ฐฉ์์ด ๊ฒฐ๊ตญ ์์ ์ฑ๊ณผ ํ์ฅ์ฑ์ ๋ชจ๋ ๋ง์กฑ์ํค๋ ๊ฐ์ฅ ํ์ค์ ์ธ ํด๋ฒ์ด๋ค.
'Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง โ ์๋ณ๊ด๊ณ vs ๋น์๋ณ๊ด๊ณ (0) | 2026.01.03 |
|---|---|
| ๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง โ Relation(๊ด๊ณ)์ ๋ชจ๋ ๊ฒ (0) | 2026.01.03 |
| Postgres์ PostGIS ๊ฐ๋ , ์ปค๋จธ์ค ํ์ฉ ์ฌ๋ก ๋ฐ ์ค์น ๊ฐ์ด๋ (1) | 2026.01.01 |
| ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋์์ฑ ์ ์ด (0) | 2026.01.01 |
| ๊ฐ๋ ์ ๋ชจ๋ธ๋ง (2) - ์ํฐํฐ ๊ด๊ณ์ ERD ์ค์ต (0) | 2025.10.07 |