관계(Relationship)
1. 관계의 정의
- 관계란, 두 엔티티 사이의 논리적인 관계, 쉽게 표현해서 두 엔티티 간의 업무적인 연관성
1) 관계의 명명
- 이러한 관계를 정의할 때는 애매한 동사는 피하고 현재형으로 표현한다.
2) 관계차수(Cardinality)
- 두 개의 엔티티간 관계에서 참여자의 수를 표현하는 것.
- 1:1, 1:M, N:M 이 있다.
■ 1:1 관계
- 한 개의 구매신청서에 대해 한 개의 구매주문을 신청한다.
- 한 개의 구매주문에 대해 한 개의 구매신청서 내용을 작성한다.
■ 1:M 관계
- 한 부서에는 여러 사원을 포함한다.
- 한 명의 사원은 한 부서에 소속된다.
■ N:M 관계
- 하나의 주문에는 여러 개의 제품을 포함한다.
- 한 제품은 여러 개의 주문을 통해 주문된다.
3) 선택성
- 두 엔티티 간에 관계가 설정되었을 때, 항상 두 엔티티의 모든 인스턴스간에 관계가 존재해야 하는지(Mandatory) 아니면 모든 인스턴스에 대하여 존재할 필요가 없는지(Optional)를 나타낸다.
- 일반적이고 상식적인 선에서 먼저 판단한다.
- 각 부서에는 여러 사원을 포함할 지도 모른다. (Optional)
- 각 사원은 단 하나의 부서에 소속된다. (Mandatory)
2. 관계의 종류
1) 정상 관계
- 엔티티와 엔티티가 독립적으로 분리되어 있으면서, 상호간에 한 가지 관계만 존재하는 형태
2) 재귀적 관계
- 하나의 엔티티 내에서 엔티티와 엔티티가 관계를 맺고 있는 형태.
- 부서, 부품, 메뉴 등과 같이 계층 구조 형태를 표현할 때 유용하다.
- 부품은 다른 부품으로 조립된다.
3) 병렬 관계
- 엔티티와 엔티티가 독립적으로 분리되어 있으면서 두 개 이상의 관계가 상호간에 존재하는 형태
- 주문을 신청한 주문자로써의 관계와 주문한 물건을 받는 수신자로써의 관계
4) 슈퍼타입 서브타입 관계
- 공통 속성을 가지는 슈퍼타입과, 공통 부분을 제외하고 두 개 이상의 엔티티간의 속성에 차이가 있을 때 별도의 서브타입으로 존재할 수 있다.
- 배타적 관계 : 슈퍼타입의 엔티티가 반드시 하나의 서브타입에는 속하는 관계
- 포함 관계 : 슈타타입의 엔티티가 두 개 이상의 서브타입에 포함될 수 있는 관계
- 직원은 반드시 일반직원이나 촉탁직원 중 하나에만 속할 수 있다.
- 인터넷 접수를 한 사람이 다시 방문 접수할 수 있다.
- 슈퍼타입 서브타입 모델에서는 자료 원천 구분 표시(직원구분코드, 접수구분코드)가 반드시 있어야 한다.
- 직원은 반드시 일반직원이나 촉탁직원 중 하나에만 속할 수 있다.
- 인터넷 접수를 한 사람이 다시 방문 접수할 수 있다.
- 슈퍼타입 서브타입 모델에서는 자료 원천 구분 표시(직원구분코드, 접수구분코드)가 반드시 있어야 한다.
5) 식별/비식별 관계
- 식별 관계 : 부모 엔티티의 주식별자가 자식 엔티티의 주식별자로 상속
- 비식별 관계 : 부모 엔티티의 주식별자가 자식 엔티티의 일반속성으로 상속
3. 관계정의서 작성
- 관계에서 중요한 세 가지는 방향, 관계차수( 1:1, 1:N, N:M), 선택성(옵션, 필수) 이다.
1) 다음과 같이 질문하는 것은 관계를 도출하는데 유용할 수 있다.
- 각각의 사원은 한 부서에만 속할 수 있습니까?
- 각 부서에는 여러명의 사원이 항상 소속되어 있습니까?
2) 관계 정의서 작성
기준 엔티티 |
관계형태(방향, 관계차수, 선택성) |
선택성 |
관련 엔티티 |
회원 |
- 각각의 회원은 여러 번의 주문을 할 수 있다. - 각 주문은 한 회원에 의해 주문될 수 있다. |
선택 필수 |
주문 |
주문 |
- 각각의 주문에는 여러 개의 주문목록을 포함한다. - 각각의 주문목록은 하나의 주문내용에 포함된다. |
필수 필수 |
주문목록 |
주문목록 |
- 각각의 주문목록은 한 개의 도서와 연결된다. - 각각의 도서는 여러 주문목록에 주문될 수 있다. |
필수 선택 |
도서 |
3) 관계정의서를 이용하여 ERD를 그린다.
'개발 > Database' 카테고리의 다른 글
데이터모델링의 개요 (0) | 2018.08.02 |
---|---|
REDO, UNDO (0) | 2018.07.26 |
Oracle Hint 종류 및 설명 (0) | 2018.07.10 |
MSSQL Identity 설정 On/Off (0) | 2017.01.25 |
[MS-SQL]특정 단어가 포함된 프로시저 검색 (0) | 2016.12.26 |