JSCODE Logo
프로그래밍 과외블로그후기멘토진
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호
학원 명칭 : 제이에스코드(JSCODE)원격학원학원설립ㆍ운영 등록번호 : 제6063호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2025 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침
← 블로그 목록으로 돌아가기

PK(기본키), FK(외래키)

JSCODE 박재성
JSCODE 박재성
2025-12-06
author
JSCODE 박재성
category
DB 설계
createdAt
Dec 6, 2025
series
비전공자도 이해할 수 있는 DB 설계 입문/실전
slug
primary-key-foreign-key
type
post
updatedAt
Dec 6, 2025 05:57 AM

✅ PK(Primary Key, 기본키)란?

우리가 살아가는 세상에는 수많은 사람들이 살아간다. 육안으로는 구별하기 힘든 쌍둥이도 존재하고, 이름이 동일한 사람들도 존재한다. 하지만 우리는 사람을 일일이 구별할 수 있어야 한다. 그래서 주민등록번호를 사람마다 부여함으로써 사람을 구별한다.
데이터베이스의 테이블에도 수많은 데이터가 저장되어 있다. 사람들을 구별하기 위해 주민등록번호가 필요하듯이, 수많은 데이터들을 구별하기 위해서 PK(Primary Key)라는 걸 사용한다. 즉, PK(Primary Key, 기본키)는 특정 데이터를 식별하기 위한 값이다. PK는 중복되어서는 안 되며, 비어있어서도 안 된다.
 
 

✅ 현업에서 PK(Primary Key)는 어떻게 설정할까?

가끔 주민등록번호, 이메일이 특정 데이터를 식별할 수 있는 데이터라고 생각해서 PK로 설정하는 걸 볼 수 있다. 하지만 이는 잘못됐다. 가능성은 적겠지만 주민등록번호, 이메일은 바뀔 가능성이 존재한다. PK(Primary Key)가 바뀌게 되면 특정 데이터를 식별하던 값이 바뀌어서 데이터를 관리하거나 사용하는 입장에서 혼란이 올 수 있다. 뿐만 아니라 RDBMS의 성능에도 안 좋은 영향을 미친다.
따라서 현업에서는 PK(Primary Key)를 주로 Auto Increment(숫자가 1씩 증가하는 방식)나 UUID(랜덤값)로 설정을 많이 한다.
 
 

✅ FK(Foreign Key, 외래키)란?

사용자와 게시글 데이터를 저장해야 한다고 가정하자. 데이터를 분리해서 저장하기 위해 사용자와 게시글 테이블을 만들어서 아래와 같이 저장했다. 그런데 아래와 같이 게시글 데이터를 저장하면 어떤 사용자가 게시글을 저장했는 지 알 수가 없다. 그래서 게시글 데이터를 저장할 때 사용자 데이터의 PK(기본키)를 같이 저장한다. 게시글 테이블에서 사용자의 PK를 저장하기 위한 값을 보고 FK(Foreign Key, 외래키)라고 얘기한다.
FK(Foreign Key, 외래키)를 한 줄로 요약하자면, 다른 테이블의 데이터와 관계를 연결하기 위한 키이다.
 
[FK 사용 전]
users (사용자)
id
이름
1
박재성
2
김유찬
posts (게시글)
id
제목
1
개발자 취업 방법 알려드려요!
2
면접 후기 공유합니다
3
TIL - 객체지향
 
[FK 사용 후]
users (사용자)
id (PK)
이름
1
박재성
2
김유찬
posts (게시글)
id (PK)
제목
user_id (FK)
1
개발자 취업 방법 알려드려요!
2
2
면접 후기 공유합니다
1
3
TIL - 객체지향
20 (Error)
** FK(외래키)를 설정했을 때 부가적인 기능이 하나 있다. 적절하지 않은 FK를 넣었을 때 DB에서는 에러를 발생시킨다. 즉, 적절하지 않은 FK를 넣는 걸 방지해준다. 이걸 보고 어려운 말로 ‘참조 무결성’이라고 한다. 말 그대로 결점(모순되는 점)이 없도록 유지하는 특성을 의미한다.
 
🧑🏻
데이터베이스에서 ‘무결성’이라는 단어가 참 많이 사용된다. 참조 무결성, 도메인 무결성, 엔티티 무결성 등 다양한 무결성이 있다. 하지만 각 무결성이 뭔지 외울 필요 없다. DB 설계할 때 하나도 안 중요한 개념들이다. 다만, 다른 책이나 강의를 볼 때 쉽게 이해할 수 있게 ‘무결성’이라는 단어가 어떤 뜻인지 나만의 말로 정리해두자.
 
 
author
category
DB 설계
createdAt
Dec 6, 2025
series
비전공자도 이해할 수 있는 DB 설계 입문/실전
slug
type
series-footer
updatedAt
Dec 6, 2025 05:57 AM
📎
이 글은 비전공자도 이해할 수 있는 DB 설계 입문/실전 강의의 수업 자료 중 일부입니다.