[Spring Boot] Primary Key와 Unique Key의 차이

김광일·2024년 9월 25일
0

SpringBoot

목록 보기
14/19
post-thumbnail

SQL을 배우다가 문득 궁금증이 생겼다.

Primary Key(PK)와 Unique Key(UK)의 차이점은 무엇일까..?

이번에는 이 둘의 차이를 한 번 살펴보자


Primary Key(PK)와 Unique Key(UK)는 데이터베이스 테이블에서 고유성을 보장하기 위해 사용되는 두 가지 제약 조건이다.

그러나 이 두 가지는 몇 가지 중요한 차이점이 있으며, 그 중 하나는 null 값의 허용 여부라고 볼 수 있다.

[1] Primary Key (PK)

1) 목적

: 테이블의 각 행(row)을 고유하게 식별하는 데 사용됩니다.

2) 특징

  • 유일성: PK는 각 행을 고유하게 식별하기 때문에, 테이블 내에서 중복될 수 없습니다.
  • null 허용 불가: PK는 반드시 값을 가져야 하며, null 값을 허용하지 않습니다. null 값이 있으면 고유하게 식별할 수 없기 때문입니다.
  • 하나의 테이블에 하나만 존재: 한 테이블에는 반드시 하나의 Primary Key만 존재할 수 있습니다.

3) 예시

CREATE TABLE Users (
    id INT PRIMARY KEY,  -- Primary Key는 null이 불가능하며 중복될 수 없음
    username VARCHAR(100)
);

[2] Unique Key (UK)

1) 목적

: 특정 열(column)의 값들이 고유함을 보장하는 데 사용됩니다.

2) 특징

  • 유일성: UK가 설정된 열의 값들은 중복될 수 없습니다.
  • null 허용 가능: Unique Key는 null 값을 허용할 수 있습니다. 그러나 null 값이 여러 번 중복될 수는 없습니다. 즉, 여러 개의 null 값이 들어갈 수 있지만, 각 null 값은 고유한 값으로 취급됩니다.
  • 여러 개 존재 가능: 한 테이블에는 여러 개의 Unique Key를 설정할 수 있습니다.

3) 예시

CREATE TABLE Users (
    id INT PRIMARY KEY,
    email VARCHAR(100) UNIQUE,  -- Unique Key는 null 값을 허용하지만 중복된 null 값은 불가능
    phone VARCHAR(15) UNIQUE
);

간단하게 정리하면 이렇게 볼 수 있다.

이를 예시를 들어서 본다면 정말 간단하게 이렇게 얘기할 수 있다.

1) 모든 사용자는 customoer_id를 가지며, null이 될 수 없다. (pk)
2) 하지만, email과 phone number은 중복은 되지 말아야 하지만, null이 허용된다. (uk)

즉 아래와 같다.

  • Primary Key: null 값이 아예 허용되지 않음. 모든 행에서 반드시 값이 있어야 하며 고유해야 함.
  • Unique Key: null 값은 허용되지만 중복된 null 값은 허용되지 않음. 즉, 하나의 열에 여러 개의 null 값을 넣을 수는 없지만, null은 그 자체로 고유한 값으로 취급됨.

[3] 결론

결론을 지어보자

Primary Key는 테이블의 각 행을 식별하기 위한 필수적인 요소로 null 값을 허용하지 않고, 중복을 허용하지 않는다..
Unique Key는 특정 열의 고유성을 보장하는 제약 조건으로 null 값을 허용할 수 있으며, null은 중복되지 않는 한 허용된다.

profile
안녕하세요, 사용자들의 문제 해결을 중심으로 하는 프론트엔드 개발자입니다. 티스토리로 전환했어요 : https://pangil-log.tistory.com

0개의 댓글