옵셔널러티와 Null속성 관계 문의드립니다.
cws7444 수험생

답변 채택시 : 0코아

답변 3 추천 0 조회 2329 2015.03.06

부서(#부서번호, *부서명)

사원(#사원번호, *사원명, *부서번호(FK))

비식별관계, 부서->사원 (Optional), 사원->부서(Mandatory)

 

사원엔터티를 기준으로 봤을 때 부서엔터티와의 옵셔널러티가 필수인 경우이나, 부서가 아직 정해지지 않았거나 모르는 경우라면 부서번호 속성에 Null 허용이 가능해야 할 텐테요.

DA# 툴에서는 반드시로 선택하면 속성창에서 Null허용으로 변경이 불가능하고요,

때때로를 선택하여 Null허용으로 되어있는 경우에도, 속성을 Not Null로 바꾸면 옵셔널러티가 반드시로 바뀝니다.

반드시인 경우에 상속된 속성의 Null 허용은 표현하기가 불가능합니다.

속성의 널값 허용여부는 관계의 옵셔널러티와 무관하게 인스턴스가 생성될 때 아직 값이 정해지지 않았거나 모르는 경우에 Null을 허용해야 되는 것으로 알고 있는데요, ‘반드시인 경우에 상속된 속성의 Null 허용이 되지 않는 이유를 설명부탁드립니다.

댓글 (0)
목록 답변등록
옵셔널러티와 Null속성 관계 문의드립니다.
cws7444 2015.03.27

물리DB에서 RI 제약조건을 부모엔터티의 키값을 삭제나 수정 시 Nullified 옵션을 주면 하위엔터티의 FK 속성이 Null이 되지 않습니까? 그런 기준을 보면 '반드시'인 경우도 FK속성에 Null허용이 가능해야 할 텐테요...

아시는 분 답 좀 달아주세요.

댓글 (0)
옵셔널러티와 Null속성 관계 문의드립니다.
cws7444 2015.03.13

친절한 설명, 감사드립니다.

 

어떤 교재에 DA#으로 그린 ERD상에 Mandatory인 경우에도 Null로 정의되어 있는 그림을 봐서 아직도 의문이 좀 남습니다. 제가 Null로 해 볼려니 절대 되지않습니다.

 

그러면 결론적으로

선택성 M인 경우: Null이면 오류임. Not Null이어야 함. M이면 하위엔터티의 모든 값이 상위에 있어야하는데 Null값은 상위엔터티에 Key값으로 있을 수 없으니까 오류임.

선택성 O인 경우: Not Null과 Null다 가능함.  Null값 없이 모두 필수값이 있으나 선택성은 Optional일 수 있음. Null값도 포함하여 Optional인 경우 상위엔터티에 Key값으로 없어도되니까 오류가 아님.

이렇게 해석하는게 맞는지 검토부탁드립니다.  

댓글 (2)
옵셔널러티와 Null속성 관계 문의드립니다.
jkhwang 2015.03.09

질문자로부터 답변이 채택 되었습니다.

안녕하세요.

 

모델링을 하다 보면 때론 내가 의도한 대로 모델에 표현하기가 어려운 경우가 종종 발생합니다.

다행이 문의하신 내용은 그기에 해당되지 않는 경우인 것 같습니다.

 

질문자께서 말씀하신 

 "속성의 널값 허용여부는 관계의 옵셔널러티와 무관하게 인스턴스가 생성될 때 아직 값이 정해지지 않았거나 모르는 경우에 Null을 허용해야 되는 것으로 알고 있는데요"  문장에 대한 오해만 해결되면 DA#의 표현원리를 이해할 수 있을 것 같습니다.

 

개별 엔터터에서 속성의 NULL 허용 여부는 말씀하신 것처럼 인스턴스가 생성 될 때 결정됩니다.

하지만관계에 의해 생성된 속성은 부모-자식간 업무규칙에 따라 NOT NULL 여부가 결정되게 됩니다.

부서_사원_모델.PNG


부모-자식간 관계를 맺는다는 것은 자식엔터티 입장에서 보면 부모에 있는 인스턴스만 받아 들이겠다는 것을 의미합니다. 위 그림의 [부서-사원]에서 볼 때 자식인 [사원]부서코드 [부서]에 존재하는 부서코드만 입력될 수 있습니다따라서 자식인 [사원]부서코드 NOT NULL로 설정되면 [사원] 인스턴스가 등록될 때 반드시 부서코드를 입력해야 하기 때문에 [부서-사원]의 관계는 반드시(Mandatory)’로 자동 설정되게 됩니다. 반대로 '부서코드'에 NULL을 허용한다는 것은 관계는 '때때로(Optional)'로 맺는것과 동일한 의미입니다.


결국 부모로부터 상속받는 자식엔터티 속성의 NOT NULL / NULL 여부는 자식이 독립적으로 결정할 수 있는 것이 아니라

부모와 자식의 인스턴스 발생규칙에 따라 정의된 관계에 의해 자동으로 결정되어지는 것입니다.


문의하신 질문에 답변이 되셨기 바라며 궁금한 것이 있으면 문의 주시기 바랍니다.


감사합니다



댓글 (0)