Terriermon - Digimon

1. 관계(Relationship)

2022. 2. 3. 16:26자격증/SQLD

1-1. 관계(Relationship)란?

 

사전적으로 정의했을 때, 관계란 상호 연관성이 있는 상태라고 할 수 있다. 이를 우리가 학습하고자 하는 데이터 모델의 개념에서 생각하면, 엔터티의 인스턴스 간 논리적인 연관성이라고 생각할 수 있고 보다 구체적으로는, 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태라고 할 수 있다. 

이러한 관계는 엔터티와 엔터티 간 연관성을 표현하기 때문에 특정 엔터티의 정의에 따라 영향을 받기도 하고, 속성 정의 및 관계 정의에 따라서도 다양하게 변경될 수 있다.

 

 

1-2. 관계의 패어링(Relationship Paring)

 

관계에 대해서 생각할 때 유의해야할 점이 있다.

위에서 설명한 관계의 정의를 통해 고려해볼 때, 엔터티 안의 인스턴스가 보두 동일한 관계를 가지고 있다고 생각할 수 있지만, 엔터티 안의 인스턴스는 개별적으로 관계를 가지게 되고 이것의 집합을 관계로 표현한다.

그리고 이때, 각각의 엔터티의 인스턴스들이 자신과 관련된 인스턴스들과의 관계를 어커런스로 참여하는 형태를 관계 패어링(Relationship Paring)이라고 한다.

 

즉, 위의 그림과 같이 학생 엔터티와 수업 엔터티가 있다고 생각해보자. 이때 학생 엔터티의 인스턴스인 김철수와 김길동은 각각 수업 엔터티의 인스턴스인 수학과 영어에 대해 서로 다른 관계를 가지고 있다. 김철수 인스턴스는 수학과 영어 인스턴스 모두와 관계를 가지고 있으며 김길동 인스턴스는 영어 인스턴스와 관계를 가지고 있다. 이렇게 각 인스턴스간 관계가 설정되어 있는 어커런스를 관계 패어링이라고 하며, 이러한 관계 패어링의 집합을 관계라고 한다.

 

 

1-3. 관계의 분류

 

1-3-1. 연결 목적에 따른 분류

 

아래와 같이 '존재에 의한 관계', '행위에 의한 관계' 두개로 나뉘어지는데 이는 어떠한 목적으로 관계가 연결되었느냐를 기준으로 한다.

 

- 존재에 의한 관계

예를 들어, '학부/과' 라는 엔터티와 '학생'이라는 엔터티가 존재한다고 가정하자. 이때 '학생' 엔터티의 특정 인스턴스는 언제든지 '학부/과' 엔터티의 특정 인스턴스에 속해있을 것이다. 이는 어떠한 이벤트나 액션, 행위에 의한 것이 아니라 단순히 소속되어 있기 때문에 나타나는 관계이다. 이러한 경우를 존재에 의한 관계라고 한다.

 

- 행위에 의한 관계

예를 들어, '손님'이라는 엔터티와 '주문'이라는 엔터티가 있다고 가정해보자. 각 엔터티의 특정 인스턴스 끼리는 관계가 발생하기 위해 '손님'이라는 엔터티의 인스턴스가 특정 행위를 해야한다. 이러한 관계를 행위에 의한 관계라고 이야기를 한다.

 

 

1-4. 관계의 표기법

 

관계를 표기할 때에는 아래와 같이 3가지 개념에 대해서 함께 표현해준다.

 

 

1-4-1. 관계명(Membership)

 

관계명은 엔터티가 관계에 참여하는 형태를 지칭한다. 관계는 2개의 엔터티에 의해 발생되므로, 하나의 관계는 2개의 관계명을 가지게 되며, 각각의 관게명에 따라서 하나의 관계가 두가지 관점으로 표현될 수 있다.

이때, 엔터티에서 관계가 시작되는 쪽을 관계시작점이라고 부르고 관계가 끝나는 쪽을 관계끝점이라고 한다. 관계명을 지을 때는 아래와 같은 명명규칙을 따른다.

 

- 애매한 동사를 피한다. 예를 들어 '관련이 있다', '관계된다' 등은 구체적이지 않아 두 엔터티간에 어떤 행위/상태가 존재하는지 파악하기 어렵다.

 

- 현재형으로 표현한다. 예를 들어, '주문을 했다', '신청할 것이다'라는 식의 표현은 사용하지 않는다. 대신 '주문 한다', '신청 한다' 와 같이 표현한다.

 

 

1-4-2. 관계차수(Cardinality)

 

관계차수란, 관계에 참여하는 두 엔터티의 참여자수를 이야기한다. 일반적으로 1:1, 1:M, M:N으로 나타낸다. 즉 관계에 하나만 참여하는지, 아니면 그 이상(2개 이상)이 관계에 참여하는지를 파악하는 것이 중요하다.

각각의 관계에 대한 IE 표기법은 다음과 같다.

 

1-4-3. 관계선택사양(Optionality)

 

관계선택사양이라는 것은 엔터티가 항상 관계에 참여하는지, 아니면 선택적으로 관계에 참여할 수 있는 것인지를 의미한다. 이때 항상 관계에 참여하는 것을 필수 참여(Mandatory Membership)이고 선택적으로 관계에 참여하는 것을 선택 참여(Optional Membership)이라고 한다.


위와 같이 학생 엔터티와 수업 엔터티가 있을 때, 학생 엔터티는 수업 엔터티와 관계가 있을수도 있고 없을수도 있기때문에 학생 엔터티를 기준으로 학생-수업 관계는 선택참여가 된다. 따라서 위와 같이 동그라미표시를 한다. 반대로 수업 엔터티는 학생 엔터티가 관계가 필수적이기 때문에 수업 엔터티를 기준으로 수업-학생 관계는 필수 참여가 되고 이때에는 아무런 표시를 하지 않는다.

(학생이 듣지 않는 수업에 대해서는 고려하지 않았다.)


출처: https://doorbw.tistory.com/228 [Tigercow.Door]

반응형

'자격증 > SQLD' 카테고리의 다른 글

SQL 자격검정 실전문제 제1장 문제  (0) 2022.02.20
2. 식별자(Identifiers)  (0) 2022.02.03
2. 속성Attribute  (0) 2022.02.03
1. 엔터티Entity  (0) 2022.02.03
Null값을 특정한 값으로 출력, NVL  (0) 2020.07.10