DB 가 마지막 방어선
제약은 비즈니스 룰을 DB 자체에 박음. 앱 검증은 도움되지만 옵셔널 — 누구든 직접 SQL 연결이나 버그 코드 경로로 우회 가능. 제약은 보장. 밀어넣은 모든 룰이 50 군데서 검증 안 해도 되는 룰.
UNIQUE — 중복 없음
단일/다중 컬럼. 다중 컬럼 UNIQUE 가 '한 유저가 한 product 에 최대 한 review' 의 정답.
CHECK — 임의 boolean 룰
행 단위로 평가 가능한 모든 predicate: 양수 가격, 유효한 status, 합리적 percentage, 길이 제한. CHECK 는 같은 행의 다른 컬럼 참조 가능, 다른 행은 불가.
EXCLUDE — 겹침 방지
가장 강력하고 가장 덜 알려진 제약. EXCLUDE 가 선택한 연산자 하에 기존 행과 충돌 할 값의 행 거절. 클래식 케이스: 같은 방의 두 예약이 시간 겹치는 거 방지.