NoTimeForDawdling

Primary Key vs Unique Key 본문

DB

Primary Key vs Unique Key

Room_Energy 2021. 2. 26. 21:51

오늘은 Primary Key와 Unique Key의 차이에 대해서 알아보겠습니다.

Primary Key

  • Primary Key는 해당 테이블의 식별자 역할을 하는 제약 조건으로 테이블에 하나만 설정할 수 있습니다.
  • 다른 레코드들과 서로 다르다는 사실을 확인할 수 있도록 도와주는 역할을 합니다.
    • 즉, 유일성을 보장해 줍니다.
  • 유일성을 보장해주기 위해서는 Unique 해야 하며 NULL이면 안됩니다.(NOT NULL)

Unique Key

  • Unique Key는 테이블 내 항상 유일해야 하는 값을 의미합니다.
    • 즉, 중복을 허용하지 않는 컬럼입니다.
  • 유일해야 하는 값은 레코드당 하나일 필요가 없습니다.
    • 즉, 한 테이블에 여러개 설정이 가능합니다.
  • Unique Key는 NULL값이 허용됩니다.

회원 테이블 예제

회원 테이블이 있다고 가정할 때, 회원 이름, 주민번호, 아이디, 주소 등 여러 가지 있을 겁니다.

여기서 유일한 성질이 무엇이 있을까요?

 

회원 이름이나 주소는 중복이 될 수도 있습니다. 하지만 회원의 주민번호는 중복이 될 수 없을 겁니다.

또한, 회원 가입할 때 아이디는 보통 중복을 허용하지 않습니다. 그렇다면 유일한 성질은 다음과 같습니다.

  • 유일한 성질: 주민번호, 아이디
    • 즉, 주민번호, 아이디 둘 중 하나를 PK로 설정할 수 있습니다.
  • 만약 회원 이름을 Unique Key로 설정했을 때
    • 회원 이름을 가진 사람은 최초의 한 사람만 가입이 가능해집니다.

Primary Key와 Unique Key 생성 및 추가 삭제 방법

Primary Key

1. 테이블 생성

1-1) 단일 PK값 설정 방법

CREATE TABLE table_name (
    column1 int(10) PRIMARY KEY
)

1-2) 다중 PK값 설정 방법(복합 키)

CREATE TABLE table_name (
    column1 int(10),
    column2 int(10),
    PRIMARY KEY (column1, column2)
)

 

2. 새로운 PK 설정

ALTER TABLE table_name ADD PRIMARY KEY (column1, column2);

3. 삭제

ALTER TABLE table_name DROP PRIMARY KEY

 

Unique Key

1. 테이블 생성

CREATE TABLE table_name (
    column1 int(10),
    column2 int(10),
    UNIQUE KEY uk_name (column1, column2)
)

2. 추가

ALTER TABLE table_name ADD UNIQUE uk_name (column1, column2);

3. 삭제

ALTER TABLE table_name DROP INDEX uk_name

'DB' 카테고리의 다른 글

DB 데이터 캐싱(Caching)  (0) 2021.03.11
ORM(Object Relation Mapping)이란?  (0) 2021.03.10
DB 인덱스(Index)  (0) 2021.03.04
트랜잭션 격리 수준(Isolation Level)  (0) 2021.02.18
트랜잭션(Transaction)  (0) 2021.02.16