* 엔터티의 분류
- 유형 vs 무형
1. 유형 엔터티 : 물리적인 형태 존재, 안정성, 지속적 (상품, 회원)
2. 개념 엔터티 : 물리적인 형태 없음, 개념적 (부서, 학과)
3. 사건 엔터티 : 행위를 함으로써 발생, 빈번함, 통계 자료로 이용가능(주문, 이벤트 응모)
* 발생 시점
1. 기본 엔터티 : 독립적으로 생성됨, 자식 엔터티를 가질 수 있음(상품, 회원)
2. 중심 엔터티 : 기본 엔터티로부터 파생, 행위 엔터티 생성(주문)
3. 행위 엔터티 : 2개 이사의 엔터티로부터 파생(주문내역, 이벤트 응모 이력)
* 속성의 분류
1. 기본속성 : 업무 프로세스 분석을 통해 바로 정의가 가능한 속성
2. 설계속성 : 업무에 존재하지는 않지만 설계하다 보니 필요하다고 판단되어 도출해낸 속성
3. 파생속성 : 다른 속성값을 계산하거나 특정한 규칙으로 변형하여 생성한 속성
* 식별자 분류
1. 대표성 여부
- 주식별자 : 유일성, 최소성, 불변성, 존재성을 가진 대표 식별자이며, 다른 엔터티의 참조 관계로 연결
- 보조식별자 : 인스턴스를 식별할 수는 있지만 대표 식별자가 아니며, 다른 엔터티와 참조 관계로 연결되지 않음
2. 스스로 생성되었는지 여부
- 내부식별자 ; 엔터티 내부에서 스스로 생성된 식별자
- 외부식별자 : 다른 엔터티에서 온 식별자. 다른 엔터티와의 연결고리 역할
3. 단일 속성의 여부
- 단일식별자 : 하나의 속성으로 구성된 식별자
- 복합식별자 : 두 개 이상의 속성으로 구성된 식별자
4. 대체 여부
- 원조식별자 : 업무 프로세스에 존재하는 식별자. 가공되지 않은 원래의 식별자(본질식별자)
- 대리식별자 : 주식별자의 속성이 두 개 이상의 경우 그 속성들을 하나로 묶어서 사용하는 식별자(인조식별자)
* 테이블 반정규화 - 테이블 병합/ 분할/ 추가
* 데이터 모델링 순서
1. 데이터 모델에 맞게 정규화 수행
2. 데이터베이스 용량 및 트랜잭션 유형을 파악하여 성능 저하를 일으키는 부분이 없는지 검토
3, 용량과 트랜잭션 유형에 맞게 반정규화를 수행
4. 성능 향상을 위한 이력모델의 조정, PK/FK 조정, 슈퍼/서브타입 조정 등을 수행
5. 데이터 모델의 성능 검증
* 이력 테이블 컬럼 추가 - 대량의 이력 테이블을 조회할 때 속도가 느려질 것을 대비하여 조회 기준이 될 것으로 판단되는 컬럼을 추가해 놓은 방식이다.
* 공통 속성을 조회하는 빈도수가 개별 속성을 조회하는 빈도수보다 높기 때문에 공통 속성과 개별 속성을 별도로 관리하는 슈퍼-서브 타입릐 설계가 적절
* 중복관계 추가 - 관계의 반정규화 기법 중 하나로 데이터 무결성을 깨뜨릴 위험성이 없어 데이터 처리 성능을 향상시킬 수 있는 기법이다.