DATOR


관계의 정의 관계


여러 문서나 서적에서 관계에 대해 다음과 같이 설명하고 있다.

1. ‘심장, , 등이 엔터티라면 이를 연결해 주는 혈관을 관계로 비유할 있다

2. ‘엔터티와 엔터티 간의 연관성을 표현한 ’ 

3. {[e1,,e2, … ,en]| e1 E1, e2   E2, … , en En },  [e1,,e2, … ,en]이 관계 

 1, 2번의 설명은 기본적인 의미는 이해가 되지만 이것만으로는 데이터 모델에서의 관계에 대해 설명이라고 하기에는 좀 부족하게 느껴진다. 반면 3번의 수학적인 정의는 학문적으로는 명확하고 올바르겠지만, 수학을 전공하지 않은 사람이 이해하기에는 적지 않게 무리가 있다. 앞으로 정규화에서도 다루겠지만 정규화에 대한 수학적 표현을 수학을 전공하지 않은 사람이 이해하고 실제 업무에 적용하는 것도 상당히 어려울 밖에 없다. 따라서 1, 2번 보다는 명확하면서 3번 보다는 쉬운 정의가 필요하게 된다.

 현실적으로 데이터 모델러들은 관계는 인스턴스의 연관성의 집합이다 정도의 이해가 필요하다. 이 정의는 '엔터티 간의 연관성을 표현한 것'과는 좀 다르게 해석해야 한다. 본 d'Lab에서는 '엔터티'를 '유사한 인스턴스의 집합'으로 정의하여 사용하기로 하였으므로(http://www.dator.co.kr/jslee/92301) '엔터티 간의 연관성'이라는 설명은 '인스턴스의 연관성의 집합'과는 다른 의미가 된다.

 아래 그림의 좌측에는 X와 Y엔터티의 인스턴스 간의 관계를 표현한 것으로, X엔터티의 E인스턴스를 제외하고는 Y엔터티의 인스턴스와 관계가 하나 이상 존재하고, 반대로 Y엔터티의 모든 인스턴스는 X엔터티의 단 하나의 인스턴스와 관계가 있음을 알 수 있다. 좌측의 그림이 인스턴스 자체의 관계에 집중하여 9개의 관계를 표현한 것이라면 가운데 있는 그림은 관계를 기준으로 양쪽의 인스턴스 중 하나라도 동일하면 인스턴스를 그룹화하여 관계를 재설정한 것으로 관계의 방향성이 나타나고 하나의 관계에 대해서 상대 인스턴스가 복수 개가 존재할 수 있음도 표현하게 된다. 이 상태에서 관계를 엔터티 레벨까지 추상화하면 오른쪽 그림과 같이 하나의 관계로써 표현할 수 있게 된다. 오른쪽 그림에 표현된 관계는 단 하나지만 'X엔터티의 인스턴스가 Y엔터티의 복수 개의 인스턴스와 관계를 가질 수 있으며, Y엔터티의 모든 인스턴스는 X엔터티의 단 하나의 인스턴스와 반드시 관계를 갖는다'라는 왼쪽 그림과 완전히 동일한 의미를 나타내고 있는 것이다.

 

관계5.JPG

 

 유사한 방법으로 M:M 관계를 정의할 수 있다.  아래 그림은 X엔터티의 하나의 인스턴스에 Y엔터티의 복수의 인스턴스가 관련되고, 반대로 Y엔터티의 하나의 인스턴스가 X엔터티의 복수의 인스턴스와 관련되는 상황에 대한 것이다. X->Y관계나 Y->X 관계에 대한 두번째 세번째 그림 모두 관계에 M이 들어 있으므로 두 방향 모두 1:M 관계가 되어 엔터티 레벨에는 M:M 관계가 된다. 이와 같이 엔터티 간의 최종 관계는 인스턴스 단위로 두 가지 방향에 대한 관계를 합성한 결과이다.

 

 관계 MM.JPG  

 

 

 충분히 상상할 수 있듯이 1:1 관계는 양방향 모두 상대방 인스턴스가 단 하나만 관련되는 경우가 될 것이다.

 

 관계의 의미에서 출발하여 관계의 차수(degree, cardinality)까지 도출해 보았다.  정리하자면 엔터티 간의 관계 형태를 결정하는 과정은 다음과 같다.

1. 엔터티 간의 관련성이 아닌 인스턴스의 관련성을 따져야 한다.

2. 인스턴스의 관련성을 따질 때 양방향 모두를 검토해야 한다.

3. 인스턴스의 방향을 정하고 검토를 시작할 때 시작하는 쪽의 엔터티는 항상 1로 시작하여야 한다. 즉 1:1인지 1:M인지만 검토하면 된다.

4. 양방향 관계가 각각 결정되었으면 그들을 합성하여 최종 엔터티 레벨의 관계를 확정한다. (둘 다 1:1 이면 최종 1:1, 하나만 1:M이면 1:M, 양방향 모두 1:M이면 M:M)

 

TAG

Leave Comments