데이터 모델링/01. 데이터 모델링 이론
ER 모델 구성 요소 (2)
developer-soyun
2024. 11. 6. 14:46
ER 모델의 구성요소로는 엔티티(Entity), 관계(Relationship), 속성 (Attribute) 이 있으며, 속성과 관계 중 하나 이상의 조합으로 구성된 식별자(Identifier)를 포함한다
엔티티(Entity)
- 실제로 존재하는 실체 (상품, 고객, 직원 etc)
- 개념적인 것(조직, 서비스, 직업 etc)
- 업무를 구현하는 데 필요하고 관리해야 하는 주체, 대상, 행위 등의 모든 집합적인 것(Thing)으로 정의할 수 있다
- 적어도 둘 이상의 인스턴스가 존재할 수 있어야한다
- 최소한 둘 이상의 속성이 있어야 한다
- 각 인스턴스를 식별할 수 있는 속성이나 관계가 하나 이상 정의되어야 한다
- 엔티티 슈퍼타입 엔티티나 서브타입 엔티티로 확장할 수 있다
- 슈퍼타입
- 하나 이상의 서브타입 엔티티와 관계된 일반화된 엔티티
- 서브타입에 공통으로 존재하는 속성을 관리
- 서브타입
- 각각의 서브타입에만 존재하는 고유한 속성 관리
- 슈퍼타입이 모든 특성을 상속받는다
- 슈퍼타입
일반화 (Generalization)
- 엔티티의 일반화는 엔티티 각각이 가지고 있는 고유한 특징을 일반화하여 공통의 속성으로 재정의 한 것
- 엔티티를 일반화하게 되면 여러 개의 엔티티를 하나의 공통된 엔티티로 만들 수 있다
- 상향식 접근 방식이다
일반화의 장단점
- 장점
- 업무 관계를 단순하게 정의할 수 있다
- 업무 변화에 유연하게 적응할 수 있다
- 단점
- 고유 속성의 의미가 불분명해질 수 있다
- 참조 무결성 및 도메인 무결성을 제대로 반영하지 못할 수 있다
- 해결방안: 데이터 정합성 문제가 발생하지 않도록 응용프로그램에서 업무 규칙을 추가로 설계하고 반영해야 한다
특수화(Specialization)
- 하나의 상위 수준 엔티티를 두 개 이상의 하위 수준 엔티티로 분할하는 하향식 접근 방식
- 슈퍼타입을 정의 → 서브타입과 속성을 정의 → 관계 정의
집단화(Aggregation)
- 기본 ER 모델의 표기법은 다른 관계를 포함하는 관계를 표현할 수 없다
- 하나의 엔티티로 취급되는 두 개 엔티티 사이에서 나타난다
- 해당 엔티티와의 관계가 상위 수준 엔티티로 대체 된다
다양한 엔티티 분류
엔티티 관계 | 앤티티 형태 | 앤티티 생성 관점 | 앤티티 유무형 |
강한(Strong) | 독립 (Kernal, Master) | 핵심 (Key) | 실체 (Tangible) |
약한 (Weak) | 업무중심 (Transaction) | 중요 (Main) | 비실체 (Intangible) - 개념 (Conceptual) - 사건 (Event) |
종속 (Dependent) | 행위 (Action) | ||
교차 (Associative) |
독립 (Kernal, master) 엔티티
- 원래부터 현실에 존재하는 엔티티
- 고객, 상품, 창고, 조직 등
업무중심(Transaction) 엔티티
- 업무를 처리하면서 발생하는 데이터에 해당
- 주제영역에서 가장 랙심이 되는 엔티티
- 주문, 결제, 배송, 청구 등
종속(Dependent) 엔티티
- 주로 업무중심 엔티티에서 1차 정규화로 인해 분리된 엔티티에 해당
- 주문상품, 주문배송 엔티티는 주문 엔티티가 있어야 존재 가능, 주문 엔티티의 종속 엔티티
교차(Associative, Relative) 엔티티
- 두 개 이상의 엔티티 간에 발생하는 트랜잭션에 의해 생성된다
- *트랙잭션: 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위
핵심(Key) 엔티티
- 부모 엔티티를 갖지 않는 독립적이며, 핵심적인 엔티티
- 고객, 상품, 조직
중요(Main) 엔티티
- 핵심 엔티티 간의 거래 관계에 의해 생성되는 엔티티이며, 업무의 핵심이 되는 엔티티
- 계약은 고객과 상품의 거래 관계에 의해 생성되며, 고객과 상품을 부모로 갖는다
행위(Action) 엔티티
- 실제 업무 행위에 의해서 지속해서 발생하는 거래 행위에 대한 엔티티
- 청구내역, 카드승인
관계 (Relationship)
- 관계수 (Cardinality)
- 어떤 엔티티의 인스턴스 하나가 다른 엔티티 몇 개(1, n) 인스턴스와 대응될 수 있는지 표한 것
- 일대일 (1:1), 일대다(1:M), 다대다 (M:N)
- 선택성(Optionality)
- 해당 엔티티 인스턴스에 대해 상대 엔티티에 인스턴스가 반드시 존재해야 하는지 (Mandatory), 존재하지 않아도 되는지 (Optional) 표시한다
- 양쪽 필수, 한쪽 필수, 양쪽 선택
- 식별성 (Identifier Inheritance)
- 엔티티의 식별자를 다른 엔티티에서 상속받을 때 식별자로 상속받을 지 (식별관계), 일반 속성으로 상속받을 지 (비식별관계) 표시한다
- 식별관계 : 참조되는 상위 엔티티 식별자가 참조하는 하위 엔티티 식별자로 상속되는 경우
- 비식별관계 : 식별자가 아닌 일반 속성으로 상속되는 관계
- 관계명
- 관계의 의미나 이름을 표시한다
관계 차원
- 관계에 참여하는 엔티티의 수
- 단항 관계: 하나의 엔티티 내에 존재하는 관계
- 이항 관계: 두 개 엔티티 간의 관계에 해당하며, 가장 일반적인 형태의 관계
속성 (Attribute)
- 속성은 데이터를 표현하는 가장 작은 단위
- 속성을 통해 엔티티가 가지고 있는 특성이나 상태를 알 수 있다
- 단순 속성 : 더 분해할 수 없는 원자 값
- 복합 속성 : 단순 속성들의 집합
- 저장 속성 : 원래 존재하는 속성
- 파생 속성: 저장 속성이나 다른 파생 속성으로부터 파생된 속성
- 단일 값 속성 : 하나의 값만 가지는 속성
- 다중 값 속성 : 하나의 속성이 여러 개의 값을 가지는 속성
식별자 (Identifier)
- 엔티티에서 인스턴스를 개별적으로 식별할 수 있는 속성(들)
- 식별자의 특징
- 유일성 (Uniqueness)
- 최소성 (Minimum)
- 불변성 (Stability)
- 존재성 (Mandatory)