관계(Relationship)

2023. 3. 1. 16:03SQL/SQL 전문가 가이드(2020 개정판)

1. 관계의 개념

가. 관계의 정의

상호 연관성이 있는 상태로 데이터 모델에 대입하여 정의하면 '엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로써 서로에게 연관성이 부여된 상태'라고 할 수 있습니다.

나. 관계의 패어링

패어링을 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것이며, 이것의 집합을 관계로 표현하는 것입니다. 각각의 엔터티의 인스턴스들은 자신이 관련된 인스턴스들과 관계의 어커런스로 참여하는 형태를 관계 패어링(Relationship Paring)이라 합니다.

2. 관계의 분류

관계가 존재에 의한 관계와 행위에 의한 관계로 구분될 수 있는 것은 관계를 연결함에 있어 어떤 목적으로 연결되었느냐에 따라 분류하기 때문입니다.

UML(Unified Modeling Language)에는 클래스다이어그램의 관계 중 연관관계(Association)와 의존관계(Dependency)가 있습니다. 차이점은 연관관계는 항상 이용하는 관계로 존재적 관계에 해당하고, 의존관계는 상대방 클래스의 행위에 의해 관계가 형성될 때 구분하여 표현한다는 것입니다.

 

3. 관계의 표기법

□ 관계명(Membership): 관계의 이름

□ 관계차수(Cardinality): 1:1, 1:M, M:N

□ 관계선택사양(Optionality): 필수관계, 선택관계

 

가. 관계명

엔터티가 관계에 참여하는 형태를 지칭합니다. 각각의 관계는 두 개의 관계명을 가지고 있습니다.

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

 

□ 애매한 동사를 피합니다. 예를 들어 '관계된다', '관련이 있다', '이다', '한다' 등은 구체적이지 않아 어떤 행위가 있는지 또는 두 참여자 간 어떤 관계가 있는지 파악할 수 없습니다.

□ 현재형으로 표현합니다. 예를 들어 '수강을 신청했다', '강의를 할 것인다'라는 식으로 표현해서는 안되고, '수강 신청한다', '강의를 한다'로 표현해야 합니다.

 

나. 관계차수

두 개의 엔터티 간 관계에서 참여자의 수를 표현하는 것, 가장 일반적인 관계차수 표현방법은 1:M, 1:1, M:N입니다.

 

1) 1:1(ONE TO ONE) 관계를 표시하는 방법

2) 1:M(ONE TO MANY) 관계를 표시하는 방법

3) M:M(MANY TO MANY) 관계를 표시하는 방법

M:M 관계로 표현된 데이터 모델은 이후에 두 개의 주식별자를 상속받은 관계엔터티를 이용하여 3개의 엔터티로 구분하여 표현합니다.

 

다. 관계선택사양

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

지하철 출발과 지하철문 닫힘은 필수(Mandatory)적으로 연결 관계가 있으며, 이와 같은 것이 필수참여관계(Mandatory)가 됩니다.

참여하는 엔터티가 항상 참여하는지, 아니면 참여할 수도 있는지를 나타내는 방법이 필수(Mandatory Membership)와 선택참여(Optional Membership)입니다.

4. 관계의 정의 및 읽는 방법

가. 관계 체크사항

 

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

□ 두 개의 엔터티 사이에 정보의 조합이 발생하는가?

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

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

 

나. 관계 읽기

 

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

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

□ 관계선택사양과 관계명을 읽습니다.

 

'SQL > SQL 전문가 가이드(2020 개정판)' 카테고리의 다른 글

정규화(Normalization)  (0) 2023.03.03
식별자(Identifier)  (0) 2023.03.02
속성(Attribute)  (0) 2023.02.28
엔터티(Entity)  (0) 2023.02.27
데이터 모델의 이해  (0) 2023.02.26