by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

관계 구성 요소




10.3 관계 구성 요소

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

1. 카디널러티(Cardinality)

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

2.옵셔널러티(Optionality)

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

3.관계 디그리(Releationship Degree)

  • 하나의 관계에 포함된 엔터티의 개수
  • 관계는 3개이상의 엔터티 사이에서도 발생할 수 있다.
  • 어떤 학생이 어떤 교수의 어떤과목을 수강 신청했는지를 관리
  • M:M관계 해소
  • 신청일자 속성은 학생,과목,교수 엔터티의 주식별자 조합에 의해서 유일하게 결정됨.
  • 학생,과목,교수 엔터티의 주 식별자 조합이 결정자가 돼 함수 종속의 왼쪽에 표현됨.
  • FD : (학생번호,과목코드,교수ID) -> 신청일자
  • 릴레이션a
    • 학생(홍길동)과 교수(김길동)으로 이루어진 인스턴스에 대해 과목(철학,역사)에 해당하는 카디널러티는 M개
    • 학생과 과목으로 이루어진 인스턴스에 해당 교수도 M개 존재
    • 교수와 과목으로 이루어진 인스턴스에 해당하는 학생도 M개존재
  • 릴레이션b - 현실적인면고려
    • 학생(홍길동)과 과목(철학)을 나타내는 인스턴스에 해당하는 교수(김길동)는 한 개이다.
    • 반면 학생(홍길동)과 교수(김길동)이 나타내는 인스턴스와 연관되는 과목(철학,역사) 은 M개이며,
    • 교수(최길동)와 과목(영문)을 나타내는 인스턴스와 연관되는 학생(홍길동,이길동)은 M개이다.
    • [그림10.41][릴레이션b]에서 학생(홍길동)과 과목(철학)을 알게 되면 교수(김길동)는 하나이므로 누구인지 알게된다.
    • 하지만 학생(홍길동)과 교수(김길동)만 알아서는 수강과목(철학,역사)중 무엇인지 알 수 없게된다.
    • 교수(최길동)와 과목(영문)을 알아서도 학생(홍길동,이길동)이 누구인지 알 수 없다.
  • 교수를 결정하는 학생과 과목이 결정자가 돼 함수종속의 왼쪽에 표현되고 교수는 종속자가 돼 오른쪽에 표현된다.
  • FD : (학생,과목) -> 교수
  • 일반적으로 N개체관계에서 카디널러티가 1인 엔터티의 주 식별자는 N개체 관계에서 주 식별자에 포함되지 않고 종속자가 된다.
  • 인스턴스가 늘어나는 데 영향을 끼치지 않으므로 카디널러티가 1인 엔터티(교수)는 주식별자에 포함되지 않는다.
  • 함수종속을 찾으면 주 식별자를 알 수 있다.
  • 3개체관계를 간혹 두개체 관계로 잘못 도출할 수가있다.
  • 3개체 관계를 세 개의 2개체 관계로 도출하면 데이터를 관리하는데 문제가 없어서 3개체 관계를 사용하지 말것을
    권유하기도 한다. 하지만 요건만 제대로 반영됐다면 3개체 관계가 오히려 효율적이므로 3개체관계를 사용하는것이 바람직 하다.

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.