개발 공부/서버

[서버 기초] 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      |

여기서 idPrimary Key


🔗 Foreign Key란?

Foreign Key (외래키)

다른 테이블의 Primary Key참조하는 열입니다.

📌 특징:

  • 테이블 관계를 연결
  • 무결성(참조 대상 존재 여부)보장

예시:

orders 테이블
+----+-----------+------------+
| id | user_id   | item       |
+----+-----------+------------+
| 1  | 1         | iPhone     |
| 2  | 2         | MacBook    |

여기서 user_id
users.id참조하는 Foreign Key


🧩 PKFK연결한 구조

users (PK: id)
  ↑
  |
orders (FK: user_id)

구조 덕분에
"주문 번호 1번은 id1번인 사용자의 주문"
이라는 관계를 명확하게 있어요!


🆚 Primary Key vs Foreign Key 비교표

항목 Primary Key Foreign Key
의미 고유 식별자 다른 테이블을 참조
중복 불가 가능 (같은 유저가 여러 주문 가능)
NULL 불가 가능 (참조 하는 경우 허용 가능)
위치 기준 테이블 종속 테이블
역할 행을 식별 관계를 연결
 

⚠️ 실무에서 알아야 이유

서버에서 DB 조회할
PK 기준으로 SELECT, UPDATE, DELETE 수행

테이블 JOIN
FKWHERE 조건 설정

데이터 무결성 보장
없는 유저 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는 '얘는 누구랑 연결돼 있어'나타냅니다" 😊


📌 다음 예고:

이제까지 헷갈리는 개념들 많이 정리했으니,
다음엔 시리즈를 마무리하면서
웹개발자를 위한 서버 개념 요약 노트”
핵심 키워드만 장에 정리해드릴게요! 🧠🗂️

반응형