문제
다음 제약조건들의 조합 중 논리적으로 모순이 발생하는 것은?
SQLCREATE TABLE EMPLOYEE ( EMP_ID INT, EMAIL VARCHAR(100), SALARY DECIMAL(10,2) );
① EMP_ID에 PRIMARY KEY와 UNIQUE 제약조건을 동시 적용
② EMAIL에 UNIQUE와 NOT NULL 제약조건을 동시 적용
③ SALARY에 CHECK(SALARY > 0)과 DEFAULT 0을 동시 적용
④ EMP_ID에 PRIMARY KEY를 적용하면서 별도로 NOT NULL 제약조건 추가
정답
3번
해설
③번이 논리적 모순입니다. CHECK(SALARY > 0)은 0보다 큰 값만 허용하는데, DEFAULT 0은 0을 기본값으로 설정하므로 제약조건을 위반합니다. ①번은 PRIMARY KEY가 이미 UNIQUE를 포함하므로 중복이지만 오류는 아닙니다. ②번은 정상적인 조합입니다. ④번도 PRIMARY KEY가 이미 NOT NULL을 포함하므로 중복이지만 오류는 아닙니다.