DBMS 차이

UNIQUE와 NULL 처리 차이

UNIQUE 제약에서 NULL을 중복으로 볼지 여부는 제품마다 다르다. 선택값의 유일성을 설계할 때 반드시 확인해야 한다.

Oracle
빈 값 반복 허용 값이 없는 상태는 비교 대상에서 제외되는 방식으로 이해한다.
필수 업무 키면 NOT NULL 병행
MySQL
NULL 중복 허용 여러 행이 NULL이어도 UNIQUE 위반으로 보지 않는다.
선택 입력값에 적합
PostgreSQL
일반 UNIQUE는 NULL 여러 개 허용 필요하면 부분 인덱스나 최신 기능의 NULL 처리 옵션을 검토한다.
버전별 기능 확인
SQL Server
일반 UNIQUE는 NULL 하나만 허용 여러 NULL이 필요하면 필터드 유니크 인덱스로 조건을 분리한다.
WHERE col IS NOT NULL

선택 업무 키의 안전한 형태

-- 값이 있을 때만 유일해야 하는 전화번호 예시
-- SQL Server는 필터드 인덱스, 다른 DBMS는 부분 인덱스나 제약 조합을 검토한다
UNIQUE(phone) + NULL 정책 확인