10.3 관계 구성 요소

  • 1. 카디널러티
  • 2. 옵셔널러티
  • 3. 디그리


1. 카디널러티(Cardinality)

  • 엔터티의 연관성을 파악하고 관계를 도출해 관계선을 표현할 때 가장 기본적인 요소
  • 1:1관계, 1:M관계, M:M관계
  • M:M관계는 최종 물리 모델에서는 구현될 수 없다.


2.옵셔널러티(Optionality)

  • 상관되는 관계 값의 존재여부를 의미
  • 하위엔터티의 값과 연관되는 상위엔터티의 값이 반드시 존재해야 하는지(Mandatory)존재하지 않아도 되는지(Optional)을 의미(반대도 마찬가지)
그림 10.28


그림 10.36
  • 양쪽 옵셔널러티가 선택인 관계선은 관계가 없는 거나 마찬가지이지만 관계선을 삭제하는 것은 바람직하지 않다
  • 상위엔터티 쪽의 옵셔널러티를 필수(Mandatory)가 될수 있도록 만들어 주는 것이 좋으며고객 엔터티의 관계선을 필수(Mandarory)로 만틀지 못하더라도 고객과 통장은 연관관계가존재하므로 관계선을삭제하는 것은좋지 않다|
그림 10.37
  • 통장엔터티는 실체로서 입고된 상태의 통장을 관리하는 엔터티
  • 고객통장 엔터티는 고객에게 발급된 통장을 관리하는 엔터티
  • 고객 엔터티는 통장엔터티와는 관계가 없으며 고객통장 엔터티와 관계가 존재
  • 고객통장 엔터티에는 고객번호가 존재하는 인스턴스만 관리
  • 재고 상태의 발급 전 통장과 고객에게 발급된 통장을 별도의 엔터티에서 관리하면 관계선도 정상이되며 엔터티의 성격도 명확해진다.
  • 프로세스에 의해 관리속성이 많이 달라지면 데이터 성격이 변한 것일수 있으므로 별도의 엔터티로 관리되는 것이 효과적이다.
  • 그림 10.36모델과 같은 양 방향 옵셔널러티가 선택(Optional)인 관계는 서브타입으로 표현 가능. 고객에게 발급되기 전의 통장과 발급된 통장을 그림 10.38과 같이 서브타입으로 구분해서 관리할 수 있다.
그림 10.38


3.관계 디그리(Releationship Degree)

  • 하나의 관계에 포함된 엔터티의 개수
  • 관계는 3개이상의 엔터티 사이에서도 발생할 수 있다.
  • 어떤 학생이 어떤 교수의 어떤과목을 수강 신청했는지를 관리
그림 10.39
  • M:M관계 해소
그림 10.40
  • 신청일자 속성은 학생,과목,교수 엔터티의 주식별자 조합에 의해서 유일하게 결정됨.
  • 학생,과목,교수 엔터티의 주 식별자 조합이 결정자가 돼 함수 종속의 왼쪽에 표현됨.
  • FD : (학생번호,과목코드,교수ID) -> 신청일자
그림 10.41


릴레이션a
  • 학생(홍길동)과 교수(김길동)으로 이루어진 인스턴스에 대해 과목(철학,역사)에 해당하는 카디널러티는 M개
  • 학생과 과목으로 이루어진 인스턴스에 해당 교수도 M개 존재
  • 교수와 과목으로 이루어진 인스턴스에 해당하는 학생도 M개존재


릴레이션b - 현실적인면고려
  • 학생(홍길동)과 과목(철학)을 나타내는 인스턴스에 해당하는 교수(김길동)는 한 개이다.
  • 반면 학생(홍길동)과 교수(김길동)이 나타내는 인스턴스와 연관되는 과목(철학,역사) 은 M개이며,
  • 교수(최길동)와 과목(영문)을 나타내는 인스턴스와 연관되는 학생(홍길동,이길동)은 M개이다.
  • 즉그림10.41의 릴레이션b에서 학생(홍길동)과 과목(철학)을 알게 되면 교수(김길동)는 하나이므로 누구인지 알게된다.
  • 하지만 학생(홍길동)과 교수(김길동)만 알아서는 수강과목(철학,역사)중 무엇인지 알 수 없게된다.
  • 교수(최길동)와 과목(영문)을 알아서도 학생(홍길동,이길동)이 누구인지 알 수 없다.


그림 10.42
  • 교수를 결정하는 학생과 과목이 결정자가 돼 함수종속의 왼쪽에 표현되고 교수는 종속자가 돼 오른쪽에 표현된다.
  • FD : (학생,과목) -> 교수
  • 일반적으로 N개체관계에서 카디널러티가 1인 엔터티의 주 식별자는 N개체 관계에서 주 식별자에 포함되지 않고 종속자가 된다.
  • 인스턴스가 늘어나는 데 영향을 끼치지 않으므로 카디널러티가 1인 엔터티(교수)는 주식별자에 포함되지 않는다.
  • 함수종속을 찾으면 주 식별자를 알 수 있다.


그림 10.43
  • 3개체관계를 간혹 두개체 관계로 잘못 도출할 수가있다.


그림 10.44
  • 3개체 관계를 세 개의 2개체 관계로 도출하면 데이터를 관리하는데 문제가 없어서 3개체 관계를 사용하지 말것을 권유하기도 한다. 하지만 요건만 제대로 반영됐다면 3개체 관계가 오히려 효율적이므로 3개체관계를 사용하는것이 바람직 하다.