(SQLD) 데이터 모델링의 이해 1
1. 데이터 모델링의 이해
데이터 모델링의 특징
1) 추상화: 현실세계를 일정한 형식에 맞추어 표현을 한다.
2) 단순화: 복잡한 현실세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현하여 쉽게 이해할 수 있도록 한다.
3) 명확성: 누구나 이해하기 쉽게 하기 위해 대상에 대한 애매모호함을 제거하고 정확하게 현상을 기술하는 것.
데이터 모델링 단계(개논물)
1) 개념적 모델링: 엔터티(Entity)와 속성(Attribute)을 도출하고 개념적 ERD(Entity Relationship fingar)를 작성한다.
엔터티-관계 다이어그램을 생성.
엔터티랑 실체, 객체라는 의미. 엔터티는 사람, 장소, 물건, 사건, 개념 등의 명사에 해당한다.
- 전사적 관점에서 기업의 데이터를 모델링한다.
- 추상화 수준이 가장 높은 수준의 모델링이다.
- 추상화 수준이 높고 업무중심적이고 포괄적인 수준의 모델링. 전사적 데이터 모델링, EA수립시 많이 사용.
2) 논리적 모델링: 식별자를 도출하고 필요한 모든 릴레이션(관계)을 정의한다. <<정규화>>를 수행해서 데이터 모델의 독립성을 확보한다. 정규화의 기본 목표는 테이블 간에 중복된 데이터를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)를 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다.
- 정규화를 통해서 재사용성을 높인다.
- 시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현, 재사용성이 높음.
3) 물리적 모델링: 데이터베이스를 실제 구축한다. 즉, 테이블, 인덱스, 함수 등을 생성한다.
- 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계.
데이터 모델링 관점
1) 데이터: 구조 분석, 정적 분석. 업무가 어떤 데이터와 관련이 있는지 또는 데이터간의 관계는 무엇인지에 대해서 모델링하는 방법.
2) 프로세스: 시나리오 분석, 도메인 분석, 동적 분석. 업무가 실제하고 있는 일은 무엇인지 또는 무엇을 해야 하는지를 모델링하는 방법.
3) 데이터와 프로세스: CRUD(Create, Read, Update, Delete) 분석. 업무가 처리하는 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지 모델링하는 방법.
데이터 모델링을 하는 주요한 이유
- 업무정보를 구성하는 기초가 되는 정보들을 일정한 표기법에 의해 표현함으로써 정보시스템 구축의 대상이 되는 업무 내용을 정확하게 분석하는 것
- 분석된 모델을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터관리에 사용하기 위한 것
- 즉, 데이터 모델링이라는 것은 단지 데이터베이스만을 구축하기 위한 용도로만 쓰이는 것이 아니라 데이터 모델링 자체로서 업무를 설명하고 분석하는 부분에도 매우 중요한 의미를 가지고 있다.
데이터 모델링의 유의점
1) 중복(Duplication): 데이터 모델은 같은 데이터를 사용하는 사람, 시간, 그리고 장소를 파악하는데 도움을 준다. 이러한 지식 응용은 데이터베이스가 여러 장소에 같은 정보를 저장하는 잘못을 하지 않도록 한다.
2) 비유연성(Inflexibility): 데이터 모델을 어떻게 설계했느냐에 따라 사소한 업무변화에도 데이터 모델이 수시로 변경됨으로써 유지보수의 어려움을 가중시킬 수 있다. 데이터의 정의를 데이터의 사용 프로세스와 분리함으로써 데이터 모델링은 데이터 혹은 프로세스의 작은 변화가 애플리케이션과 데이터베이스에 중대한 변화를 일으킬 수 있는 가능성을 줄인다.
3) 비일관성(Inconsistency): 데이터의 중복이 없더라도 비일관성은 발생한다. 예를 들어 신용 상태에 대한 갱신 없이 고객의 납부 이력 정보를 갱신하는 것이다. 개발자가 다른 데이터와 모순된다는 고려 없이 일련의 데이터를 수정할 수 있기 때문이다. 데이터 모델링을 할 때 데이터와 데이터간 상호 연관 관계에 대한 명확한 정의는 이러한 위험을 사전에 예방할 수 있도록 해준다.
데이터 모델 표기법 ERD
- 1976년 피터첸(Peter Chen)에 의해 Entity-Relationship Model(E-R Model)이라는 표기법이 만들어졌다.
데이터 모델링을 위한 ERD
ERD 작성절차*
1) 엔터티를 도출하고 그린다.
2) 엔터티를 배치한다.
3) 엔터티 간의 관계를 설정한다.
4) 관계명을 서술한다.
5) 관계 참여도를 표현한다.: 관계 참여도는 한 개의 엔터티와 다른 엔터티 간의 참여하는 관계수를 의미한다.
6) 관계의 필수 여부를 표현한다.: 필수는 반드시 존재해야 하는 것이다.
엔터티 배치: 데이터 모델링에서도 가장 중요한 엔터티를 왼쪽상단에 배치
좋은 데이터 모델의 요소
1) 완전성: 업무에서 필요로 하는 모든 데이터가 데이터 모델에 정의되어 있어야 한다.
2) 중복배제
3) 업무규칙(Business Rules): 데이터 모델링 과정에서 도출되고 규명되는 수많은 업무규칙을 데이터 모델에 표현하고 이를 해당 데이터 모델을 활용하는 모든 사용자가 공유할 수 있도록 제공하는 것.
4) 데이터 재사용
5) 의사소통
6) 통합성
데이터 모델링 고려 사항
1) 데이터 모델의 독립성: 독립성이 확보된 모델은 고객의 업무변화에 능동적으로 대응할 수 있다. 독립성을 확보하기 위해서는 중복된 데이터를 제거해야 한다. 데이터 중복을 제거하는 방법이 바로 정규화이다.
2) 고객 요구사항의 표현: 데이터 모델링으로 고객과 데이터 모델러 간에 의사소통을 할 수 있어야 하므로, 고객의 요구 사항을 간결하고 명확하게 표현해야 한다.
3) 데이터 품질 확보: 데이터베이스 구축시에 데이터 표준을 정의하고 표준 준수율을 관리해야 한다. 데이터 표준을 확보해야 데이터 품질을 향상시킬 수 있다.
3층 스키마(3-Level Schema): 사용자, 설계자, 개발자가 데이터베이스를 보는 관점에 따라 데이터베이스를 기술하고 이들 간의 관계를 정의한 ANSI(미국표준협회) 표준이다. 3층 스키마는 데이터베이스의 독립성을 확보하기 위한 방법이다. 데이터의 독립성을 확보하면 데이터 복잡도 감소, 데이터 중복 제거, 사용자 요구사항 변경에 따른 대응력 향상, 관리 및 유지보수 비용 절감 등의 장점을 갖는다. 3단계 계층으로 분리해서 독립성을 확보하는 방법으로 각 계층을 뷰(View)라고도 한다. 뷰는 가상 테이블이라고 생각하면 된다.
3층 스키마의 독립성
1) 논리적 독립성: 개념 스키마가 변경되더라고 외부 스키마가 영향을 받지 않는 것이다.
2) 물리적 독립성: 내부 스키마가 변경되더라도 개념 스키마가 영향을 받지 않는 것이다.
3층 스키마 구조
1) 외부 스키마
- 사용자 관점, 업무상 관련이 있는 데이터 접근이다.
- 관련 데이터베이스의 뷰(View)를 표시한다.
- 응용 프로그램이 접근하는 데이터베이스를 정의한다.
2) 개념 스키마
- 개념단계 하나의 개념적 스키마로 구성 모든 사용자 관점을 통합한 조직 전체의 DB를 기술하는 것
- 설계자 관점, 사용자 전체 집단의 데이터베이스 구조이다.
- 전체 데이터베이스 내의 규칙과 구조를 표현한다.
- 통합 데이터베이스 구조이다.
- 모든 응용시스템들이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 DB를 기술한 것으로 DB에 저장되는 데이터와 그들간의 관계를 표현하는 스키마
3) 내부 스키마
- 개발자 관점, 데이터베이스의 물리적 저장 구조이다.
- 데이터 저장 구조, 레코드 구조, 필드 정의, 인덱스 등을 의미한다.