- HOME
- [종료]구루비 DB 스터디
- 2014년 상반기 - 오라클 데이터베이스 스터디
- 관계 구성 요소
10.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 |
|
그림 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개체관계를 사용하는것이 바람직 하다.
- HOME
- [종료]구루비 DB 스터디
- 2014년 상반기 - 오라클 데이터베이스 스터디
- 관계 구성 요소