데이터모델링
관계(Relationship)
#
Find similar titles
- 최초 작성자
- 최근 업데이트
Structured data
- Category
- Database
Table of Contents
관계의 개념 #
관계의 정의 #
관계(Relationship)를 사전적으로 정의하면 산호 연관성이 있는 상태라고 말할 수 있다. 이것을 데이터 모델에 대입하여 정의해 보면, 엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재 또는 행위로서 서로에게 연관성이 부여된 상태라고 할 수 있다. 관계는 엔터티와 엔터티 간 연관성을 표현하기 때문에 엔터티의 정의에 따라 영향을 받기도 하고, 속성 정의 및 관계 정의에 따라서도 다양하게 변할 수 있다.
관계의 페어링 #
관계는 엔터티 안에 인스턴스가 개별적으로 관계하는 것(페어링)이고 이것의 집합을 관계로 표현한다. 개별 인스턴스가 각각 다른 종류의 관계가 있다면 두 엔터티 사이에 두 개 이상의 관계가 형성될 수 있다.
각각의 엔터티의 인스턴스들은 자신이 관련된 인스턴스들과 관계의 어커런스로 참여하는 형태, 다시 말해 엔터티 내의 인스턴스와 인스턴스 사이에 관계가 설정된 어커런스를 관계 페어링(Relationship Paring)이라 한다. 엔터티는 인스턴스의 집합을 논리적으로 표현하였다면 관계는 관계 페어링의 집합을 논리적으로 표현한 것이다.
관계의 분류 #
관계는 존재에 의한 관계와 행위에 의한 관계로 구분될 수 있고, 이는 관계를 연결하는 데 있어 어떤 목적으로 연결되었느냐에 따라 분류하는 것이다.
관계의 분류
왼쪽 모델은 황경빈 사원이 DB팀에 소속되어 있는 상태를 나타낸다. '소속된다'라는 의미는 행위에 따른 이벤트에 의해 발생되는 의미가 아닌, 존재의 형태에 의해 관계가 형성되는 것이다.
오른쪽 모델은 김경재 고객이 '주문한다'라는 행위를 하여 CTA201이라는 주문번호를 생성하였다. 주문 엔터티의 CTA201 주문번호는 김경재 고객이 '주문한다'라는 행위로 발생하였기 때문에 두 엔터티 사이의 관계는 행위에 의한 관계가 되는 것이다.
관계의 표기법 #
관계는 3가지 개념과 함께 표기법을 이해할 필요가 있다.
관계명(Membership) #
관계명은 엔터티가 관계에 참여하는 형태를 지칭한다. 각각의 관계는 두 개의 관계명을 가지고 있다. 또한 각각의 관계명에 의해 두 가지 관점으로 표현될 수 있다. 엔터티에서 관계가 시작되는 편을 관계 시작점(The Beginning)이라고 부르고 받는 편을 관계 끝점(The End)이라고 부른다. 관계 시작점과 끝점 모두 관계 이름을 가져야 하며 참여자의 관점에 따라 관계 이름이 능동적(Active)이거나 수동적(Passive)으로 명명된다. 관계명은 다음과 같은 명명규칙에 따라 작성해야 한다.
- 애매한 동사를 피한다. 예를 들면 '관계된다', '관련이 있다', '이다', '한다' 등은 구체적이지 않아 어떤 행위가 있는지 또는 두 참여자 간 어떤 상태가 존재하는지 파악할 수 없다.
- 현재형으로 표현한다. 예를 들면 '수강을 신청했다', '강의를 할 것이다'라는 식으로 표현해서는 안 된다. '수강 신청한다', '강의를 한다'로 표현해야 한다.
관계차수(Degree/Cardinality) #
두 개의 엔터티 간 관계에서 참여자의 수를 표현하는 것을 관계차수(Cardinality)라고 한다. 가장 일반적인 관계차수 표현방법은 1:M, 1:1, M:N이다. 가장 중요하게 고려해야 할 사항은 한 개의 관계가 존재하느냐 아니면 두 개 이상의 멤버십이 존재하는지를 파악하는 것이 중요하다.
관계차수는 Crow’s Foot 모델을 통해 선을 이용하여 표현한다. 한 개가 참여하는 경우는 실선을 그대로 유지하고 다수가 참여한 경우는 까마귀발과 같은 모양으로 그려준다.
관계차수 (출처)
관계선택사양(Optionality) #
관계선택사양이란 참여하는 엔터티가 항상 참여하는지 아니면 참여할 수도 있는지를 나타내는 방법으로, 필수참여(Mandatory Membership)와 선택
참여(Optional Membership)로 나뉜다.
필수참여는 참여하는 모든 참여자가 반드시 관계가 있는, 타 엔터티의 참여자와 연결이 되어야 하는 관계이다. 예를 들면 주문서는 반드시 주문목록을 가져야 하며 주문목록이 없는 주문서는 의미가 없으므로 주문서와 주문목록은 필수참여관계가 되는 것이다. 반대로 목록은 주문이 될 수도 있고 주문이 되지 않은 목록이 있을 수도 있으므로 목록과 주문목록과의 관계는 선택참여가 되는 것이다.
관계선택참여 (출처)