본문 바로가기
Tech/DAP

데이터 모델링(논리 데이터 모델링)

by Augustine™ 2018. 6. 9.
반응형

논리 데이터 모델링

 

1. 논리 데이터 모델링 이해

논리 데이터 모델링 목적 및 효과

  • 해당 비즈니스에 대한 데이터 관점에서의 명확한 이해를 돕는다.
  • 전사적인 통합 데이터 체계를 확립한다.
  • 데이터의 일관성 및 정확성 유지를 위한 규칙을 도출한다.
  • 안정적인 데이터베이스 설계의 토대를 마련할 수 있다.
  • 사용자와의 명확한 의사소통을 위한 수단으로 활용할 수 있다.

논리 데이터 모델링 필수 성공 요소

 업무에 능통한 현업 사용자와 함께 데이터 모델링을 진행하는 것이 중요하다. 그리고, 절차 보다는 데이터에 초점을 두고 모델링을 해야 한다. 이는 추후에 확장을 고려해야 하기 때문이다. 그외, 데이터의 구조와 무결성을 함께 고려해야 하고, 개념화, 정규화를 적용해야 한다. 그리고 데이터 모델링을 지원하는 데이터 사전 구축을 해야 하며, Diagram을 이용하여 업무를 표현해야 한다.

 

2. 속성 정의

 속성이란 정보 항목에서 더 이상 분리될 수 없는 최소의 데이터 보관 단위이다.

  • 속성도 일종의 집합이다. 속성에는 여러 종류의 값을 가지기 때문이다.
  • 릴레이션십도 속성이다. 물리 모델 단계에서, 릴레이션은 결국에 속성으로 될 수 밖에 없기 때문이다.
  • 속성들 간은 서로 독립적이어야 한다. 즉, 식별자에 종속되어야 한다는 말이다. 

속성 후보 수집처

  • 구 시스템의 문서자료
  • 현업 장표/보고서
  • 사용자와 협의
  • DFD의 Data Dictionary
  • 전문 서적 및 자료
  • 다른 시스템 자료

속성의 기본 구성요소

  • 속성명 : 속성의 의미를 명확히 표현하는 함축성 있는 명사 혹은 명사구를 사용한다. 또한 업무에서 일반적으로 사용하는 용어이어야 하며, 실체명은 속성명으로 사용하지 말아야 한다. 필요시 표준 약어를 제정하여 속성명을 생성하고 그 속성명을 단 하나의 실체에만 속하도록 한다.
  • 도메인 : 속성이 지닐 수 있는 값에 대한 업무적인 제약 조건으로 파악된 일련의 특성이다. 
  • 선택성 : 모든 건의 해당 속성이 반드시 값을 가져야 하는지 여부를 나타낸다.(Null or Not Null)

속성 검증 및 확정

  • 최소 단위까지 분할하라. 단, 일자, 시간, 성명, 주민번호, 우편번호 등은 분할하지 않는 것이 좋다.
  • 하나의 값만을 가지는지 검증한다. 해당 속성에 값의 종류가 하나라는 의미가 아니라, 해당 개체의 인스턴스에는 반드시 하나의 값만 보유하고 있어야 한다는 것을 의미한다. 만약 여러값을 가지거나 반복되는 속성이 있다면 이는 1차 정규화의 대상이 된다.
  • 추출속성인지 검증한다.

추출 속성 규칙

  • 초기 데이터 모델링이론에서는 추출속성은 중복 속성으로 인지하고 표현하지 말 것을 권고했다. 하지만 이제는 이러한 속성들은 기업 측면에서 반드시 중요한 데이터 이므로 반드시 기술할  것을 권장하고 있다.
  • 추출 속성은 결코 기본키로서의 역할을 맡지 않아야 한다.
  • 추출 속성은 경영층이 진실로 원하고 필요로 하는 데이터이다. 

속성 정의 시 유의 사항

  • 의미가 명확한 속성 명칭을 부여한다.
  • 유일한 복합명사를 사용한다.
  • 속성명은 단수형으로 사용한다.
  • 당연히 표준 단어를 사용해야 한다.

 

3. 엔터티 상세화

 1) 본질 식별자 

  • 키 엔터티는 부모가 태생 자체가 자생형(自生形)이기 때문에 식별자도 만들어 주어야 한다. 이에 반해, 메인 엔터티, 액션 엔터티는 부모 엔터티로부터 상속받아서 본질식별자를 구성하는 경우가 많다.
  • 절대 종속상대 종속은 나를 태어나게 하는데 절대적인 영향을 주었는지, 그렇지 않는지를 따지는 것이다. 즉, 어떤 엔터티의 부모 엔터티가 반드시 존재해야만 존재하는 것이 절대 종속이다. 그 반대로서, 엔터티의 탄생에 아무런 영향을 끼지지 않았다면 상대 종속이 되는 것이다.
  • 직접 종속은 엔터티간 관계가 1촌임을 말하고, 1촌 이상이면 간접 종속이라 한다.

  2) 후보 식별자 도출

  • 각 인스턴스를 유일하게 식별하는가?
  • 나머지 속성들을 직접 식별할 수 있어야 하며, NULL이 될 수 없다.
  • 후보 식별자로 속성 집합을 선택하는 경우에는 당연히 개념적으로 유일해야 한다. 

 3) 인조 식별자 지정

  • 최대한 범용적인 값을 사용한다.
  • 유일한 값을 만들기 위한 인조 식별자를 사용한다.
  • 하나의 인조 식별자 속성으로 대체할 수 없는 형태를 주의한다. 
  • 편의성, 단순성 확보를 위한 인조 식별자를 사용할 수 있다.

 4) 식별자 확정 절차

 하향식 방식, 즉 상위 엔터티부터 시작해서 하위 엔터티로 순차적으로 결정해 가는 것이 좋다. 식별자 상속이 상위에서 하위로 이루어지기 때문이다.

  • 키 엔터티 식별자 확정 : 최상위 엔터티는 엔터티간 서로 독립적으로 식별자를 확정할 수 있다. 보통 인조 식별자를 사용한다.
  • 메인 엔터티 식별자 확정 : 업무의 근본이 되는 엔터티이므로, 하위에 있는 수많은 엔터티의 상황을 종합적으로 감안한 전략적인 결정을 해야 한다. 경우에 따라서는 인조 식별자를 생성하기도 한다.
  • 하위 엔터티 식별자 확정 : 가능하면, 인조 식별자를 사용하지 않는게 바람직하다. 인조식별자는 정보로서의 가치가 없기 때문에 상속이 필요 없는 하위 엔터티에는 사용할 이유가 없다.

정규화

 논리적으로 데이터 모델을 일관성이 있고 중복을 제거하여 보다 안정성을 갖는 구조로 만들기 위해 정규화 작업을 거친다. 데이터를 삽입, 수정, 삭제할 때, 오류가 발생할 수 있기 때문에, 이를 방지하기 위해 정규화 작업을 거친다.(삽입이상, 수정이상, 삭제이상)

  • 입력 이상 : 어떤 데이터를 삽입하려 할 때, 불필요하게 원하지 않는 데이터도 함께 삽입된다.
  • 삭제 이상 : 일부 정보를 삭제함으로써 유지되어야 할 정보까지도 삭제되는 연대 삭제가 발생한다.
  • 갱신 이상 ; 일부 속성 값을 갱신 함으로써 원하지 않는 정보의 이상 현상이 발생한다.

정규화의 장점

  • 중복 값이 줄어든다. 이는 정규화의 최대 성과이며, 모든 장점은 이로부터 시작된다.
  • NULL 값이 줄어든다.
  • 복잡한 코드로 데이터 모델을 보완할 필요가 없다.
  • 새로운 요구 사항의 발견 과정을 돕는다.
  • 업무 규칙의 정밀한 포착을 보증한다.
  • 데이터 구조의 안정성을 최대화한다.

제 1 정규형 : 모든 속성은 반드시 하나의 값을 가져야 하며, 반복 형태가 있어서는 안된다. 1차 정규화를 수행하면 보통 자식 엔터티가 생긴다.

제 2 정규형 : 식별자가 아닌 모든 속성은 식별자 전체 속성에 완전 종속되어야 한다. 보통 키가 복합 속성일 때, 일부 속성이 일부 키에 종속이 발생하는 것을 말한다. 2차 정규화를 수행하면 보통 부모 엔터티가 생긴다.

제 3 정규형 : 2 정규형을 만족하고 식별자를 제외한 나머지 속성들 간의 종속이 존재하면 안된다. 즉, 키 속성을 제외한 일반 속성간 종속이 일어나면 안된다는 말이다. 3차 정규화를 수행하면 보통 참조 엔터티가 생긴다.

 

참조 무결성 규칙 정의

1) 입력 규칙

  • Dependent : 대응되는 부모 실체에 인스턴스가 있는 경우에만 자식 실체에 입력을 허용한다.
  • Automatic : 자식 실체 인스턴스의 입력을 항상 허용하고, 대응되는 부모 건이 없는 경우 이를 자동 생성한다.
  • Nullify : 자식 실체 인스턴스의 입력을 항상 허용하고, 대응되는 부모 건이 없는 경우 자식 실체의 참조키를 Null 값으로 처리한다.
  • Default : 자식 실체 인스턴스의 입력을 항상 허용하고, 대응되는 부모 건이 없는 경우 FK를 지정된 기본 값으로 처리한다.
  • Customized : 특정한 검증 조건이 만족되는 경우에만 자식 실체 인스턴스의 입력을 허용한다.
  • No Effect : 자식 실체 인스턴스의 입력을 조건 없이 허용한다.

2) 삭제 규칙

  • Restrict : 대응되는 자식 실체의 인스턴스가 없는 경우에만 부모 실체 인스턴스 삭제를 허용한다.
  • Cascade : 부모 실체 인스턴스의 삭제를 항상 허용하고, 대응되는 자식 실체의 인스턴스를 자동 삭제한다.
  • Nullify : 부모 실체 인스턴스의 삭제를 항상 허용하고, 대응되는 자식 실체의 인스턴스가 존재하면 그것의 FK를 Null 값으로 수정한다.
  • Default : 부모 실체 인스턴스의 삭제를 항상 허용하고, 대응되는 자식 실체의 인스턴스가 존재하면 그것의 FK를 기본 값으로 수정한다.
  • Customized : 특정한 검증 조건이 만족되는 경우에만 부모 실체 인스턴스의 삭제를 허용한다.
  • No Effect : 부모 실체 인스턴스 삭제를 조건 없이 허용한다.

 

이력관리

시점 이력 : 변경이 발생한 시각만을 관리한다.

-> 시점을 관리하기 때문에 특정 시점 데이터를 추출하고자 할 경우 불필요한 작업을 수행하게 된다.

선분 이력 : 변경의 시작점 부터 종료점까지 관리한다.

 

반응형

댓글