데이터 모델링
- 데이터 모델링 3요소: Entity, Relationship, Attribute
- 데이터 모델링 단계
- 개념적 데이터 모델링 (가장 추상적)
- 추상화 수준이 높고 업무중심적이며 포괄적인 수준의 모델링 진행.
- 전사적 데이터 모델링
- EA 수립 시 많이 이용
- 논리적 데이터 모델링
- 데이터 모델링이 최종적으로 완료된 상태라고 정의할 수 있음
- 물리적 데이터 모델링 (가장 구체적)
- 외래키는 물리 모델에서 반드시 구현되지는 않음
- 데이터 모델링 목적
- 시스템 구현과 업무 분석 및 업무 형상화
- 일정한 표기법으로 업무 내용의 정확한 분석과 실제 DB 생성으로 개발 및 데이터 관리를 위함
- 데이터 모델링 유의사항: 중복, 비유연성, 비일관성
- 절차
- 정규화
- DB 용량 산정
- DB에 발생하는 트랜잭션 유형 파악
- 용량과 트랜잭션 유형에 따라 반정규화
- 이력 모델 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등
- 성능 관점에서 데이터 모델 검증
엔티티
- 독립 엔티티: 현실세계에 존재하는 엔티티
- 업무중심 엔티티: 트랜잭션이 실행되면서 발생하는 엔티티
- 종속 엔티티: 주로 1차 정규화로 인해 관련 중심 엔티티로부터 분리된 엔티티
- 교차 엔티티: M:N 관계 해소 목적
- 유무형에 따른 분류
- 유형 엔티티: 업무에서 도출되며 지속적으로 사용됨. 물리적 형태 있음
- 개념 엔티티: 개념적으로 사용. 물리적 형태 없음
- 사건 엔티티: 비즈니스 프로세스를 실행하며 생성되는 엔티티
- 발생 시점에 따른 분류
- 기본 엔티티(키 엔티티): 업무에 원래 존재하는 정보. 다른 엔티티와의 관계에서 생성되지 않고 독립적으로 생성됨. 타 엔티티의 부모 역할을 함. 고유한 주식별자
- 중심 엔티티: 기본 엔티티와 행위 엔티티 중간에 있는 엔티티. 기본 엔티티로부터 발생되고 행위 엔티티를 생성함
- 행위 엔티티: 2개 이상의 엔티티로부터 발생하는 엔티티. 지속적으로 정보가 추가되고 변경됨
- 엔티티 특징
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 함
- 유일한 식별자에 의해 식별 가능해야 함
- 영속적으로 존재하는 두 개 이상의 인스턴스 집합이어야 함
- 업무 프로세스에 의해 이용되어야 함
- 반드시 두 개 이상의 속성이 있어야 함
- 다른 엔티티와의 최소 한 개 이상의 관계 (단, 통계성, 코드성은 생략 가능)
- 엔티티 명명 방법
- 현업에서 사용하는 용어 사용
- 가능한 약어 사용 지양
- 단수 명사 사용
- 모든 엔티티를 통틀어 유일한 이름 부여
- 생성의미대로 이름 부여
속성
- 인스턴스의 특성들. 속성은 인스턴스들의 집합임
- 분류
- 기본속성
- 파생속성: 조회시 빠른 성능을 위해 원래 속성의 값을 계산해 저장. ex) 근무기간
- 설계속성: 원래는 존재하지 않지만 필요에 따라 설계자가 추가. ex) 주문번호
- 도메인
- 엔티티의 속성에 대해 어떤 유형의 값이 들어가는 지 정의
- 데이터 유형, 크기, 제약조건 등 값의 범위
- check, primary key, ...
관계
- 존재적 관계와 행위에 의한 관계가 있음
- UML은 연관 관계와 의존 관계의 표기법이 다름(실선과 점선)
- 관계 표기법
- 관계 명 (Relationship Membership)
- 엔티티간 관계에 맺어진 형태. 관계시작점과 관계끝점
- 관계 차수 (Relationship Degree/Cardinality)
- 관계 선택 사양 (Relationship Optionality)
- 관계에서 항상 참여하는지 아니면 참여할 수도 있는지를 나타내는 방법따라 필수참여 관계(Mandatory), 선택참여 관계(Optional)로 나뉨
- 관계 도출 시 체크 사항
- 업무 기술서, 장표에 관계 연결을 가능하게 하는 동사(Verb)가 있는가?
- 업무 기술서, 장표에 관계 연결에 대한 규칙이 서술되어 있는가?
- 두 엔티티 사이에 관심있는 연관 규칙이 존재하는가?
- 두 엔티티 사이에 정보의 조합이 발생되는가?
- 식별자
- 인조 식별자: 시스템적으로 부여됨. 업무적 생성이 아님. ex) 주문번호 (= 구매자ID + 주문일자 + 순번)
- 본질 식별자: 인스턴스 탄생과 함께 업무적으로 부여되는 본질적인 속성. ex) 사번
성능 데이터 모델링
- 아키텍처 모델링: 데이터 구조 변경. 파티션, 테이블, 정규화, 반정규화. 가장 효과적
- SQL 명령문 튜닝: 조인 수행 원리, 옵티마이저, 실행계획
슈퍼/서브타입
- 용량이 적은 경우: one to one 사용. 트랜잭션이 개별로 들어감
- 용량이 큰 경우: 트랜잭션 유형으로 분류
- 트랜잭션 유형에 따라 처리 가능
- 공통/차이점에 따라 별개로 트랜잭션이 들어옴: 슈퍼 서브라는 plus 타입 사용
- 전체 통합 트랜잭션: 싱글 타입. 하나의 통합된 테이블