답지에는 제약조건 sex_ck를 정의 할때
constraint sex_ck check (sex='f' or sex='m')이라고 하였는데요
혹시
constraint sex_ck check sex value in ('f','m')이라고 써도 되나요?
그리고
constraint id_fk foreign key(id) references doctor(doc_id)에서
foreign key에 제약조건명을 붙이려고 constraint를 사용할때 check는 원래 붙지 않는건가요? 아니면 생략이 가능한 부분인건가요?
안녕하세요 길벗수험서 운영팀입니다.
도메인이 아닌 테이블 생성에서 in을 사용할 때는
check( [속성명] in( [값1], [값2], ...) 형식으로 사용하셔야 합니다. (도메인의 경우만 속성명 대신 value)
constraint sex_ck check(sex in('f', 'm')) 이 되겠네요.
constraint 절을 사용하지 않고 속성명의 우측에 들어갈 때는 축약해서 사용됩니다.
이 때의 사용법은 조금 다르니 기억해두세요.
속성 정의 절과 분리되어 constraint절이 따로 사용될 때는 생략하지 못합니다.
행복한 하루되세요 :)
-
관리자2022-04-12 10:27:47
안녕하세요 길벗수험서 운영팀입니다.
도메인이 아닌 테이블 생성에서 in을 사용할 때는
check( [속성명] in( [값1], [값2], ...) 형식으로 사용하셔야 합니다. (도메인의 경우만 속성명 대신 value)
constraint sex_ck check(sex in('f', 'm')) 이 되겠네요.
constraint 절을 사용하지 않고 속성명의 우측에 들어갈 때는 축약해서 사용됩니다.
이 때의 사용법은 조금 다르니 기억해두세요.
속성 정의 절과 분리되어 constraint절이 따로 사용될 때는 생략하지 못합니다.
행복한 하루되세요 :)
-
관리자2022-04-15 19:37:50
안녕하세요 길벗수험서 운영팀입니다.
먼저 질문을 혼동하여 불명확한 답변을 드린 점 사과드립니다.
아래와 같이 foreign key 설정 시 foreign key나 constraint를 생략하는 것에 대해 문의하신 것으로 착각하여 답변드렸습니다.
id char(5) references doctor(doc_id),
foreign key 설정 시에는 기본적(문법적)으로 check를 사용하지 않습니다. 용도에 따라 방법이 다른 것입니다.
인수로 나열된 값들과 일치 여부를 확인할 때는 check를,
외부 테이블의 필드를 참조할 때는 foreign key~ references를 사용한다고 기억해두세요.
행복한 하루되세요 :)
-
*2022-04-13 10:11:58
create table patient
( id char(5) primary key,
name char(10),
sex char(1),
phone char(20),
constraint sex_ck check(sex='f'or sex='m'),
constraint id_fk foreign key(id) references doctor(doc_id));
답지에 이렇게 적혀있는데요
속성절에서만 check를 생략할 수 있는 것이라면
constraint id_fk foreign key(id) references doctor(doc_id) 라고 따로 constraint절이 적힌 이부분에서는
check를 생략해준 이유가 궁금합니다.