1. 관계의 개념
가) 관계의 정의
- 엔터티에 있는 인스턴스 사이의 논리적인 연관성으로서, 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태.
- 관계는 엔터티의 정의에 따라 영향을 받기도 하고, 속성 정의 및 관계 정의에 따라서도 다양하게 변할 수 있음.
나) 관계의 패어링
- 관계는 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것(패어링)이고 이것의 집합을 관계로 표현함.
- 관계는 두 엔터티 사이에 두 개 이상의 관계 형성 가능(1:1 / 1:M : M:N)
- 엔터티는 인스턴스의 집합을 논리적으로 표현하였다면, 관계는 관계 패어링의 집합을 논리적으로 표현한 것
2. 관계의 분류
1) 존재에 의한 관계
- 두 엔터티 사이의 관계가 존재의 형태에 의해 형성되는 경우
2) 행위에 의한 관계
- 두 엔터티 사이의 관계가 행위에 의한 관계로 인해 형성되는 경우
3. 관계의 표기법
- 관계명(Membership) : 관계의 이름
- 관계차수(Cardinality) : 1:1, 1:M, M:N
- 관계선택사양(Optionality) : 필수관계, 선택관계
가) 관계명(Membership)
1) 관계명
- 관계 시작점 : 엔터티에서 관계가 시작되는 편
- 관계 끝점 : 엔터티에서 관계를 받는 편
2) 관계 시작점과 끝점 모두 관계이름을 가져야 함.
3) 참여자 관점에 따라 관계이름이 능동적 또는 수동적으로 명명됨.
4) 명명규칙
- 애매한 동사를 피함(Ex:관련이 있다, 이다, 한다 등등)
- 현재형으로 표시함(Ex:수강을 신청했다가 아닌 수강 신청한다로 표시)
나) 관계차수(Degree/Cardinality)
1) 1:1(ONE TO ONE) 관계를 표시하는 방법
- 관계를 맺는 엔터티가 하나의 관계만을 가지는 경우
2) 1:M(ONE TO MANY) 관계를 표시하는 방법
- 관계를 맺는 엔터티가 한 개 이상인 경우이며, 반대의 방향은 한 개의 관계만을 가짐.
3) M:M(MANY TO MANY) 관계를 표시하는 방법
- 관계를 맺는 엔터티가 한 개 이상인 경우이며, 반대의 경우도 한 개 이상의 관계를 가짐.
- 이 경우, 두 개의 주식별자를 상속받은 관계엔터티를 이용하여 3개의 엔터티로 구분하여 표현
다) 관계선택사양(Optionality)
1) 필수참여(Mandatory Membership)
- 참여하는 모든 참여자가 반드시 관계를 가지는, 타 엔터티의 참여자와 연결이 되어야 하는 관계
- 주문서와 주문목록 관계처럼, 서로가 반드시 존재해야 하는 관계
2) 선택참여(Optional Membership)
- 참여하는 모든 참여자가 관계를 가지지 않을 수도 있는 관계
- 목록과 주문목록 관계처럼, 주문목록은 반드시 목록에 있지만, 목록은 주문목록에 없을 수 있음
4. 관계의 정의 및 읽는 방법
가) 관계 체크사항
- 두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?
- 두 개의 엔터티 사이에 정보의 조합이 발생되는가?
- 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
- 업무기술서, 장표에 관계연결을 가능하게 하는 동사(Verb)가 있는가?
나) 관계 읽기
- 관계 읽는 방법
- 기준(Source) 엔터티를 한 개(One) 또는 각(Each)으로 읽음.
- 대상(Target) 엔터티의 관계참여도 즉 개수(하나, 하나 이상)를 읽음.
- 관계선택사양과 관계명을 읽음.
문서에 대하여
- 최초작성자 : 강정식
- 최초작성일 : 2013년 09월 14일
- 이 문서는 오라클클럽 오라클 성능 트러블슈팅 스터디 모임에서 작성하였습니다.
- 이 문서의 내용은 한국 데이터베이스 진흥원에서 출간한 'SQL 전문가 가이드'를 참고하였습니다.
문서정보
- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=27427062&
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.
'IT > SQLD' 카테고리의 다른 글
[SQLD] 과목1_1장_5.식별자 (0) | 2018.11.28 |
---|---|
[SQLD] 과목1_1장_3.속성 (0) | 2018.11.28 |
[SQLD] 과목1_1장_2.엔터티 (0) | 2018.08.16 |
[SQLD] 과목1_1장_1.데이터 모델의 이해 (0) | 2018.08.10 |