← 아티클 목록

기본키 유니크키 외래키 차이 쉽게 이해하기

2028-07-17#database##제약조건

"기본키랑 유니크키는 둘 다 중복을 막는데 뭐가 다르죠?" 테이블을 설계하다 보면 이 세 가지 키가 비슷해 보여 헷갈립니다. 핵심은 단순합니다. 기본키는 이 행을 대표하는 단 하나의 식별자, 유니크키는 다른 칼럼의 중복을 막는 보조 규칙, 외래키는 다른 테이블과의 연결고리입니다. 회원 테이블 하나로 셋을 전부 설명할 수 있습니다.

세 가지 키 한눈에

역할중복NULL개수
기본키(PK)행의 대표 식별자불가불가테이블당 1개
유니크키(UK)특정 칼럼 값 중복 방지불가보통 허용여러 개 가능
외래키(FK)다른 테이블 참조가능가능여러 개 가능

기본키와 유니크키의 가장 큰 차이는 두 가지입니다. 기본키는 NULL을 절대 허용하지 않고 테이블에 단 하나뿐이지만, 유니크키는 보통 NULL을 허용하고 여러 개 둘 수 있습니다.

예시로 구분하기

회원 테이블을 만들어 보면 세 키가 어디에 쓰이는지 분명해집니다.

SQL
CREATE TABLE users (
  id      BIGINT PRIMARY KEY,       -- 기본키: 행의 대표 식별자
  email   VARCHAR(255) UNIQUE,      -- 유니크키: 이메일 중복 금지
  name    VARCHAR(50)
);

CREATE TABLE orders (
  id       BIGINT PRIMARY KEY,
  user_id  BIGINT REFERENCES users(id)  -- 외래키: users를 가리킴
);

id기본키라 한 회원을 정확히 한 행으로 지목합니다. 값이 비거나 겹치면 어느 회원인지 알 수 없으므로 NULL과 중복이 모두 금지됩니다.

email유니크키입니다. 회원을 대표하는 식별자는 아니지만, 같은 이메일로 두 번 가입하는 일은 막아야 합니다. 이렇게 "대표는 아니지만 겹치면 안 되는" 칼럼에 유니크키를 답니다.

orders.user_id외래키입니다. 주문이 어느 회원의 것인지 users 테이블을 가리킵니다. 외래키가 있으면 존재하지 않는 회원 ID로는 주문을 넣을 수 없고(참조 무결성), 회원을 지울 때 그 주문을 어떻게 할지도 규칙으로 정할 수 있습니다.

요점 정리

  • 기본키는 행의 유일한 대표 — NULL 불가, 테이블당 하나.
  • 유니크키는 다른 칼럼의 중복만 막는 보조 규칙 — 여러 개 가능, 보통 NULL 허용.
  • 외래키는 다른 테이블과의 연결로 참조 무결성을 지킨다.

PRIMARY KEY·UNIQUE·REFERENCES를 직접 선언하고 중복·참조 위반을 일으켜 어떤 에러가 나는지 확인하는 실습은 데이터베이스 트랙에서 회원가입 없이 무료로 할 수 있습니다.