- 0
- 85 단어
관계형 데이터베이스에서는 데이터의 중복을 방지하고 각 데이터를 정확하게 관리하기 위해 여러 가지 제약 조건을 사용합니다. 그중 UNIQUE와 PRIMARY KEY는 특정 열에 동일한 값이 저장되는 것을 제한한다는 점에서 비슷하게 보입니다. 그러나 두 제약 조건은 목적과 적용 방식에서 차이가 있습니다. 특히 테이블을 설계할 때 어떤 데이터를 기본 키로 사용할지, 어떤 데이터에 UNIQUE를 적용할지 구분하는 것이 중요합니다.
PRIMARY KEY란 무엇인가
PRIMARY KEY는 테이블에 저장된 각각의 행을 고유하게 식별하기 위해 사용하는 기본 키입니다. 하나의 테이블에는 여러 개의 행이 존재할 수 있기 때문에 각 행을 확실하게 구분할 수 있는 기준이 필요합니다.
예를 들어 회원 테이블에서 member_id를 PRIMARY KEY로 지정하면 각각의 회원에게 서로 다른 회원번호를 부여할 수 있습니다. 동일한 회원번호가 여러 행에 저장되는 것을 방지할 수 있으며, PRIMARY KEY에는 NULL 값도 저장할 수 없습니다.
따라서 PRIMARY KEY는 단순히 중복을 방지하는 것뿐만 아니라 테이블에서 하나의 행을 대표하고 식별하는 기준이라는 의미가 있습니다.
일반적으로 회원번호, 상품번호, 주문번호처럼 각각의 데이터를 구분하기 위해 별도의 식별자를 만들어 PRIMARY KEY로 사용하는 경우가 많습니다.
PRIMARY KEY의 주요 특징
PRIMARY KEY에는 몇 가지 중요한 특징이 있습니다.
첫째, 하나의 테이블에는 기본적으로 하나의 PRIMARY KEY만 지정할 수 있습니다. 둘째, PRIMARY KEY로 지정된 값은 중복될 수 없습니다. 셋째, NULL 값을 허용하지 않습니다.
예를 들어 회원번호가 PRIMARY KEY라면 회원번호가 없는 회원을 해당 테이블에 정상적으로 저장하기 어렵습니다. 또한 이미 존재하는 회원번호를 다시 사용할 수 없기 때문에 각 행을 고유하게 구분할 수 있습니다.
UNIQUE란 무엇인가
UNIQUE는 특정 열에 동일한 값이 중복해서 저장되는 것을 방지하는 제약 조건입니다. 즉, 해당 열의 값이 테이블 안에서 고유하도록 만드는 역할을 합니다.
예를 들어 회원 테이블의 이메일 주소에 UNIQUE를 적용할 수 있습니다. 회원번호와 달리 이메일 주소는 회원을 식별하는 기본 키가 아니더라도 동일한 이메일을 여러 회원이 사용하는 것을 제한할 필요가 있을 수 있습니다.
이 경우 email 열에 UNIQUE 제약 조건을 설정하면 이미 등록된 이메일 주소를 다른 행에서 다시 사용할 수 없도록 관리할 수 있습니다.
UNIQUE는 여러 개 사용할 수 있습니다
PRIMARY KEY와 달리 UNIQUE는 하나의 테이블에 여러 개 지정할 수 있습니다.
예를 들어 회원 테이블에서 이메일 주소와 전화번호 모두 중복을 허용하지 않아야 한다면 이메일 열과 전화번호 열에 각각 UNIQUE 제약 조건을 적용할 수 있습니다.
이렇게 하면 회원번호는 PRIMARY KEY로 관리하면서 이메일과 전화번호 역시 각각 고유한 값으로 유지할 수 있습니다.
따라서 하나의 테이블에서 반드시 하나만 존재해야 하는 대표적인 식별 기준은 PRIMARY KEY로 설정하고, 추가적으로 중복을 허용하지 않아야 하는 데이터에는 UNIQUE를 사용할 수 있습니다.
UNIQUE와 PRIMARY KEY의 차이
두 제약 조건의 가장 큰 차이는 역할과 NULL 처리 방식입니다.
PRIMARY KEY는 테이블의 각 행을 식별하기 위한 핵심 기준입니다. 반면 UNIQUE는 특정 열의 값이 중복되지 않도록 제한하는 것이 주요 목적입니다.
또한 PRIMARY KEY는 NULL을 허용하지 않지만 UNIQUE는 데이터베이스의 종류와 설정에 따라 NULL 처리가 다를 수 있습니다. 일반적인 관계형 데이터베이스에서는 UNIQUE 열에 NULL이 허용될 수 있으며, NULL은 일반적인 값과 동일하게 중복을 판단하지 않는다는 특징이 있습니다.
따라서 PRIMARY KEY와 UNIQUE를 단순히 “둘 다 중복을 막는 기능”이라고만 이해하면 차이를 정확하게 파악하기 어렵습니다.
| 구분 | PRIMARY KEY | UNIQUE |
|---|---|---|
| 주요 목적 | 행의 고유한 식별 | 특정 값의 중복 방지 |
| 중복 값 | 허용하지 않음 | 허용하지 않음 |
| NULL | 허용하지 않음 | 일반적으로 허용 가능 |
| 테이블 내 개수 | 하나 | 여러 개 가능 |
| 외래 키 참조 | 대표적인 참조 대상 | 참조 대상이 될 수 있음 |
어떤 데이터를 PRIMARY KEY로 사용할까
PRIMARY KEY를 선택할 때는 해당 데이터가 각 행을 확실하게 구분할 수 있는지 고려해야 합니다. 이름이나 주소처럼 여러 사람이 동일하게 가질 수 있는 데이터는 일반적으로 기본 키로 적합하지 않습니다.
그래서 실무에서는 회원번호나 주문번호처럼 별도의 식별자를 만들어 PRIMARY KEY로 사용하는 경우가 많습니다. 반면 이메일이나 전화번호처럼 데이터 자체가 중복되어서는 안 되는 값에는 UNIQUE를 적용할 수 있습니다.
예를 들어 회원 테이블에서 member_id를 PRIMARY KEY로 지정하고 email에는 UNIQUE를 설정할 수 있습니다. 그러면 회원번호를 통해 각 회원을 식별하면서 이메일 주소의 중복도 동시에 방지할 수 있습니다.
결국 PRIMARY KEY와 UNIQUE는 모두 데이터의 중복을 방지하는 데 도움을 주지만 목적은 서로 다릅니다. PRIMARY KEY는 테이블의 행을 대표하고 식별하기 위한 핵심 기준이며, UNIQUE는 특정 데이터가 중복되지 않도록 제한하는 제약 조건입니다. 두 개념을 구분해서 이해하면 이후 데이터베이스의 제약 조건과 테이블 설계를 이해하는 데 도움이 됩니다.