데이터 모델링
DB CAFE
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 데이터 모델링[편집]
1.1 데이터 모델링 개요[편집]
1.1.1 데이터 모델링은 왜 필요한가?[편집]
record_voice_over
- 정보 시스템 개발에서 프로세스 모델링과 데이터 모델링은 중요한 두 개의 축이다.
- 설계를 프로세스 위주로 진행하면, 추후에 업무 변화에 대한 대응이 쉽지 않아 데이터 중심의 설계가 대두되고 있다. (물론 프로세스 모델링과 데이터 모델링은 상호 보완적인 관점에서 이해되어야 한다.)
- 데이터 모델링이 중요한 이유
- 파급효과 : 시스템 구축이 완성되어 가는 시점에서 데이터 모델을 불가피하게 변경해야 한다면, 큰 위험 요소가 아닐 수 없다. 그만큼 데이터 설계가 중요하다고 할 수 있다.
- 정보 시스템의 간결한 표현 : 데이터 모델은 시스템을 구축하는 많은 이해관계자 간 훌륭한 의사 소통의 도구가 될 수 있다. 즉, 데이터 모델은 정보 요구사항을 정확하고 간결하게 표현할 수 있기 때문이다.
- 데이터 품질 : 잘 못 설계된 모델링은 데이터의 정확성이 떨어질 수 있다. 오늘날 데이터가 기업의 큰 자산임을 고려할 때, 잘못된 데이터는 기업 측면에서 크나큰 손실이 아닐 수 없다. 따라서, 데이터 품질 향상을 위해 well-formed한 데이터 모델이 필수라고 할 수 있다.
- 데이터 모델링의 필요성
- 애플리케이션과 데이터의 통합 : 보통 기업(주로 대기업)에서는 통합된 애플리케이션을 좋아한다. 하지만 많은 애플리케이션을 하나로 묶어 종합 포털격인 애플리케이션을 구축하려 하면, 그 노력은 실로 어마어마하다고 할 수 있다. 이러한 이유로 애플리케이션의 통합은 반드시 데이터 통합이 선행되어야 한다. 그만큼 데이터 모델링이 중요하다고 할 수 있다.
- 개발자들의 시스템 이해 : 애플리케이션을 개발하는데에 데이터 모델만큼 훌륭한 설계 문서가 있을까? 물론 기본적인 데이터 모델을 이해 못하는 중급 이상의 개발자들도 많다는 것이 우리의 현실이다.
- 데이터 모델링 시 어떤 점을 주의해야 할까?
- 매우 중요한데, 대부분의 IT인들 또는 DB 모델러들이 간과하는 점... 바로 중복(Duplication)이다. 같은 기업내에서도 동일 의미의 코드가 산재해 있을 뿐만아니라, 동일 애플리케이션 내에서도 속성이 중복되어 있는 경우가 허다하다.
- 데이터 모델은 추후 변화에 대한 가능성을 열어두고 설계를 해야 한다. 모델링은 유연성을 가져야 한다. 모델의 비유연성을 지양해야 한다.
- 데이터는 일관성이 있어야 한다. 비일관성의 예방은 데이터와 데이터 간 관계를 명확히 정의하는 방법으로 해결할 수 있다.
1.2 데이터 모델링 단계[편집]
1.2.1 개념 데이터 모델링[편집]
- 주제별로 분류 가능한 업무를 분석해서, 핵심 엔터티를 추출하고 그들 간의 관계를 정의하여 데이터 전체 골격을 생성한다.
1.2.2 논리 데이터 모델링[편집]
- 핵심 엔터티와 관계를 바탕으로 상세 속성을 정의하고 식별자를 확정하며, 정규화와 같은 상세화 과정을 수행한다.
1.2.3 물리 데이터 모델링[편집]
- DBMS의 특성 및 구현 환경 등을 감안한 스키마를 일정한 기준과 규칙에 의해 도출하고 컬럼의 데이터 타입과 크기를 정의한다.
1.3 모델링 기본 원칙[편집]
- 커뮤니케이션 원칙 : 데이터 모델링의 주목적은 최종 사용자 및 이해 당사자들에게 시스템의 지향점을 분명하게 설명하기 위함이다. 데이터 모델만큼 훌륭한 의사소통의 도구는 없다.
- 모델링 상세화 원칙 : 데이터의 상세화 정도를 제시하고 조직이 사용하는 정보 구조의 '최소 공통 분모'를 제시해야 한다. 데이터는 데이터의 본질과 잠재적 사용을 이해할 수 있을 만큼 상세화되어야 한다.
- 논리적 표현 원칙 : 데이터에 대한 논리적 측면을 최대한 표현해야 한다.
1.4 좋은 데이터 모델의 요소[편집]
- 완전성 : 업무에 필요한 모든 데이터가 모델에 정의 되어 있어야 한다.
- 중복 배제 : 동일한 사실이 데이터에 한번만 있어야 한다. 데이터가 중복 관리될 경우, 데이터 일관성에 심각한 영향을 끼친다.
- 비즈니스 룰 : 업무 규칙을 애플리케이션 레이어에서도 구현이 가능하지만, 먼저 데이터 모델에서 구현할 수 있다면 구현하는게 맞다.
- 데이터 재사용 : 난로 연통 시스템을 상기해보자. 데이터는 애플리케이션에 대해 독립적으로 설계되어야 데이터 재사용성을 향상시킬수 있다. 애플리케이션에 종속적으로 설계하면, 여러 시스템에 데이터가 중복으로 생성되어 있어, 데이터 재사용성이 떨어진다.
- 안전성 및 확장성 : 데이터 모델은 안정성 뿐만 아니라, 추후 데이터가 쉽게 변경 설계 가능하도록 확장성을 고려해서 설계해야 한다.
- 간결성 : 테이블 수가 많다고 절대 좋은 것이 아니다. 통합할 수 있다면 통합하여 모델을 간결함을 유지시켜야 한다.
- 의사소통 : 요구사항에서 도출되는 많은 업무규칙을 데이터 모델의 엔터티, 서브타입, 속성, 관계 등의 형태로 최대한 자세하게 표현되어 데이터 모델은 의사소통 도구로서의 역할을 하게 된다.
- 통합성 : 간결성과 같은 성격이다.
1.5 데이터 모델링 기법 이해[편집]
1.5.1 논리 모델에서 물리 모델로 넘어오면서 고려해야 할 것들[편집]
- Super/Sub 관계의 엔터티를 몇 개의 테이블로 만들 것인가
- 배타적 관계 엔터티의 외부키를 몇 개로 할 것인가
- 성능 향상을 위해 테이블을 추가 또는 통합할 것인가
- 통계 작업을 위해 집계 테이블 등의 임시 테이블은 몇 개로 할 것인가
- 테이블 컬럼을 다른 테이블에 중복할 것인가, 중복 한다면, 어떤 애플리케이션이 관련되어 있는가, 인덱스의 생성이 필요한가
- 분산환경에서 테이블을 중복할 것인가
- 데이터가 분산 환경에서 이동 시 문제를 어떻게 해결할 것인가
1.6 엔터티[편집]
- 초기 모델 설계시, 먼저 엔터티를 도출한다.
- 엔터티 종류 중, 키 엔터티가 될만한 것들을 우선 도출하여, 메인, 액션 엔터티를 도출한다.
- 엔터티는 우리가 지속적으로 관리를 해야 하는 대상이다.
- 또한, 엔터티는 동질성을 가지는 개체 집합이며 또는 행위의 집합으로 정의할 수 있다.
- 하지만, 집합을 어떤 범위까지 정의하느냐에 따라 동질성이 달라질 수 있다.
1.7 속성[편집]
- 속성은 엔터티에 저장되는 개체 집합의 특성을 설명하는 항목이라고 할 수 있다.
1.8 식별자[편집]
- 개체를 식별할 수 있는 속성이다.
- 식별자는 하나 또는 그 이상의 속성으로 구성된다.
- 식별자는 논리적인 관점에서 사용되고 키는 물리적인 관점에서 사용된다.
- 따라서, 엔터티는 식별자를 가지며, 테이블은 키를 가진다.
- 식별자와 키를 구별하는 이유는 식별자와 키가 서로 일치하지 않을 수 있기 때문이다.
- 본질 식별자 : 집합의 본질을 명확하게 설명할 수 있는 의미상의 주어를 말한다.
- 후보 식별자 : 인스턴스를 유일하게 식별할 수 있는 속성 또는 속성들의 조합이며, 후보 식별자로 속성 집합을 선택하는 경우에는 개념적으로 유일해야 한다.
- 대체(보조) 식별자 : 원래의 식별자를 대신할 수 있는 또 다른 속성을 얘기한다.
- 사원 엔티티의 공식 식별자는 사원번호지만, 주민번호 속성이 유일성을 보장하고 필수적으로 정의되었다면, 주민번호도 식별자로서의 역할을 할 수 있다.
- 인조 식별자 : 기존 본질 식별자를 쓸 수 없는 상황이 발생했을 때, 인조 식별자를 사용한다.
- 예를 들어, 부모 엔터티로 물려받은 식별 속성이 많은 경우, 편리함을 위해 사용한다.
- 실질 식별자 : 인스턴스를 식별하기 위해 공식적으로 부여된 식별자를 말하며, 본질 식별자나 인조 식별자 모두 실질 식별자가 될 수 있다.
1.9 관계[편집]
- 관계는 엔터티와 엔터티 간 연관성을 표현하는 것이다.
1.10 카디날리티[편집]
- 한 개체가 관계를 통해 다른 개체와 관련된 개체들의 수를 나타낸다.
- 카디날리티란 관계에 참여하는 하나의 개체에 대해 다른 엔터티에서 몇 개의 개체가 참여하는지를 나타낸다. #: 예를 들면, 한 명의 학생이 1개 이상 6개 이하의 과목에 등록할 수 있다면 카디날리티는 (1, 6)이 된다.
1.11 존재 종속[편집]
- 한 엔터티의 존재가 다른 엔터티의 존재에 영향을 받는다면 이를 존재 종속이라 한다.
1.12 서브타입[편집]
- 전체 집합인 슈퍼타입의 부분 집합이라고 정의할 수 있다.
- 물리 설계시, 별도의 테이블이 될 수 있고, 슈퍼 타입과 묶어서 하나의 테이블로 정의될 수 도 있다.