- 사전적 개념 : 상호 연관성이 있는 상태
- DB 관점 개념 : 두 엔티티 사이의 논리적인 관계(업무적인 연관성)
◆ 식별 / 비식별 관계
- 식별 관계 : 부모테이블의 기본키 또는 유니크 키를 자식 테이블이 기본키로 사용하는 관계(실선)
- 비식별 관계 : 부모테이블의 기본키 또는 유니크 키를 자식 테이블이 외래키로 사용하는 관계(점선)
부모 테이블 : 의존하지 않는 테이블
자식 테이블 : 의존하는 테이블(스스로 존재할 수 없는 테이블)
◆ 관계선택사양(Optionality)
- Mandatory(필수관계) : 반드시 두 엔티티의 모든 인스턴스 간에 관계가 존재
- Optional(선택관계) : 값을 가질 수도 있고 가지지 않을 수도 있음.
- 두 개의 엔티티 관계에서 대응되는 참여자수를 표현하는 것
<관계의 형태>
1:1 관계 (EX. 반-담임 등)
1:N 관계 (EX. 저자-댓글, 부서 - 사원 등)
N:M 관계 (EX. 저자-글, 주문 - 제품 등)
◆ 1:1 관계 (One to One)
- 각각의 엔티티는 관계를 맺는 다른 엔티티에 대해 하나의 관계만을 가지고 있다.
◆ 1:M 관계 (One to Many)
- 어느 한 쪽의 식별자를 다른 쪽의 관계속성(FK)으로 두는 관계
- 각각의 엔티티는 관계를 맺는 다른 엔티티에 대해 하나, 하나 이상의 관계를 가지고 있다.
(반대 방향은 하나만의 관계를 가짐)
◆ M:N 관계(Many To maNy)
- 아직 미완성인 분석 단계의 관계를 의미한다.
(why? 컬럼을 추가할 수도 없고, 조인을 할 수도 없는 애매한 상태이기 때문에 )
- 초기 개념 모델링에서는 발생 가능하나, 논리 모델에서는 발생하면 안되는 관계이다.
< 해결 방법 3가지>
1. 두개의 테이블이 결합했을 때 의미있는 정보에 대해 Mapping 테이블(관계 Entity)을 만들어 해소
2. 기존 엔티티의 주식별자에 속성 추가로 관계 해소
3. 병렬관계를 이용한 관계 해소(횟수에 제한 有)
◆ 정상 관계
- 엔티티 간 독립적으로 분리되어 있으면서 상호 간에 한가지 관계만 존재하는 형태
◆ 순환 관계(Recursive Relationship) / 재귀적 관계(Self Relationship)
- 하나의 엔티티 내에서 엔티티와 엔티티가 관계를 맺고 있는 형태(비식별관계)
- 부서, 부품, 메뉴등 계층 구조 형태를 표현할 대 유용
예를 들면 사원들에게는 직급이 있으며 이에 따른 직속상사가 있다고 가정하자.
사원 테이블을 상급자(관리자)와 하급자(사원)로 만들어 각 관계를 표현해보자.
하급자 사원의 대응되는 사원은 1명, 상급자 사원에 대응되는 사원은 1명이 이상이 될 수 있다 (1:M).
또한 대응되는 사원이 있을 수도 있고, 없을 수도 있다 (Optional).
◆ 병렬 관계(다중관계 처리)
- 엔티티 간 독립적으로 분리되어 있으면서 두개 이상의 관계가 상호 간에 존재하는 형태
- 객체 지향 개념을 직접적이고 자연스럽게 사용하도록 한 것(논리적인 관계 표현)
<특성>
- 여러 엔티티에 중복 속성이 존재하면 슈퍼타입을 도출해 중복 속성이 없는 모델로 만든다.
- 관계 속성을 포함한 슈퍼타입의 모든 속성은 서브타입에 속한다.(상속개념)
- 서브타입의 고유 속성이나 관계도 슈퍼타입에 속한다.(슈퍼타입+서브타입 = 완전한 인스턴스)
- 서브타입 엔티티간의 관계는 일반적으로 상호배타적이지만 간혹 포함적일 수 있다.
- 서브타입 인스턴스는 반드시 그에 해당하는 슈퍼타입 인스턴스가 존재해야 하지만
슈퍼타입 인스턴스에 해당하는 서브타입 인스턴스는 존재하지 않을 수 있다.
- 서브타입은 슈퍼타입의 하위개념이(부모자식관계) 아니며 부분집합이다.
- 배타 관계를 발생시키는 엔티티는 통합(일반화)해 슈퍼타입을 도출해야 한다.
- 직관적이고 이해하기 쉬우며 이후 물리 모델링 단계에서 성능 효율을 고려해 엔티티 구조 구현방법이 결정된다.
◆ 슈퍼타입 - 서브타입(IS-A 관계)
- 공통 속성을 가지는 슈퍼타입과 공통 부분을 제외하고,
두 개 이상의 엔티티 간의 속성에 차이가 있을 때 별도의 서브타입으로 존재
- 서브타입의 식별자가 같아야 한다(명칭은 바꿔도 되나 도메인이 같아야하니까).
<일반화, 상향식>
Super Entity : 고유한 속성을 가지고 있다.
<상세화, 하향식>
Sub Entity : 고유한 속성을 가지면서 추가적인 특성을 가질 수 있다(상속개념).
[DB] 데이터 모델링 - ERD 사용하기 (0) | 2021.05.25 |
---|---|
[DB] 데이터 모델링 - ERD 실습 문제 (1) | 2021.05.25 |
[DB] 데이터 모델링 - 엔티티(Entity) 란? (0) | 2021.05.25 |
[DB] 데이터 모델링의 과정 (0) | 2021.05.25 |
[DB] 데이터 모델링이란? (0) | 2021.05.25 |