교육

데이터 모델링 (Database Modeling) 실무 (데이터표준화 / 도메인 / 논리 모델링 / 물리 모델링 / 정규화 / 반정규화)

ByeongJun 2023. 4. 4. 18:17
반응형
 

데이터 모델링 (Database Modeling) 실무

데이터 모델링 개요 - 표기법(IE) 정보공학 표기법은 제임스 마틴이 개발했다. 까마귀발(Crow's foot) 모델이라고도 한다. 엔티티 표기 하나 이상의 속성으로 구성 속성의 표기 속성은 하나의 엔티티

3mmmeee.tistory.com

1번 초록 박스 1정규형

2번 노란 박스 2정규형

3번 빨간 박스 3정규형

 

정규형(Normal Form, NF)은 데이터 이상(Anomaly) 현상을 제거하기 위한 관계형 모델의 설계 지침

 

 

데이터 표준화

표준화란 일정한 기준에 따라 통일하는 것을 의미하며,

데이터 표준화란 시스템 별로 산재되어 있는 데이터 정보 요소에 대한 명칭, 정의, 형식, 규칙에 대한 원칙을 수립하여

이를 전사적 또는 조직적으로 적용하는 것을 의미한다.

 

[기대 효과] 

  • 전사적인 데이터 표준화 활동이 수행되면 현업 사용자는 정확한 데이터를 사용과 올바른 의사 결정이 가능하다.
  • 필요한 데이터의 소재 파악에 소요되는 시간 및 노력을 줄일 수 있다. 
  • 일관된 데이터 형식 및 규칙의 적용으로 인한 데이터 품질이 향상된다.
  • 정보시스템 간 데이터 인터페이스 시 데이터 변화 및 정제 비용이 감소된다.

 


도메인

엔티티 속성이 가질 수 있는 데이터의 집합 

(엔티티 속성들이 서로 도메인이 같다는 것은 속성들의 데이터 타입과 길이 및 제약 사항이 동일하다는 의미)

 

도메인 정의 : 데이터 모델링 단계에서 공통되고 일정한 규칙에 따라 속성에 대한 규칙을 정의하는 방법 

 

 


논리 모델링

구조적 타당성(Structural Validity)

- 데이터를 정의하고 구성하는 방법의 일관성이 보장되어야 한다.

  동일 프로젝트에서 일관성이 없으면 상호간(분석자와 사용자, 분석자와 개발자) 의사사통 문제가 생기고
  결국에는 개발 생산성이 저하되며 작성하는 ERD 품질을 보장할 수 없다.

 

단순성(Simplicity)

- 사용자가 이해하기 쉽도록 가능한 단순하게 작성

 

비중복성(Non Redundancy)

- 필요한 데이터는 한 곳에 한 번만 존재해야 한다. 중복을 제거해 데이터의 무결성을 보장하는 것이 ERD 작성 목적

 

공유성(Commonality)

- 어떠한 적용 업무나 기술에 특화되지 않고 여러 사람이 사용할 수 있어야 한다. 

 

무결성(Integrity)

- 비즈니스에서 데이터를 사용하고 관리하는 방식의 일관성이 유지되어야 한다. 

 

완전성(Completeness)

- ER 모델이 현실세계의 모든 요구사항을 표현하고 있어야 한다. 

  또한 요구사항의 모든 상세한 특징들을 검토하여 ER 모델에 모두 표현되고 있는지, 
  ER 모델에 언급되고 있는 개념들의 요구사항 속에 언급되고 있는지 검증해야 한다. 

 

자명성(Self-Explanation)

- ER 모델은 별도의 보조자료 없이도 요구사항을 설명할 수 있어야 한다. 

 

확장성(Extensibility)

- 현재 상태에서 최소한의 노력으로 새로운 요구를 수용할 수 있는 능력이 있어야 한다.

  아무리 훌륭한 시스템도 확장시 더 많은 비용이 필요하다면 훌륭한 시스템이라고 할 수 없다.

 

정규성(Normality)

- 논리 데이터 모델링 부분에서 다루어지는 정규화가 반영된 모델을 만들어야 한다.

 


물리 모델링

논리 모델을 특정 데이터베이스에 맞도록 물리적인 스키마로 설계하는 과정 

(논리 모델의 엔티티와 관계 및 속성은 테이블과 칼럼으로 표현)

 

다시 말해, 논리적 데이터 구조가 설계된 후 컴퓨터가 접근할 수 있는 저장 장치 위에 데이터가 표현될 수 있도록 

물리적 데이터 구조로 변환시켜야 하는 과정을 '물리적 데이터 모델링'이라고 한다. 

 

물리 모델링에서는 DBMS의 특성, 성능, 저장공간의 효율화를 고려해 모델의 구조를 최적화 시키고

논리 모델을 물리 모델로 변환하며, 스크립트를 생성하고 DBMS에 테이블 구조를 생성하는 등의 작업을 수행한다. 

 

  • 데이터 모델 최적화를 수행 (반정규화, 인덱스 설계, 파티션 고려 등)
  • 무결성 규칙을 설계
  • 논리-물리 모델 변환을 수행
  • DDL 스크립트를 생성하고 실행하여 테이블 구조를 생성 
반응형

- 반정규화

정규화된 모델을 정규화를 위반하는 구조로 재조정하는 작업

  • 데이터 모델은 정규화된 모델 내부의 엔티티 속성 및 관계가 중복되거나 통합 또는 분리되는 형태로 반정규화

  • 정규화 작업은 유지보수를 효율적이고 쉽게 해주지만,
    데이터 액세스에서 과다 조인(JOIN)으로 인한 성능 감소 요인이 발생할 수도 있기 때문에 반정규화 수행

  • 이때 주의할 점은!
    분석 / 설계자들이 반정규화를 지나치게 강조해
    분석·설계 단계의 모델링 작업에서부터 많은 데이터의 중복을 허용하는 경향이 있는데,
    오히려 데이터 분석 작업이 소홀해질 수도 있다.

    이러한 경우 데이터의 무결성을 보장하기 위한 오버헤드 비용이 추가될 수 있으므로, 
    정규화 작업보다 반정규화를 우선시 하는 것을 주의해야 한다.

  • 애플리케이션(SQL) 튜닝 작업을 하거나 충분히 최적화된 SQL을 사용해보고
    원하는 시스템 성능에 미치지 못하면 (다른 튜닝 메커니즘(DML 최적화, Index)
    그때 반정규화를 수행하는 것이 바람직하다.

  • 테이블 구조가 변경되면서 생길 수 있는 데이터 무결성에 관련된 손실을 최소화할 방법을 미리 강구
    (시스템의 성능보다 우선시 되는 것이 데이터의 무결성)

  • 테이블이 통합되거나 변경되면 그 이유와 결과에 대한 충분한 이력 관리가 필요하다.
  • 테이블의 구조가 유사할 경우 통합을 고려할 수 있다.

  • 테이블 내부 ROW의 개수가 매우 다량이라 쿼리의 성능이 느릴 경우, 테이블의 수평 분할을 고려한다.
    ex) [보험계약] 테이블 내 [계약번호] 컬럼을 [자동차 보험계약],[일반 보험계약] 테이블의 컬럼으로 각각 나눈다.
  • 다음과 같은 경우, 수직 분할을 고려할 수 있다.
    - 조회 / 갱신으로 나뉘는 경우
    - 특별히 자주 조회되는 칼럼이 있는 경우
    - 특정 컬럼의 크기가 아주 큰 경우
    - 특정 컬럼에 보안을 적용해야 하는 경우


반응형