✅ 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, 외래키)**라고 얘기한다.

<aside>

**FK(Foreign Key, 외래키)**를 한 줄로 요약하자면, 다른 테이블의 데이터와 관계를 연결하기 위한 키이다.

</aside>

[FK 사용 전]

users (사용자)

id 이름
1 박재성
2 김유찬

posts (게시글)

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