데이터베이스

[MYSQL] Unique Key에 대해서

별보는 개발자 2022. 6. 19. 22:00

■ 개요

유니크키는 테이블 내에서 항상 유일해야하는 값을 말한다.

한 마디로 중복을 허용하지 않는 컬럼에 유니크키를 지정할 수 있는 것이다.

예를 들면 사람의 이름은 동명이인이 있을 수 있기 때문에 유니크키로 지정할 수 없다.

하지만 주민번호는 절대 중복될 수 없기 때문에 유니크키로 지정할 수 있는 것이다.

이러한 관점에서 보면 유니크키는 Primary Key와 비슷한 특성이 있다.

테이블의 튜플, 즉 row를 고유하게 식별할 수 있는 구조는 Primary Key와 비슷하지만 Null을 허용하게 되면 중복된 데이터를 가질 수 있다.

유니크키는 한 테이블에서 여러개를 설정할 수 있다. 여러 개의 유니크키 중에 하나가 Primary Key일뿐이다.

기본키를 지정하는 순간 유니크키의 속성도 부여된다고 생각하면 된다.

 

■ 기준

1. 값이 중복되지 않아야 한다.(주민번호 등)

2. Null 허용이 가능하다. 

→ 전화번호 같은 경우는 다른 사람과 중복될 수도 없고, 그리고 전화번호가 없는 사람이 있을 수도 있기 때문에 Unique키로 지정을 할 수가 있다.

→ Null 허용이 가능하지만 데이터 중복을 방지하기 위해 보통은 null을 허용하지 않도록 설정을 한다. (이것은 경우에 맞게 사용하면 된다.)

 

아래 이미지는 user라는 테이블에 user_id 라는 컬럼에 유니크키를 지정하는 것이다.

보통은 user_id는 다른 값들과 중복되지 않는 값이다.

우리가 어떤 사이트에 회원가입을 할 때 다른 사람과 같은 아이디를 사용하지 못하도록 하기 위해서 아이디 중복검사를 실시한다

그래서 아이디는 유일한 값이 되기 때문에 유니크 하다고 볼 수 있는 것이다.

아래 이미지는 주황색 : 기본키,  빨간색 : 유니크키가 지정된 모습

 

위 이미지는 user1이라는 테이블을 생성할 때 user_id라는 컬럼과 user_phone이라는 컬럼에 유니크키를 지정하는 것이다.이처럼 쿼리로 테이블을 생성할 때 지정할 수도 있고, 생성된 테이블에 유니크키를 추가로 지정할 수 있다.

 

참고 : 위의 이미지의 화면은 Mysql을 HeidiSQL 로 접속을 한 화면