개발 공부/서버
[서버 기초] Primary Key와 Foreign Key, 뭐가 다른데?
악마의 개발자
2025. 5. 15. 20:00
반응형

💡 “회원 정보는 ‘users’에 있고, 주문 정보는 ‘orders’에 있잖아… 어떻게 연결하지?”
데이터베이스를 설계할 때 자주 등장하는 상황:
회원 데이터는 users 테이블에 있고
주문 데이터는 orders 테이블에 있어요.
“그럼 이 주문이 누구의 주문인지 어떻게 알 수 있죠?”
이럴 때 사용하는 게 바로 Primary Key(PK)와 Foreign Key(FK)입니다!
🔑 Primary Key란?
Primary Key (기본키)는
테이블에서 각 행(row)을 고유하게 식별하는 열(column)입니다.
📌 특징:
- 중복 ❌
- NULL ❌
- 보통 id, user_id, order_id 형태
예시:
users 테이블
+----+----------+
| id | name |
+----+----------+
| 1 | Alice |
| 2 | Bob |
→ 여기서 id는 Primary Key
🔗 Foreign Key란?
Foreign Key (외래키)는
다른 테이블의 Primary Key를 참조하는 열입니다.
📌 특징:
- 두 테이블 간 관계를 연결
- 무결성(참조 대상 존재 여부)을 보장
예시:
orders 테이블
+----+-----------+------------+
| id | user_id | item |
+----+-----------+------------+
| 1 | 1 | iPhone |
| 2 | 2 | MacBook |
→ 여기서 user_id는
→ users.id를 참조하는 Foreign Key
🧩 PK와 FK를 연결한 구조
users (PK: id)
↑
|
orders (FK: user_id)
이 구조 덕분에
"주문 번호 1번은 id가 1번인 사용자의 주문"
이라는 관계를 명확하게 알 수 있어요!
🆚 Primary Key vs Foreign Key 비교표
항목 | Primary Key | Foreign Key |
의미 | 고유 식별자 | 다른 테이블을 참조 |
중복 | ❌ 불가 | ✅ 가능 (같은 유저가 여러 주문 가능) |
NULL | ❌ 불가 | ✅ 가능 (참조 안 하는 경우 허용 가능) |
위치 | 기준 테이블 | 종속 테이블 |
역할 | 행을 식별 | 관계를 연결 |
⚠️ 실무에서 꼭 알아야 할 이유
✅ 서버에서 DB 조회할 때
→ PK 기준으로 SELECT, UPDATE, DELETE 수행
✅ 두 테이블 JOIN 시
→ FK로 WHERE 조건 설정
✅ 데이터 무결성 보장
→ 없는 유저 ID를 가진 주문이 생기는 일 방지!
💬 실전 JOIN 예시
SELECT users.name, orders.item
FROM users
JOIN orders ON users.id = orders.user_id;
→ 유저 이름과 주문 상품을 한 번에 조회 가능!
🧠 정리 한마디!
개념 | 설명 |
Primary Key (PK) | 테이블의 고유 ID (중복 ❌, NULL ❌) |
Foreign Key (FK) | 다른 테이블의 PK 참조 (중복 가능, 관계 연결) |
"PK는 '이건 누구야?'를 나타내고
FK는 '얘는 누구랑 연결돼 있어'를 나타냅니다" 😊
📌 다음 예고:
이제까지 헷갈리는 개념들 많이 정리했으니,
다음엔 이 시리즈를 마무리하면서
“웹개발자를 위한 서버 개념 요약 노트”로
핵심 키워드만 한 장에 정리해드릴게요! 🧠🗂️
반응형