관계란?
- 관계(Relationship)란 엔티티와 엔티티 사이의 관계를 말한다.
- 즉, 관리하고자 하는 업무 영역 내의 특정한 두 개의 엔티티 사이에 존재하는 많은 관계 중 특별히 관리하고자 하는 직접적인 관계를 의미한다.
관계 이해
관계도 집합이다
- 관계는 두 엔티티 사이에 그 목적과 내용이 다른 여러 개의 관계가 동시에 존재할 수 있다.
직접 관계를 관계라고 한다
- 많은 관계 중에서 직접 종속인 것만을 관계로 보고 모델링하는 것이다.
두 엔티티 간에는 하나 이상의 관계가 존재할 수 있다.
- 두 개의 엔티티 사이에는 서로 다른 업무 규칙을 가진 별개의 관계가 존재할 수 있다.
외래키로 정의
- 관계는 외래키(FK)로 구현되어 참조 무결성으로 데이터 정합성 유지의 역할을 하게 된다.
관계의 관점
- 항상 두 엔티티 간에 존재한다.
- 항상 두 개의 관점을 가지고 있다.
- 데이터의 양방향 업무 규칙을 표현
- 관계를 통하여 정보로서의 활용 가치 상승
- 외래키로 구현되어 참조 무결성으로 데이터의 정합성 유지
- 참조 무결성
관계 표현
관계 형태
- 하나 이상(Many)
- 까마귀 발가락으로 표시되며, 하나 이상(Many)을 나타낸다.
- 하나 이상이란 반드시 하나 이상이 되어야 한다는 것이 아니라 하나 이상인 것이 적어도 한 가지는 존재하고 있다는 것을 의미한다.
- 이 말은 1:M의 관계에는 1:1의 관계가 포함되어 있다는 것을 의미한다.
- 단 하나(Only One)
- 수평선으로 표시되며, 단 하나임을 의미한다.
- 실선이 될 수도 있고, 점선으로 표현될 수도 있으며, 선택 사양에 따라 결정된다.
선택 사양
- 일반적인 형태
- 주로 참조하는 엔티티(M쪽)는 참조되는 엔티티(1쪽)가 반드시 존재해야 하는 경우가 많이 나타난다.
- 반대로 1쪽 엔티티는 M쪽 엔티티와 반드시 관계를 맺지 않아도 되는 경우가 가장 일반적인 형태라고 할 수 있다.
- 바람직한 형태
- M쪽 관계의 선택 사양을 실선 관계로 만들려고 노력해야 한다.
- 부모 엔티티에 개체가 존재하지 않는 자식 엔티티의 개체가 많이 발생한다면 정보의 정합성에 많은 문제점이 나타난다.
관계명
- 두 개의 관계 멤버십에 각각 부여
- 각자 상대방 입장에서의 관계명을 기술한다.
- 현업에서 사용하는 간결한 동사형으로 표현
- 두 엔티티 타입 간의 업무적 연관성을 나타내는 이름 부여
- 현재 시제를 사용
- 다른 관계명과의 유일성은 확보되지 못함
- 능동/수동형의 사용은 가급적 배제
- 업무적 의미가 없거나 애매모호한 용어는 배제
- 예) ~(관계가) 있다, ~(관련이) 있다, ~이다, ~한다 등
관계 정의 방법
- 먼저 한쪽 엔티티를 기준으로 상대 엔티티와의 관계를 규명하고 다시 반대 방향으로 관계를 규명한다.
- 관계를 규명할 때 가장 먼저 해야 할 일은 규명하고자 하는 관계 명칭부터 확실히 해야 한다.
관계 구문 이해
- 관계를 규명할 때 사용하는 관계 구문은 다음과 같은 전형적인 형태를 가진다.
- 엔티티1 : 관계를 규명할 두 엔티티 중에서 어느 한쪽이 주어가 되어 상대방과의 관계를 규명하고자 할 때 주어가 되는 엔티티
- 임의의 : '모든'과 같은 뜻이다. 집합 내의 개체 중에서 아무것이나 하나(임의의 개체)를 선택하여 만족하는지 증명하는 것이다.
- 하나는 : 주어 집합에 있는 '임의의'나 '하나'의 개체를 말한다.
- 관계 형태 : 하나가 몇 개의 상대방을 가질 수 있는지를 집중적으로 밝히는 것이다. 여기에서 단 하나인 것을 증명하기 위해서 하나만 가지는 경우를 수업이 내세우는 것보다 하나 이상인 경우를 한 가지만 제시하는 것이 보편적인 방법이다.
- 엔티티2 : 주어가 되는 엔티티가 바라본 상대방 엔티티이다.
- 관계명 : 관계 규명을 통해서 정의된 관계 명칭이다.
- 선택 사양 : 필수(실선), 선택(점선)의 모습을 결정하는 과정이다.
관계 정의 절차
관계에 대해서 각각의 관점에서 생각하고 판단해야 할 사항
- 사원을 주어로 부서를 보는 관계에서 판단해야 할 사항 예제
- 사원 엔티티의 임의의 한 개체(사원 한 사람)가 상대인 부서 엔티티에 단 하나의 개체(부서 하나)에만 소속되는지, 아니면 하나 이상에 소속될 수 있는지 판단한다.
- 지금까지 소속되었던 모든 부서를 찾고자 하는 것인지, 아니면 현재 소속되어 있는 부서만 찾고자 하는지를 판단한다.
- 겸임을 하는 사원(주로 관리자)에 대한 처리 방안을 판단한다.
- 현재 소속을 가지지 않는 사원이 단 한 명이라도 있는지를 판단한다.
- 사원 엔티티가 우리 회사에 적을 두고 있는 사람만이 아니라 관계사나 협력사에서 파견되어 근무하는 사람들까지 포함된 집합인지를 판단한다.
- 부서를 주어로 사원을 보는 관계에서 판단해야 할 사항 예제
- 하나 이상의 사원을 가지는 부서가 있을 수 있는지를 판단한다.
- 부서가 사원을 반드시 가져야 하는지, 그렇게 하지 않을 수도 있는지에 대해 판단한다.
- 최종적인 관계는 임의의 부서는 하나 이상의 사원을 현 주소속 부서로서 배치받을 수도 있다로 결정한다.
관계 형태
- 관계의 형태는 1:1, M:1, M:M의 세 가지로 나눌 수 있다.
- 각각의 형태들은 고유한 특징을 가지고 있으며, 각자 가장 흔하게 발생하는 기본 형태를 가지고 있다.
1:1 관계
- 어느 쪽 당사자의 입장에서 상대를 보더라도 반드시 단 하나씩과 관계를 가지는 것을 말한다.
- 특징
- 현실에서 매우 드물게 나타나는 형태
- 업무의 흐름에 따라 데이터가 설계된 형태에서 많이 나타남
- 엔티티 수직 분할시에 많이 나타남
- 필수-선택 형태
- 한쪽은 실선이고 다른 쪽은 점선이 되는 모습이다. 실선 쪽 엔티티의 개체는 대응되는 점선 쪽 엔티티의 개체가 반드시 존재해야 하지만 반대로는 없을 수도 있다.
- 예시로, 컴퓨터가 조립되기 위해서는 반드시 단 하나씩의 메인보드를 가져야 한다. 그러나 메인보드는 아직 조립에 사용되지 않은 것이 존재할 수 있으므로 필수-선택 형태를 가진다.
- 필수-필수 형태
- 양쪽 모두 실선인 모습이다.
- 이 관계를 수학적으로 풀어보면 두 엔티티는 같은 엔티티라는 것이 증명된다.
- 대부분의 경우가 데이터 양을 감안하여 수직 분할을 한 경우가 대부분이다.
- 선택-선택 형태
- 바커 표기법에는 양쪽 모두가 점선인 모습으로, IE표기법에서는 양쪽 끝에 모두 타원이 나타나는 모습의 관계로서 자주 발생되지 않는 형태이다.
M:1 관계
- 가장 흔하게 나타나는 매우 일반적인 형태이다.
- 특징
- 가장 흔하게 나타나는 관계의 형태이다.
- 내가 참조할(부모쪽) 정보는 나에 대해서 반드시 하나만 존재해야만 참조할 때 내 집합에 변화가 생기지 않으므로 내가 참조하는 엔티티는 반드시 1쪽이 될 수밖에 없다.
- One To Many Relationship(Both Side Mandatory)
- 현실 세계에서 그리 많은 경우는 아니지만 가끔 발생하는 형태이다.
- 주문과 주문 아이템의 관계에서 하나의 주문이 여러 개의 아이템을 포함하고 있는 경우, 주문 아이템이 없는 주문은 업무적으로 의미가 없고, 마찬가지로 주문이 없는 주문 아이템도 의미가 없다.
- One To Many Relationship(One Optional)
- 현실 세계에서 가장 흔한 형태이다.
- 부서와 사원 간의 관계에서 모든 사원은 반드시 하나의 부서에 소속되어야 한다. 하지만 사원이 하나도 없는 부서도 존재할 수 있다.
- One To Many Relationship(Many Optional)
- 현실적으로 드문 형태
- One To Many Relationship(Both Side Optional)
- 현실 세계에서 흔한 형태 중의 하나
- 관계의 선택성이 증가할수록 모델의 모호성도 증가하므로 될 수 있으면 선택성을 해소해야 한다.
M:M 관계
- 특징
- M:M 관계는 관계를 가진 양쪽 당사자 모두에게 1:M 관계가 존재할 때 나타나는 모습이다.
- M:M 관계의 선택 사양은 양쪽 모두가 선택적인 것이 기본형이다.
- M:M 관계는 의외로 아주 빈번하게 발생되는 관계이다. 그러나 데이터 모델링이 완료된 후에 M:M은 존재하지 않는다.
- M:M 관계는 관계가 해소되면서 새로운 엔티티를 생성시킨다.
다중 관계 처리
- 특징
- 다중 관계란 어떤 두 엔티티의 사이에 하나 이상의 관계를 가지고 있는 상태를 말한다.
- 서로 다른 엔티티 사이에도 경우에 따라 얼마든지 하나 이상의 다양한 관계가 존재할 수 있다.
- 병렬식 관계
- 병렬식이란 말 그대로 두 엔티티 사이에 존재하는 관계들을 별도의 관계로 간주함으로써 여러 개의 관계 선분이 나란히 병렬로 관계가 맺어지게 되는 경우이다.
- 병렬식 관계 특징
- 테이블이 될 때 여러 개의 컬럼으로 나열된다.
- 하나의 로우에서 관리되므로 새로운 테이블을 추가할 필요가 없다.
- 인덱스 수가 증가되고 SQL이 복잡해진다.
- 새로운 관계의 추가, 관계 형태의 변경 등에 매우 취약한 형태이다.
- 관계 내용별로 상세 정보를 관리할 수 없다.
- 직렬식 관계
- 두 엔티티 사이에 존재하는 몇 개의 관계를 모아 상위 개념으로 통합함으로써 하나의 관계로 관리하는 방법이다.
- 직렬식 관계 특징
- 관계들을 관리하는 새로운 엔티티가 추가되어야 한다.
- 관계들이 로우 형태로 나타난다.
- 인덱스 수가 감소하고 SQL이 단순해진다.
- 새로운 관계의 추가, 관계 형태의 변경 등에 매우 유연한 형태이다.
- 관계 내용별로 상세 정보를 관리할 수 있다.
특수한 형태 관계
- 순환 관계(Recursive Relationship)
- 하나의 엔티티가 다른 엔티티가 아닌 자기 자신과 관계를 맺는 관계를 순환 관계라고 한다.
- 순환 관계 특징
- 하나의 순환 엔티티는 각 엔티티의 모든 속성을 포함해야 한다.
- 각 계층에 있는 속성은 동일하게 하는 것이 가장 좋다.
- 순환 모델은 필수(실선) 관계로 취급될 수 없고(무한 loop 발생), 반드시 선택 사양 관계이다.
- 순환 모델의 특징은 조직의 변경(추가/삭제)에 쉽게 대응할 수 있다는 것이다.
- BOM(Bill of Materials) 관계
- 네트워크 구조라 한다.
- M:M 순환 구조 모델로 알려져 있다.
- 상세 모델링 과정에서 새로운 관계 엔티티를 추가하여 두 개의 일대다(1:M) 관계로 구성된 모델로 구체화된다.
- Arc(Mutually Exclusive) 관계
- 어떤 엔티티가 두 개 이상의 다른 엔티티의 합집합과 관계를 가지는 것을 배타적 관계 혹은 아크 관계라 한다.
- 동일한 의미의 관계가 서로 다른 하나 이상의 엔티티와 배타적으로 관계를 갖고 있을 때 이를 하나로 통합함으로써 발생하게 된다.
- Arc 관계 특징
- 아크 내에 있는 관계는 보통 동일하다.
- 아크 내에 있는 관계는 항상 필수이거나 선택 사양이어야 한다.
- 아크는 반드시 하나의 엔티티에만 속해야 한다(하나의 아크가 여러 엔티티를 가질 수 없다).
- 어떤 엔티티는 다수의 아크를 가질 수 있다. 그러나 지정된 관계는 단 하나의 아크에만 사용되어야 한다.
'DAP' 카테고리의 다른 글
[DAP 전문가 가이드] 4.3.1 논리 데이터 모델링 이해 (0) | 2025.04.29 |
---|---|
[DAP 전문가 가이드] 4.2.6 개념 데이터 모델 작성 (0) | 2025.04.29 |
[DAP 전문가 가이드] 4.2.4 핵심 엔티티 정의(2) (2) | 2025.04.28 |
[DAP 전문가 가이드] 4.2.4 핵심 엔티티 정의(1) (0) | 2025.04.28 |
[DAP 전문가 가이드] 4.2.3 후보 엔티티 선정 (0) | 2025.04.28 |