으쌰으쌰💪/SQL

데이터 모델링 - 관계 (Relationship)

_꼬마돌 2023. 8. 13. 23:35
반응형

관계의 정의

1. 사전적으로 정의하면, 상호 연관성이 있는 상태를 말한다. 

2. 엔티티 간 논리적인 연관성을 의미한다. 

3. 존재에 의한 관계행위에 의한 관계로 구분된다.

 

관계의 패어링

1. 관계는 엔티티 안의 인스턴스가 개별적으로 관계를 가지는 것(패어링)이고, 이것의 집합을 관계로 표현한다는 것이다.

2. 각각의 엔티티의 인스턴스들을 자신이 관련된 인스턴스들과 관계의 어커런스(발생, 사건)로 참여하는 형태를 관계 패어링 (Relationship Pairing)이라 한다.

 

예)

위 그림에서 강사번호가 1번이라고 했을 때, 1번 강사가 1번 학생, 2번 학생, 3번 학생... 모두에게 강의를 하는 관계를 갖는다. 즉 1번, 2번, 3번.. 모든 학생의 강사번호는 1번이 된다.

강사 홍길동은 임꺽정과 초랭이에게 강의를 하는 형태로 관계가 표현되어 있고, 전우치는 초랭이에게 강의를 하는 형태로 되어 있다. 이와 같이 엔티티 내의 인스턴스와 인스턴스 사이에 관계가 설정되어 있는 어커런스를 관계 패어링이라고 한다.

 

관계의 분류 - 존재에 의한 관계

예)

사원은 부서에 항상 속해있다.

"소속된다"라는 의미는 행위에 따른 이벤트에 의해 발생되는 것이 아니고, 그냥 사원이 부서에 소속되어 있기 때문에 나타나는 존재의 형태에 의해 관계가 형성되어 있는 것이다.

 

관계의 분류 - 행위에 의한 관계

예)

주문은 고객이 주문을 할 때 발생한다. 

주문 엔티티의 주문번호는 고객이 "주문한다"라는 행위에 의해 발생되었기 때문에 두 엔티티 사이의 관계는 행위에 의한 관계가 되는 것이다.

 

관계의 표기법

 

관계의 표기법 - 관계명

1. 엔티티가 관계에 참여하는 형태를 지칭한다.

2. 각각의 관계는 두 개의 관계명을 가질 수 있다. 즉, 각각의 관계명에 의해 두 가지의 관점으로 표현될 수 있다. 

예)

엔티티에서 관계가 시작되는 편을 관계시작점 (The Beginning)이라고 부르고 받는 편을 관계끝점 (The End)이라고 부른다. 관계 시작점과 끝점 모두 관계이름을 가져야 하며, 참여자의 관점에 따라 관계이름이 능동적(Active)이거나 수동적(Passive)으로 명명된다.

 

관계의 명명 규칙

- 애매한 동사를 피한다. 예를 들면 "관계된다", "관련이 있다" 등은 구체적이지 않아 어떤 행위가 있는지 또는 두 참여자간 어떤 상태가 존재하는지 파악할 수 없다.

- 현재형으로 표현한다. 예를 들면 "수강을 신청했다", "강의를 할 것이다"라는 식으로 표현해서는 안 된다. "수강 신청한다", "강의를 한다" 로 표현해야 한다.

 

관계의 표기법 - 관계차수

1. 두 개의 엔티티 간 관계에서 참여자의 수를 표현하는 것을 관계차수 (Cardinaltiy)라고 한다.

2. 가장 일반적인 관계차수 표현방법은 1:1, 1:M, M:M이다.

예)

 

관계차수 (1:1)

- 관계에 참여하는 각각의 엔티티는 관계를 맺는 다른 엔티티에 대해 단지 하나의 관계만을 가지고 있다. (사원 한 명은 하나의 병역사항만을 가지고 있고, 병역사항도 한 사원의 병역사항에 해당한다.)

 

 

관계차수 (1:M)

- 한 명의 사원은 한 부서에 소속되고 한 부서는 여러 사원을 포함한다.

 

 

관계차수 (M:M)

- 관계에 참여하는 각각의 엔티티는 관계를 맺는 다른 엔티티에 대해 하나 혹은 그 이상의 수와 관계를 가지고 있다.

(한 번에 주문으로 여러 제품을 구매할 수 있고, 하나의 제품이 여러 번의 주문에 걸쳐서 주문될 수 있다.)

 

 관계의 표기법 - 관계선택사양 (Optionality)

1. "반드시 지하철의 문이 닫혀야만 지하철은 출발한다."

2. 지하철출발과 지하철 문닫힘은 필수(Mandatory)적으로 연결 관계가 있는 것이다. 이와 같은 것이 데이터 모델의 관계에서는 필수참여관계가 된다.

3. 지하철의 출발을 알리는 안내방송은 지하철의 출발과 상관없이 방송해도 아무런 문제가 발생하지 않는다. 즉, 안내방송시스템이 고장이 나도 지하철 운행에는 별로 영향을 주지 않는다. 

4. 지하철의 출발과 지하철방송과는 정보로서 관련은 있지만, 서로가 필수적인 관계은 아닌 선택전인 관계(Optional)가 되는 것이다. 이와 같은 것이 데이터 모델 관계에서는 선택참여관계가 된다. 

예)

- 고객은 여러 개의 주문을 할 수도 있고 한 개의 주문도 하지 않을 수 있다. (선택적 관계)

- 하지만 주문은 반드시 고객을 가진다. (필수적 관계)

 

관계 정의 시 체크 사항

1. 두 개의 엔티티 사이에 관심있는 연관 규칙이 존재하는가?

2. 두 개의 엔티티 사이에 정보의 조합이 발생되는가?

3. 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?

4. 업무기술서, 장표에 관계연결을 가능하게 하는 동사(verb)가 있는가?

 

관계 읽기

1. 기준(Source) 엔티티를 한 개(One) 또는 각(Each)으로 읽는다. 

2. 대상(Target) 엔티티의 관계 참여도 즉, 개수(하나, 하나 이상)를 읽는다. 

3. 관계선택사양(필수/선택)과 관계명을 읽는다. 

예)

각각의/하나의 기준 엔티티 관계 차수 대상 엔티티 필수/선택 관계명
각각의 고객은 여러 개의 주문을 때때로 주문한다.
각각의 주문은 하나의 고객을 반드시 가진다.

 

반응형