안녕하세요. 길벗 수험서 운영팀입니다.
create domain에서 제약조건을 설정할 때는
constraint (제약조건명) check (범위 값);
create table에서 제약조건을 설정할 때는
constraint (제약조건명) check (조건 식);
입니다.
이 때 (범위 값)과 (조건 식)은 동일하게 사용할 수 있으나, 회원님이 말씀하신 것처럼 다른 부분이 있습니다.
테이블과 달리 도메인은 단일 속성에 대한 것만을 선언한다는 점입니다.
즉, 테이블 내에서 한 속성에 대해서 제약을 걸 때는 해당 속성을 언급해줘야 하지만, 도메인 내에서 속성에 대한 제약을 걸 때는 도메인 자체가 한 속성에 대해서만 그 특성을 정의하기 때문에 속성명을 언급할 필요가 없습니다.
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) );
라는 sql문이 있을 때, 첫 번째 constraint절을 아래와 같이 바꿔쓸 수 있습니다.
constraint sex_ck check (sex in('f', 'm'),
CREATE DOMAIN SEX CHAR(1)
DEFAULT ‘남’
CONSTRAINT VALID-SEX CHECK (VALUE IN (‘남’, ‘여’));
위의 create domain문에서 사용된 constraint절과 유사함을 알 수 있습니다.
차이점은 속성명이 들어간 sex부분이 value로 바뀌었다는 것이죠. 이 것은 위에서 언급한 create domain의 특성 때문입니다.
두 명령문의 차이를 확실히 기억하여, SQL문을 작성하시기 바랍니다.
행복한 하루되세요.^^
-
*2018-09-27 13:25:30
안녕하세요. 길벗 수험서 운영팀입니다.
create domain에서 제약조건을 설정할 때는
constraint (제약조건명) check (범위 값);
create table에서 제약조건을 설정할 때는
constraint (제약조건명) check (조건 식);
입니다.
이 때 (범위 값)과 (조건 식)은 동일하게 사용할 수 있으나, 회원님이 말씀하신 것처럼 다른 부분이 있습니다.
테이블과 달리 도메인은 단일 속성에 대한 것만을 선언한다는 점입니다.
즉, 테이블 내에서 한 속성에 대해서 제약을 걸 때는 해당 속성을 언급해줘야 하지만, 도메인 내에서 속성에 대한 제약을 걸 때는 도메인 자체가 한 속성에 대해서만 그 특성을 정의하기 때문에 속성명을 언급할 필요가 없습니다.
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) );라는 sql문이 있을 때, 첫 번째 constraint절을 아래와 같이 바꿔쓸 수 있습니다.
constraint sex_ck check (sex in('f', 'm'),
CREATE DOMAIN SEX CHAR(1)
DEFAULT ‘남’
CONSTRAINT VALID-SEX CHECK (VALUE IN (‘남’, ‘여’));위의 create domain문에서 사용된 constraint절과 유사함을 알 수 있습니다.
차이점은 속성명이 들어간 sex부분이 value로 바뀌었다는 것이죠. 이 것은 위에서 언급한 create domain의 특성 때문입니다.
두 명령문의 차이를 확실히 기억하여, SQL문을 작성하시기 바랍니다.
행복한 하루되세요.^^