성장通

05. 그래프의 다중성 본문

그래프/그래프 데이터

05. 그래프의 다중성

백악기작은펭귄 2024. 2. 3. 00:49

그래프의 다중성

그래프 모델링을 진행하다 보면 두 정점 레이블 간 관계가 여러 개 존재하는 경우가 종종 있다. 대다수의 그래프 데이터베이스에서는 모든 간선 레이블을 다대다로 표현하며, 이렇게 표현된 모든 정점은 특정 간선 레이블을 사용해 다른 많은 정점과 연결될 수 있다. ERD에서는 이를 many-to-many라고 부르며 UML에서는 0..* to 0..*라 표현한다. 이러한 개념이 바로 다중성(multiplicity)이다.

 

다중성이란, 그룹이 가질 수 있는 최대 허용 cardinality 범위를 가리키는 말로, 인접한 정점 그룹이 한 정점 그룹과 맺을 수 있는 간선 레이블 수의 최대치를 가리킨다.

 

그래프 스키마 언어로 다중성 모델링하기

그래프 스키마에 다중성을 적용하려면 인접한 정점 그룹의 종류를 이해해야 한다. 정점 그룹의 종류는 크게 집합(set)컬렉션(collection)으로 나뉘며 각각의 정의는 다음과 같다.

 

  1. 집합: 고윳값을 저장하는 추상 데이터 형식
  2. 컬렉션: 고유하지 않은 값을 저장하는 추상 데이터 형식

 

인접한 정점 '집합'에서 정점의 인스턴스는 한 개뿐이지만, 인접한 정점 '컬렉션'에서의 정점 인스턴스는 여러 개 존재할 수 있다.

 

 

왼쪽 그림은 Alice에 인접한 정점 그룹이 집합 {acct_14} 임을 보여주며 오른쪽은 Daniel에 인접한 정점 그룹이 컬렉션 [acct_20, acct_20] 임을 보여준다. 이는 위의 예시에서처럼, 같은 프로퍼티의 간선 레이블이 모종의 이유로 구분될 때(관리자로서 계좌 소유 & 고객으로서 계좌 소유) 또는 간선 기록의 필요 여부(가장 최근 기록만 or 여러 개의 간선 기록) 등에 따라 결정될 수 있다.

 

위 두 그래프의 차이를 그래프 스키마 언어로 모델링할 때는 다음과 같이 수행한다.

 

 

그래프 스키마 언어에서는 앞선 그림과 달리 하나의 선으로 모든 관계의 개수를 표현한다. 집합과 같이 간선이 한 개인 경우 이전과 동일하게 한 개의 선으로 이를 표현한다. 반면 두 정점 간에 많은 간선이 존재할 수 있는 상황을 모델링하기 위해서는 다른 표기법이 필요하다. 그래프 스키마 언어에서는 이를 이중선과 프로퍼티를 이용하여 표현하는데, 위 예시에서는 role을 프로퍼티로 추가하여 '관리자로서' 계좌를 소유하는지, '고객으로서' 계좌를 소유하는지를 나타내고자 하였다. 이러한 프로퍼티는 각 간선을 고유하게 만들어줄 수 있는 것으로 정의하는 것이 중요하다.

 

전체적인 그래프 모델 예제

그래프 스키마 언어를 이용해 다음과 같은 table 데이터를 개념적 그래프 모델(conceptual graph model)로 변환할 수 있다.

 

 

 

개념적 그래프 모델은 그래프 데이터베이스 스키마를 만든다. 위 예제의 경우 고객의 금융거래와 관련된 데이터 조각들을 각각 정점 레이블로 변환한 것으로 세 가지 방식으로 서로 연결된다. 1) 고객은 계좌를 가지고, 2) 신용카드를 사용하며, 3) 대출을 받는다. 이때 계좌 소유의 경우 프로퍼티 role에 의해 다중 간선을 허용한다. 여기서 주의할 점은, 데이터 각각을 정점으로 두어 표현한 이전 포스팅의 '인스턴스 데이터'와는 다름을 인지해야 한다는 것이다. 위 그림은 그래프 스키마 언어로 구성한 개념적 그래프 모델로 그래프 데이터베이스에서 데이터가 어떻게 생겼는지를 보여주는 것이다(관계형에서의 ERD와 유사).

'그래프 > 그래프 데이터' 카테고리의 다른 글

06. 관계형을 그래프로  (0) 2024.02.18
04. 그래프 스키마 언어  (0) 2024.01.28
03. 관계형에서 그래프 씽킹으로  (1) 2024.01.21
02. 그래프 씽킹  (0) 2023.12.21
01. 떠오르는 그래프 기술  (1) 2023.12.06