SQL

[Database Modeling#3] Primary Key, Foreign Key란?

j.d 2025. 4. 15. 19:40

관계형 데이터베이스(Relational Database)가 널리 사용되면서, 서로 연관된 데이터를 일관성 있고 효율적으로 관리하는 방법이 절실해졌습니다. 데이터는 여러 테이블에 나뉘어 저장되는데, 이를 연결할 수 있는 명확한 기준이 없다면 다음과 같은 문제들이 발생합니다:

  • 동일한 데이터가 여러 테이블에 중복 저장되어 관리와 유지보수가 어려움
  • 하나의 데이터를 수정하거나 삭제했을 때, 관련된 데이터가 함께 변경되지 않아 불일치(Inconsistency) 발생
  • 테이블 간 관계가 불명확해져 데이터 분석이나 검색이 복잡해짐

이러한 문제를 해결하기 위해 PK(Primary Key)FK(Foreign Key) 개념이 등장했습니다.

  • PK는 테이블 내 각 데이터를 고유하게 식별합니다.
  • FK는 다른 테이블의 PK를 참조하여 테이블 간의 연결 관계를 명확히 표현합니다.

 

Primary Key 란?

PK는 한 테이블에서 각 행(레코드)을 고유하게 식별하는 열(column)입니다.
엑셀로 치면 ‘주민등록번호’처럼 행마다 중복되지 않는 고유 값이라고 볼 수 있습니다.

특징

  • 고유성: 중복된 값이 있을 수 없습니다.
  • NOT NULL: 반드시 값이 존재해야 합니다.
  • 불변성: 되도록 변경되지 않아야 합니다.

실무에서 자주 사용되는 방식

  • Auto Increment: 숫자가 1씩 자동 증가
  • UUID (범용 고유 식별자): 충돌 가능성이 거의 없는 랜덤한 고유 값

 

Foreign Key 란?

FK는 한 테이블의 특정 열이 다른 테이블의 PK를 참조함으로써 두 테이블 간의 관계를 연결하는 키입니다.

 

예시

사용자 테이블 (users)

id 이름
1 홍길동
2 김철수

 

게시글 테이블 (posts)

id 제목 user_id
1 개발자 취업 방법 알려드려요! 1
2 면접 후기 공유합니다 2
3 TIL - 객체지향 1

 

 

→ posts.user_id는 users.id를 참조하는 FK입니다.
→ 이렇게 하면 어떤 사용자가 어떤 게시글을 작성했는지 쉽게 알 수 있습니다.

 

특징

 

  • 데이터 무결성 보장: 존재하지 않는 사용자의 ID를 게시글에 넣는 것을 방지
  • 관계 표현: 테이블 간 연결 구조를 명확하게 표현
  • 데이터 중복 제거: 중복 없이 필요한 정보만 효율적으로 저장