관계의 개념
관계의 정의
엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서
서로에게 연관성이 부여된 상태
- 상호 연관성이 있는 상태
- 엔터티와 엔터티 간 연관성을 표현하기 때문에
엔터티의 정의
에 따라 영향을 받기도 하고,
속성 정의
및 관계 정의
에 따라서도 다양하게 변할 수 있다.
관계의 페어링
엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것
- 각각의 인스턴스들이 자신과 관련된 인스턴스들과 관계의 어커런스로 참여하는 형태
페어링의 집합
을 관계로 표현한다.
- 개별 인스턴스가 각각 다른 종류의 관계를 가지고 있다면 두 엔터티 사이에 두 개 이상의 관계가 형성될 수 있다.
- 관계의 표현에는 이항 관계, 삼항 관계, n항 관계가 존재할 수 있는데 실제에 있어서 삼항 관계 이상은 잘 나타나지 않는다.
관계의 분류
존재
에 의한 관계
행위
에 의한 관계
관계를 연결함에 있어 어떤 목적으로 연결되었느냐에 따라 위처럼 분류할 수 있다.
UML 에서는 존재적 관계를 → 연관 관계 (Association) : 실선, 멤버 변수로 선언
행위적 관계를 → 의존 관계 (Dependency) 로 표현한다. : 점선, 메서드에서 파라미터 등으로 이용
관계의 표기법
관계명 (Membership)
- 관계의 이름
관계 차수 (Cardinality)
- 1 : 1
- 1 : M
- M : N
관계 선택 사양 (Optionality)
- 필수 관계
- 선택 관계
관계명
- 엔터티가 관계에 참여하는 형태를 지칭한다.
- 각각의 관계는 두 개의 관계명을 가지고 있다.
- 각각의 관계명에 의해 두 가지의 관점으로 표현될 수 있다.
- 관계가 시작되는 편을 관계 시작점 (The Begining) 이라고 부르고, 받는 편을 관계 끝점 (The End)라고 부른다.
- 관계 시작점과 끝점 모두 관계 이름을 가져야 하며 참여자의 관점에 따라 관계 이름이 능동적이거나 수동적으로 명명 된다.
- 명명 규칙
- 애매한 동사를 피한다.
- 관계 된다. 관련이 있다. 이다. 한다 등
- 현재형으로 표현한다.
- 수강신청을 한다. ⭕️ 수강신청을 했다 ❌
- 강의를 한다. ⭕️ 강의를 할 것이다 ❌
관계 차수
Degree/Cardinality
- 두 개의 엔터티간 관계에서
참여자의 수
를 표현하는 것
- 한 개의 관계가 존재하느냐 아니면 두 개 이상의 멤버쉽이 존재하느냐를 중요하게 파악해야 한다.
- 관계를 표현하는 방법
-
1 : 1
-
1 : M
-
M : N
- 이러한 데이터 모델은 이 후에 두 개의 주식별자를 상속받은 관계 엔터티를 이용하여 3개의 엔터티로 구분하여 표현한다.
관계 선택 사양
- Optionality
- 관계를 총한 상대방 과의 업무적인 제약조건을 표현하는 것으로 중요한 표기법이다.
- 어떻게 설정했는지에 따라 참조무결성 제약조건의 규칙이 바뀌게 되므로 유의해서 설계해야 한다.
필수 참여 관계
- Mandatory Membership
- 예) 지하철 문과 지하철과의 관계, 주문서와 주문목록
- 참여하는 모든 참여 엔터티가 반드시 관계를 가진다.
선택 참여 관계
- Optional Membership
- 예) 지하철 음성 방송과 지하철과의 관계, 목록과 주문목록
- 선택 참여된 항목은 물리속성에서 FK로 연결될 경우 Null 을 허용할 수 있는 항목이 된다.
- ERD 에서 관계를 나타내는 선에서 선택참여하는 엔터티 쪽을 원으로 표시한다.
(필수참여는 아무런 표시하지 않는다.)
- 양쪽 엔터티에 모두 선택 참여가 표시된다면, 즉 0:0 관계가 된다면 그 관계는 잘못될 확률이 많으므로 관계 설정이 잘못되었는지를 검토해 보아야 한다.
관계의 정의 및 읽는 방법
관계 체크 사항
- 두 개의 엔터티 사이에 관심있는
연관 규칙
이 존재하는가?
- 두 개의 엔터티 사이에
정보의 조합
이 발생되는가?
- 업무기술서, 장표에 관계 연결에 대한
규칙이 서술
되어 있는가?
- 업무기술서, 장표에 관계 연결을 가능하게 하는
동사
가 있는가?
관계 읽기
먼저 관계에 참여하는 기준 엔터티를 하나 또는 각 으로 읽고, 대상 엔터티의 개수(하나, 하나 이상)를 읽고 관계 선택 사양과 관계명을 읽도록 한다.
- 기준 엔터티를 한 개(One) 또는 각(Each) 으로 읽는다.
- 대상 엔터티의 관계 참여도 즉 개수(하나, 하나 이상)를 읽는다.
- 관계선택사양과 관계명을 읽는다.