도서(Book)/핵심 데이터 모델링

1. 데이터 모델링 이론 - b. ER 모델 구성 요소

먹보 개발자 2024. 11. 6. 11:54

ER 모델 구성 요소

ER모델의 구성요소로는 엔티티, 관계, 속성이 있고 속성과 관계 중 하나 이상의 조합으로 구성된 식별자를 포함한다.

 

※ 엔티티 (Entity)

엔티티는 실제로 존재하거나 개념적인것이다. 즉 업무를 구현하는데 필요하고 관리해야하는 주체, 대상, 행위등의 모든 집합적인 것(Thing)으로 정의할 수 있다.

 

엔티티는 적어도 둘 이상의 인스턴스가 존재할 수 있어야 하고,? 최소한 둘 이상의 속성이 있어야하며, 반드시 각 인스턴스를 식별 할 수 있는 속성이나 관계가 하나이상 정의되어야한다.

 

*우리가 일반적으로 얘기하는 엔티티는 정확히 엔티티 타입이다. 엔티티는 엔티티 타입의 실체(인스턴스)에 해당한다.

엔티티는 슈퍼타입 엔티티나 서브타입 엔티티로 확장할 수 있다.

슈퍼타입 엔티티는 하나 이상의 서브타입 엔티티와 관계된 일반화된 엔티티이며 서브타입에 공통으로 존재하는 속성을 관리한다.

서브타입 엔티티는 각각의 서브타입에만 존재하는 고유한 속성을 관리한다. 서브타입은 슈퍼타입의 식별자, 속성, 관계등 모든 특성을 상속받는다.

 

일반화

엔티티의 일반화는 엔티티 각각이 가지고있는 고유한 특징을 인반화하여 공통의 속성으로 재정의한 것이다.

일반화는 인스턴스 존재 유형에 따라 완전/불완전, 배타적/포괄적 인반화로 나눌 수 있다.

→ 여러 구체적인 엔터티를 하나의 상위 엔터티로 묶는 것

 

특수화

특수화는 일반화의 반대개념으로 , 하나의 상위 수준 엔티티를 두 개 이상의 하위 수준 엔티티로 분할하는 하향식 접근 방식이다. 일반적으로 슈퍼타입을 정의하고, 서브타입과 속성을 정의한 후 관계를 정의한다.

→ 하나의 상위 엔터티를 더 구체적인 하위 엔터티로 나누는 것

 

집단화

하나의 엔티티로 취급되는 두 개 엔티티 사이에서 나타나며, 해당 엔티티와의 관계가 상위 수준 엔티티로 대체된다.

→ 여러 독립적인 엔터티를 하나의 전체 엔터티로 묶는 것

 

엔티티는 엔티티의 관계, 엔티티의 형태, 엔티티 생성 관점, 엔티티의 유무 형 형태등 바라보는 관점에 따라 다양하게 분류 할 수 있다.

 

이 책에서는 엔티티 생성 관점 따른 분류를 주로 사용한다.

핵심 엔티티: 자신의 부모 엔티티를 갖지 않는 독립적이며, 핵심적인 엔티티다.

중요 엔티티: 핵심 엔티티 간의 거래 관계에 의해 생성되는 엔티티 이지만, 업무의 핵심이 되는 엔티티다.

행위 엔티티: 실제 업무 행위에 의해서 지속해서 발생하는 행위에 대한 엔티티다.

 

 

  관계 (RelationShip)

엔티티와 엔티티 간에 존재하는 업무 규칙을 정의하고, 엔티티 간에 어떤 관계가 이루어질 수 있는지 표현한다.

관계는 관계수, 선택성, 식별성, 관계명 등으로 구성된다.

 

관계수 (Cardinality): 어떤 엔티티의 인스턴스 하나가 다른 엔티티 몇 개(1, m) 인스턴트와 대응될 수 있는지를 표시한 것으로, 상대 엔티티 쪽에 까마귀 발(Crow's Foot)로 표시한다. 최대 인스턴스 수와 관련이 있다.

 

선택성 (Optionality): 해당 엔티티 인스턴스에 대해 상대 엔티티에 인스턴스가 반드시 존재해야 하는지(Mandatory), 존재하지 않아도 되는지(Optional) 표시한다. 최소 인스턴스 수와 관련이 있다.

 

식별자 상속(Identifier Inheritance): 엔티티 간의 관계를 정의하면서 엔티티 식별자를 다른 엔티티에서 상속받을 때 식별자로 상속받을지(식별관계), 일반속성으로 상속받을지(비식별관계) 표시한다.

 

관계명 (Relationship Name): 관계의 의미나 이름을 표시한다.

관계표기법

 

- 관계수는 엔티티와 엔티티 간의 대응되는 최대인스턴스 수를 말한다.일대일, 일대다, 다대다 3가지 유형이 있다.

 

일대일 (1:1) 관계

엔티티 개체 하나가 다른 엔티티 개체 하나와 관계를 가짐 자주 쓰이진 않음

ex) 직원은 한 번의 인턴과정을 거쳐 채용될 수 있으며, 하나의 인턴과정은 한 직원과 관련 있음

 

일대다 (1:M) 관계

엔티티 개체 하나가 다른 엔티티 개체 여러 개와 관련 있음.

ex) 한 부서에 직원 여러 명이 소속되어 있으며, 직원은 한 부서에만소속될 수 있음

 

일대다 (1:M) 관계

어떤 엔티티 개체 하나가 다른 엔티티 개체 여러 개와 관련이 있고, 다른 엔티티 개체 하나는 어떤 엔티티 개체 여러 개와 관계함

ex) 학생은 여러 개 수강과목을 신청할 수 있고, 수강과목은 여러 명의 학생에 의해 선택됨

 

 

- 관계 선택성 (Optionality):

엔티티 인스턴스에 대해 상대 엔티티 인스턴스 존재 유무를 나타대며, 양쪽 필수, 한쪽 필수, 양쪽 선택으로 나누어진다.

 

필수(Mandatory) - 필수(Mandatory) 관계: 어떤 엔티티의 인스턴스에 대해 다른 엔티티 인스턴스가 반드시 존재해야 하고, 다른 엔티티의 인스턴스에 대해 어떤 엔티티의 인스턴스도 반드시 존재해야함.

ex) 주문상품이 없는 주문은 있을 수 없고, 주문상품은 주문이 반드시 있어야 함

 

필수(Mandatory)-선택(Optional) 관계: 어떤 엔티티의 인스턴스에 대해 다른 엔티티 인스턴스가 존재하지 않아도 되고, 다른 엔티티 인스턴스에 대해 어떤 엔티티 인스턴스는 반드시 존재해야 함

ex) 고객이 반드시 주문을 해야하는 것은 아니지만 모든 주문은 반드시 주문한 고객이 있어야 함

 

선택(Optional)-선택(Optional) 관계: 

어떤 엔티티 인스턴스에 대해 다른 엔티티 인스턴스가 존재하지 않아도 되고, 다른 엔티티 인스턴스에 대해 어떤 엔티티 인스턴스도 존재하지 않아도 됨

사원은 소개사원으로 등록된 계좌가 없을 수 있고, 소개사원이 없이 계좌를 개설할 수 있음

 

 

- 식별자 상속은 식별관계와 비 식별관계로 구분할 수 있다.

식별관계

참조되는 상위 엔티티 식별자가 참조하는 하위 엔티티 식별자로 상속되는 경우이다.

• 고객과 고객주소 엔티티와 같이 동일하거나 유사한 데이터 집합 간의 종속 관계일 때 식별자를 상속하여 식별 관계로 표현

 

비식별관계

식별자가 아닌 일반 속성으로 상속되는 관계임
• 핵심 엔티티(고객)와 중요 엔티티(주문)처럼 다른 주제영역 엔티티 간의 참조 관계에 해당

종속 관계에 해당하더라도 고객번호+연락처일련번호 대신 인조 식별자인 고객주소번호 속성을 주 식별자로 지정하면 형식 상으로는 비식별 관계에 해당

 

 

- 속성 (Attribute)

속성은 데이터를 표현하는 가장 작은 단위이며, 속성이 가지는 의미를 통해 엔티티 특성이나 상태를 알 수 있다.

하나의 엔티티는 두개 이상의 속성을 가지며, 속성명, 식별자 여부, 옵셔널리티, 도메인 등으로 구성된다.

 

속성은 속성 값의 구성이나 성격에 따라 다양하게 분류할 수 있다.

단순 속성과 복합 속성

 

단순속성은 고객명, 이메일 등 속성을 더 분해 할 수 없는 원자 값을 갖는다.

복합속성은 단순 속성들의 조합으로 구성된다.

 

저장 속성과 파생 속성

저장 속성은 원래 존재하는 속성이다. (상품 단가, 주문수량 등)

파생 속성은 저장 속성이나 다른 파생 속성으로부터 파생된 속성이 파생 속성이다. (주문금액 = 상품단가 * 주문수량)

 

단일 값 속성과 다중 값 속성

단일 값 속성은 성별, 생일처럼 사원에 대해 하나의 값만 가지는 속성을 의미한다.

다중 값 속성은 하나의 속성이 여러개의 값을 가지는 속성을 말한다.

 

- 식별자 (Identifier)

엔티티에서 인스턴스를 개별적으로 식별할 수 있는 속성이나 속성들이다. 부모 엔티티와의 관계를 통해 상속된 식별자와 자체 식별자를 조합하여 정의한다.


식별자 특성
식별자를 최소 속성으로 구성하지 않은 경우 식별자 속성 값이 변하는 경우

  • 유일성(Uniqueness) : 사원 엔티티의 사원번호처럼 엔티티의 모든 인스턴스를 유일하게 식별할 수 있어야 함
  • 최소성(Minimum) : 식별자를 구성하는 속성은 유일성을 만족하는 최소 속성들로 구성해야 함
  • 불변성(Stability) : 일단 엔티티의 식별자를 지정하면 그 식별자의 값은 변하지 않아야 함
  • 존재성(Mandatory) : 모든 직원이 사원번호를 가지듯이 식별자는 반드시 데이터 값이 존재(Not Null)해야 함

실제 프로젝트에서 식별자를 잘못 구성한 예

 

식별자는 실 세계(업무)에서 자연적으로 가지는 특성인지 시스템에서 필요에 의해 추가한 속성인지에 따라 본질 식별자와 인조 식별자로 나눌 수 있다.

 

대표성 여부에 따라 주 식별자와 주 식별자를 대체하는 대체(보조) 식별자로 분류할 수도 있다.

 

 

어떻게 분류하고 어떤 용어를 사용하느냐에따라 의견이 다를 수 있다. 하지만 중요한 것은 집합을 명확히 정의하고, 식별자를 식별하는 과정이다.