Entity-Relationship Model2
Entity-Relationship Model2
I. 실무 데이터 모델링의 기본 구조 및 관점
1. 데이터 모델링의 정의 및 주체
- 데이터 모델링이란 정보화 시스템을 구축하기 위해 어떤 데이터가 존재하는지 또는 업무가 필요로 하는 정보가 무엇인지를 분석하는 방법이다.
- 데이터베이스 업무 시스템 구축은 분석, 설계, 개발, 전환/이행, 테스트, 검증 단계를 거치며, 데이터 모델링은 프로세스 모델링과 함께 이 구축의 두 기둥을 세워 나간다.
- 데이터 모델링의 주체는 SE, BA, DBA, MODELER, 현업(업무전문가) 등 프로젝트에 참여한 모든 사람이며, 참여하거나 모델 내용을 이해해야 한다.
2. 데이터 모델링의 3가지 관점
데이터 모델링은 다음 세 가지 관점에서 이루어진다:
- 데이터 관점 (DATA, WHAT): 업무가 어떤 데이터와 관련이 있는지, 또는 데이터 간의 관계는 무엇인지를 모델링한다.
- 프로세스 관점 (PROCESS, HOW): 업무에서 실제로 하는 일은 무엇인지, 또는 어떻게 해야 하는지에 대해 모델링한다.
- 상관 관점 (INTERACTION): 업무가 처리하는 일의 방법에 따라 데이터가 어떻게 영향을 받고 있는지를 모델링하는 방법이다.
II. 엔티티(Entity)의 핵심 개념과 특징
1. 기본 데이터 모델링 요소
업무가 관여하는 세 가지 기본 개념은 다음과 같다:
- 어떤 것 (Things): 엔티티타입 (개념 타입/클래스) / 엔티티 (어커런스/인스턴스).
- 어떤 것 간의 관계 (Relationships): 관계 (개념 타입/클래스) / 페어링 (어커런스/인스턴스).
- 어떤 것의 성격 (Attributes): 속성 (개념 타입/클래스) / 속성값 (어커런스/인스턴스).
2. 엔티티타입의 주요 특징
엔티티타입으로 정의되기 위해서는 다음 6가지 특징을 만족해야 합니다:
- 업무 관련성: 반드시 업무에서 필요하고 관리하고자 하는 정보여야 한다.
- 식별 가능성: 유일한 식별자에 의해 식별 가능해야 합니다.
- 영속적인 집합: 영속적으로 존재하며, 엔티티의 개수가 두 개 이상인 집합이어야 한다.
- 프로세스 이용: 업무 프로세스에 의해 이용되어야 합니다. 이용되지 않는 엔티티타입은 해당 업무에 불필요함을 의미한다.
- 속성 보유: 반드시 속성이 있어야 합니다. 속성이 존재하지 않는 오브젝트는 엔티티타입이 될 수 없다.
- 관계 보유: 다른 엔티티타입과 최소 한 개 이상의 관계가 있어야 한다 (다만, 코드나 통계성 엔티티타입과의 관계는 복잡도를 줄이기 위해 생략하여 표현할 수 있다).
III. 관계(Relationship)의 정의와 분류
1. 관계의 정의
- 관계란 두 개의 엔티티타입 사이의 논리적인 관계를 의미하며, 엔티티와 엔티티가 존재의 형태나 행위로서 서로에게 영향을 주는 형태를 말한다.
- 관계는 존재에 의한 관계와 행위에 의한 관계로 분류됩니다.
- 관계는 페어링(Pairing)의 집합이다 (예: 오은재가 영업부에 소속한다).
2. 관계의 속성
- 멤버쉽 (Membership): 엔티티타입이 참여하는 관계에 대한 자신으로부터의 관점이다 (예: 부서는 사원을 ‘포함한다’, 사원은 부서에 ‘소속된다’).
- 카디넬러티 (Cardinality): 관계의 유형을 정의하며, 1:1 (ONE TO ONE), 1:M (ONE TO MANY), M:M (MANY TO MANY)이 있다.
- 참여도: Optional (선택적) 관계와 Mandatory (필수적) 관계가 있다.
IV. 상관 모델링 (CRUD Matrix)
- 상관 모델링은 업무에 존재하는 ‘무엇’에 대해 ‘무슨 일’이 행해지고 있는지, 또는 ‘무슨 일’에 의해 ‘무엇’이 영향을 받는지를 분석하는 방법이다.
- CRUD Matrix를 사용하여 엔티티타입(데이터)과 ELEMENTARY PROCESS(업무 수행) 간의 관계를 분석한다.
- CRUD Matrix 분석을 통해 CRUD가 없는 엔티티타입이나 CREATE가 없는 엔티티타입 등을 발견할 수 있다.
- 올바른 엔티티라면 반드시 그 엔티티를 생성(C)하는 프로세스와 조회(R)하는 프로세스가 존재해야 한다.
V. 식별자(Identifier) 정의 및 특징
1. 주식별자 (Primary Key)의 특징 및 영향력
- 주식별자는 모든 엔티티들을 유일하게 구별할 수 있어야 하며, 지정되면 그 값은 변하지 않아야 하고, 데이터 값이 반드시 존재해야 한다.
- 핵심 엔티티타입의 주식별자는 데이터 모델 전체 식별자 구조에 큰 영향을 미친다.
2. 주식별자 선정 기준
- 업무에서 자주 이용되는 속성을 지정합니다.
- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.
- 속성 값이 자주 변하는 속성은 주식별자로서 적당하지 않습니다 (예: 전자메일ID는 부적합, 학번은 적합).
- 복합 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록한다.
3. 식별 관계와 비식별 관계
- 식별 관계 (Identifying Relationship): 부모 엔티티의 PK가 자식 엔티티의 식별자 일부로 형성되어 자식 엔티티의 식별이 부모에게 종속된다.
- 비식별 관계 (Non-Identifying Relationship): 부모 엔티티의 PK가 자식 엔티티의 기본 키의 일부가 아닙니다. 외부 식별자가 자식 엔티티에서 일반 속성 역할을 하게 된다.
4. 비식별 관계 생성 이유
비식별 관계를 생성하는 주요 이유는 다음과 같다:
- 부모 없는 자식이 생성될 수 있는 경우.
- 부모가 먼저 소멸되어 자식만 남겨질 수 있는 경우.
- 여러 개의 엔티티타입이 하나의 엔티티타입으로 통합되어 표현될 경우.
- 자식 엔티티타입이 별도의 주식별자를 가지는 것이 더 유리하다고 판단되는 경우.
- 주식별자 상속을 차단하기 위해서.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.