1. 데이터 모델링의 이해
1) 데이터 모델링
- 현실세계를 데이터베이스로 표현하기 위해 추상화 -> 고객의 업무 프로세스를 이해 -> 데이터 모델링 표기법을 사용 하여 모델링
- 고객의 업무 프로세스 추상화 -> 소프트웨어를 분석 설계하면서 점점 더 상세해짐
- 고객의 비즈니스 프로세스를 이해, 비즈니스 프로세스 규칙(Business Rule)을 정의
- 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
- 현실세계의 데이터에 대해 약속된 표기법에 의해 표현하는 과정
- 데이터베이스를 구축하기 위한 분석/설계의 과정
2) 데이터 모델링의 특징
추상화 (abstraction) | 공통적인 특징을 찾고 현실세계를 간략하게 표현 |
단순화 (simplification) | 복잡한 문제를 피하고 누구나 쉽게 이해할 수 있도록 표현 |
명확성 (Clarity) | 의미적 해석이 모호하지 않고 명확히 해석되며, 한 가지 의미를 가져야 함 |
3) 데이터 모델링 단계
- 개념적 모델링 -> 논리적 모델링 -> 물리적 모델링
개념적 모델링 |
- 고객의 비즈니스 프로세스를 분석하고 업무 전체에 대해서 데이터 모델링 수행 - 업무 측면에 대한 모델링 (기술적 용어 사용 자제) - 전사적 관점에서 기업의 데이터 모델링 - 추상화 수준이 가장 높은 수준의 모델 - 엔터티(Entity)와 속성(Attribute)도출, 개념적 ERD 작성 |
논리적 모델링 |
- 특정 데이터베이스 모델에 종속 - 식별자 정의하고 관계, 속성 등을 모두 표현함 - 정규화를 통해 데이터 모델의 독립성을 높여 재사용성을 높임 - 개념적 모델링을 논리적 모델링으로 변환하는 작업 |
물리적 모델링 |
- 데이터 베이스 실제 구축 (구축할 데이터베이스 관리 시스템에 테이블, 인덱스 등을 생성) - 성능, 보안, 가용성 등을 고려하여 데이터베이스 구축 |
- 데이터 모델링 관점
관점 |
코멘트 |
데이터 DATA, WHAT |
- 업무가 어떤 데이터와 관련이 있는지 또는 데이터간의 관계는 무엇인지에 대해서 모델링 - 비즈니스 프로세스에서 사용되는 데이터 - 구조 분석, 정적 분석 |
프로세스 PROCESS, HOW |
- 업무가 실제하고 있는 일은 무엇인지 또는 무엇을 해야 하는지를 모델링 - 비즈니스 프로세스에서 수행하는 작업 - 시나리오 분석, 도메인 분석. 동적 분석 |
데이터와 프로세스 상관관점 DATA VS PROCESS |
- 업무가 처리하는 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지 모델링 - 프로세스와 데이터 간의 관계 - CRUD ( Create, Read, Update, Delete) 분석 |
4) 데이터 모델링의 유의점
(1) 중복(Duplication)
(2) 비유연성(Inflexibility)
(3) 비일관성(Inconsistency)
5) 데이터 모델링 고려사항
(1) 데이터 모델의 독립성
- 고객의 업무 변화에 능동적으로 대응가능해짐
- 독립성 확보 : 중복된 데이터 제거 => 정규화!
(2) 고객의 요구사항 표현
- 간결하고 명확하게 요구사항 표현
(3) 데이터 품질 확보
- 데이터 표준을 확보 -> 데이터 품질 향상 가능
- 데이터 표준을 정의하고 표준 준수율을 관리하여 데이터베이스 구축
6) 데이터 모델링을 위한 ERD
- 엔터티와 엔터티 간의 관계를 정의하는 모델링 방법
(1) ERD 작성
① 엔터티를 도출하고 그림 (업무에서 관리해야 하는 집합을 도출)
② 엔터티를 배치 (중요한 엔터티를 왼쪽 상단에 배치)
③ 엔터티 간의 관계를 설정
④ 관계명 서술 (엔터티 간의 어떤 행위나 존재가 있는지 표현)
⑤ 관계 참여도를 표현 (관계 참여도 : 한 개의 엔터티와 다른 엔터티 간의 참여하는 관계 수)
⑥ 관계의 필수 여부 표현 (필수 : 반드시 존재해야 함)
(2) ERD 작성 시 고려사항
- 중요한 엔터티는 가급적 왼쪽 상단에 배치
- 이해하기 쉽고 복잡하지 않은 ERD 작성
2. 3층 스키마(3-Level Schema)
1) 3층 스키마
- 사용자, 설계자, 개발자가 데이터베이스를 보는 관점에 따라 데이터베이스를 기술, 이들 간의 관계를 정의한 ANSI 표준
- DB의 독립성을 확보하기 위한 방법
- 장점 : 데이터 복잡도 증가, 데이터 중복 제거, 사용자 요구사항 변경에 따른 대응력 향상, 관리 및 유지보수 비용 절감
- VIew : 3단계 계층으로 분리한 각 계층을 부르는 다른 이름
- 3층 스키마의 독립성
논리적 독립성 | 저장구조가 변경되어도 응용 프로그램 및 개념 스키마에 영향이 없음 |
물리적 독립성 | 데이터베이스 논리적 구조가 변경되어도 응용 프로그램에 변화 없음 |
2) 3층 스키마 구조
외부 스키마 (External Schema) | - 사용자 관점. 업무상 관련이 있는 데이터 접근 - 관련 DB의 VIEW 표시 - 응용 프로그램이 접근하는 데이터베이스 정의 |
개념 스키마 (Conceptual Schema) | - 설계자 관점. 사용자 전체 집단의 데이터베이스 구조 - 전체 DB 내의 규칙, 구조 표현 - 통합 데이터베이스 구조 |
내부 스키마 (Internal Schema) | - 개발자 관점. DB의 물리적 저장 구조 - 데이터 저장 구조, 레코드 구조, 필드 정의. 인덱스 등 의미 |
3. 좋은 데이터 모델의 요소
완전성(Completeness) |
업무에서 필요로 하는 모든 데이터가 데이터 모델에 정의되어 있어야 함 |
중복배제(Non-Redundancy) |
하나의 데이터베이스 내에 동일한 사실은 반드시 한 번만 기록하여야 함 |
업무규칙(Business Rules) |
데이터 모델링 과정에서 도출되고 규명되는 수많은 업무규칙(Business Rules)을 데이터 모델에 표현하고 이를 해당 데이터 모델을 활용하는 모든 사용자가 공유할 수 있도록 제공하는 것 |
데이터 재사용(Data Reusability) | 데이터의 재사용성을 향상시키고자 한다면 데이터의 통합성과 독립성에 대해서 충분히 고려 |
의사소통(Communication) | 많은 업무 규칙들을 해당 정보시스템을 운용, 관리하는 많은 관련자들이 설계자가 정의한 업무 규칙들을 동일한 의미로 받아들이고 정보시스템을 활용할 수 있게 하는 역할 |
통합성(Integration) | 가장 바람직한 데이터 구조의 형태는 동일한 데이터는 조직의 전체에서 한번 만 정의되고 이를 여러 다른 영역에서 참조, 활용하는 것 |
'[자격증] SQLD (SQL Developer)' 카테고리의 다른 글
[SQLD][책없이 공부]1과목 02. 데이터 모델과 성능_03 분산 데이터베이스 (0) | 2019.11.13 |
---|---|
[SQLD][책없이 공부]1과목 02. 데이터 모델과 성능_02 반정규화 (0) | 2019.11.13 |
[SQLD][책없이 공부]1과목 02. 데이터 모델과 성능_01 성능데이터모델링, 정규화 (0) | 2019.11.13 |
[SQLD][책없이 공부]1과목 01. 데이터 모델링 (Data Modeling)_03 (0) | 2019.11.12 |
[SQLD][책없이 공부]1과목 01. 데이터 모델링 (Data Modeling)_02 (0) | 2019.11.12 |