1. 모델링의 이해

1) 모델링의 정의

⑴ Webster 사전
– 가설적 또는 일정 양식에 맞춘 표현 (a hypothetical or stylized representation)
– 어떤 것에 대한 예비 표현으로, 그로부터 최종 대상이 구축되도록 하는 계획으로서 기여하는 것

⑵ 복잡한 현실세계를 단순화시켜 표현하는 것이다.

⑶ 모델이란, 사물 또는 사건에 관한 양상(Aspect)이나 관점(Perspective)을 연관된 사람이나 그룹을 위하여 명확하게 하는 것이다.

⑷ 모델이란, 현실 세계의 추상화 된 반영이다.

2) 모델링의 특징

⑴ 추상화 : 현실 세계를 일정한 형식에 맞추어 표현한다는 의미

⑵ 단순화 : 복잡한 현실 세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현하여 쉽게 이해할 수 있도록 하는 개념

⑶ 명확화 : 누구나 이해하기 쉽도록 대상에 대한 애매모호함을 제거하고 정확하게 현상을 기술하는 것

  • 모델링이란, 현실 세계를 추상화, 단순화, 명확화 하기 위해 일정한 표기법에 의해 표현하는 기법
  • 정보시스템 구축에서 모델링은 계획/분석/설계 시 이용하고, 이후 구축/운영 단계에서는 변경과 관리의 목적으로 이용하게 된다.

3) 모델링의 세 가지 관점

⑴ 데이터 관점
– 업무가 어떤 데이터와 관련이 있는지 또는 데이터간의 관계는 무엇인지에 대해 모델링하는 방법 (What, Data)

⑵ 프로세스 관점
– 업무가 실제 하고있는 일은 무엇인지 또는 무엇을 해야하는지를 모델링하는 방법 (How, Process)

⑶ 데이터와 프로세스의 상관 관점
– 업무가 처리하는 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지 모델링하는 방법

sqld-1-1-2

2. 데이터 모델의 기본 개념의 이해

1) 모델링의 정의

  • 정보 시스템을 구축하기 위해, 해당 업무에 어떤 데이터가 존재하는지 또는 업무가 필요로 하는 정보는 무엇인지를 분석하는 방법

  • 기업 업무에 대한 종합적인 이해를 바탕으로 데이터에 존재하는 업무 규칙(Business Rule) 에 대하여 참(True) 또는 거짓(False) 을 판별할 수 있는 사실을 데이터에 접근하는 방법(How), 사람(Who), 전산화와는 별개의 (독립적인) 관점에서 이를 명확하게 표현하는 추상화 기법

  • 데이터 모델링을 하는 주요한 이유
    – 업무 정보를 구성하는 기초가 되는 정보를 일정한 표기법에 의해 표현함으로써 업무 내용을 정확하게 분석하는 것
    – 분석된 모델을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터 관리에 사용하기 위한 것

sqld-1-1-1

2) 데이터 모델이 제공하는 기능

⑴ 시스템을 현재 또는 원하는 모습으로 가시화하도록 도와준다.
⑵ 시스템의 구조와 행동을 명세화 할 수 있게 한다.
⑶ 시스템을 구축하는 구조화 된 틀을 제공한다.
⑷ 시스템을 구축하는 과정에서 결정한 것을 문서화 한다.
⑸ 다양한 영역에 집중하기 위해 다른 영역의 세부 사항은 숨기는 다양한 관점을 제공한다.
⑹ 특정 목표에 따라 구체화 된 상세 수준의 표현 방법을 제공한다.

3. 데이터 모델링의 중요성 및 유의점

◇ 데이터 모델링이 중요한 이유

  • 파급효과 (Leverage)
  • 복잡한 정보 요구사항의 간결한 표현 (Conciseness)
  • 데이터 품질 (Data Quality)

1) 파급효과 (Leverage)

시스템 구축 완성 단계에서 대규모의 데이터 이행을 성공적으로 수행하기 위한 많은 단위 테스트들이 수행되고, 완료되면 이를 묶어 병행테스트, 통합테스트를 수행하게 된다. 이러한 과정에서 데이터 모델의 변경이 불가피하게 된다면, 이를 위한 데이터 구조의 변경에 따른 위험요소가 발생할 수 있다. 따라서 시스템 구축 작업 중 데이터 설계는 매우 중요하다.

2) 복잡한 정보 요구사항의 간결한 표현 (Conciseness)

데이터 모델은 건축물로 비유하자면 설계 도면에 해당한다. 시스템 구축 시 명확하고 간결하게 그려져 있는 데이터 모델을 이용하여 분석하는 것이 요구사항을 가장 빠르게 파악할 수 있는 방법이다.

3) 데이터 품질 (Data Quality)

데이터를 전략적으로 활용하려는 시점에 정확하지 않은 데이터를 사용해야 한다면 그 가치는 매우 떨어질 것이다. 데이터 품질의 문제가 야기되는 중대한 이유 중 하나는 데이터 구조의 문제이다. 중복 데이터의 미정의, 데이터 구조의 비즈니스 정의 불충분, 동일한 성격의 데이터를 통합하지 않고 분리함으로써 나타나는 데이터 불일치 등 데이터 구조의 문제로 인한 데이터 품질의 문제는 대부분 치유가 불가능하다. 따라서 데이터 모델링을 할 때의 유의점은 다음과 같다.

⑴ 중복 (Duplication) : 데이터 모델은 같은 데이터를 사용하는 사람, 시간, 장소를 파악하는 데 도움을 준다. 이러한 지식의 응용은 데이터베이스가 여러 장소에 같은 정보를 저장하는 잘못을 하지 않도록 한다.

⑵ 비유연성 (Inflexibility) : 데이터 모델을 어떻게 설계했느냐에 따라 사소한 업무변화에도 데이터 모델이 수시로 변경됨으로써 유지보수의 어려움을 가중시킬 수 있다. 데이터의 정의를 데이터의 사용 프로세스와 분리함으로써 데이터 모델링은 데이터 혹은 프로세스의 작은 변화가 애플리케이션과 데이터베이스에 중대한 변화를 일으킬 수 있는 가능성을 줄인다.

⑶ 비일관성 (Inconsistency) : 데이터의 중복이 없더라도 비일관성은 발생한다. 예를 들어 신용 상태에 대한 갱신 없이 고객의 납부 이력 정보를 갱신하는 것이다. 개발자가 다른 데이터와 모순된다는 고려 없이 일련의 데이터를 수정할 수 있기 때문이다. 데이터 모델링을 할 때 데이터와 데이터간 상호 연관 관계에 대한 명확한 정의는 이러한 위험을 사전에 예방할 수 있도록 해준다.

4. 데이터 모델링의 3단계 진행

데이터베이스가 만들어지는 과정은 [그림 I-1-3]과 같이 시간에 따라 추상화 수준에 따라 개념적, 논리적, 물리적 데이터 모델로 정리할 수 있다.

sqld-1-1-3

개념적 데이터 모델은 추상화 수준이 높고 업무중심적이며 포괄적인 수준의 모델링을 진행한다. 엔터티 중심의 상위 수준 데이터 모델이 완성되면 업무의 구체적인 모습과 흐름에 따른 구체화 된 업무 중심의 논리적 데이터 모델링을 만들어 낸다. 이후 데이터의 저장구조에 따른 테이블 스페이스 등을 고려한 방식을 물리적 데이터 모델링이라고 한다.

sqld-i-1-1

1) 개념적 데이터 모델링 (Conceptual Data Modeling)

개념적 데이터베이스 설계(개념 데이터 모델링)는 조직, 사용자의 데이터 요구사항을 찾고 분석하는데서 시작한다. 이 단계의 주요한 활동은 핵심 엔터티와 그들 간의 관계를 발견하고, 그것을 표현하기 위해 엔터티-관계 다이어그램을 생성하는 것이다.

데이터 모델링 과정이 전 조직에 걸쳐 이루어진다면, 그것은 전사적 데이터 모델 (Enterprise Data Model) 이라고 불린다. 개념 데이터 모델을 통해 조직의 데이터 요구를 공식화하는 것은 두 가지의 중요한 기능을 지원한다.

첫째, 개념 데이터 모델은 사용자와 시스템 개발자가 데이터 요구 사항을 발견하는 것을 지원한다.
개념 데이터 모델은 추상적이다. 따라서 그 모델은 상위 문제에 대한 구조화를 쉽게 하며, 사용자와 개발자가 시스템 기능에 대해서 논의할 수 있는 기반을 형성한다.

둘째, 개념 데이터 모델은 현 시스템이 어떻게 변형되어야 하는가를 이해하는데 유용하다. 일반적으로 매우 간단하게 고립된 (Stand Alone) 시스템도 추상적 모델링을 통해 보다 쉽게 표현되고 설명된다.

2) 논리적 데이터 모델링 (Logical Data Modeling)

논리 데이터 모델링은 데이터베이스 설계 프로세스의 Input으로써 비즈니스 정보의 논리적인 구조와 규칙을 명확하게 표현하는 기법 또는 과정이라 할 수 있다. 논리적 모델은 데이터 모델링이 최종적으로 완료된 상태, 즉 물리적인 스키마 설계를 하기 전 단계의 데이터 모델 상태를 말한다.

논리적 데이터 모델링의 핵심은 어떻게, 누가 데이터에 엑세스하는가, 그리고 전산화와는 별개로 비즈니스 데이터에 존재하는 사실들을 인식하여 기록하는 것이다.

시스템 설계 과정에서 수행하는 또 한가지 중요한 활동은 정규화이다. 정규화는 논리 데이터 모델 상세화 과정의 대표적인 활동으로, 논리 데이터 모델의 일관성을 확보하고 중복을 제거하며 속성들이 가장 적절한 엔터티에 배치되도록 함으로써 보다 신뢰성 있는 데이터 구조를 얻는 데 목적이 있다.

논리 데이터 모델의 상세화는 식별자 확정, 정규화, M:M 관계 해소, 참조 무결성 규칙 정의 등이 있으며, 이력 관리에 대한 전략을 정의하여 이를 논리 데이터 모델에 반영함으로써 데이터 모델링을 완룧하게 된다.

3) 물리적 데이터 모델링 (Physical Data Modeling)

물리 데이터 모델링은 논리 데이터 모델이 데이터 저장소로서 어떻게 컴퓨터 하드웨어에 표현될 것인가를 다룬다. 데이터가 물리적으로 컴퓨터에 어떻게 저장될 것인가에 대한 정의를 물리적 스키마라고 한다.

이 단계에서는 테이블, 컬럼 등으로 표현되는 물리적인 저장 구조와 사용될 저장장치, 자료를 추출하기 위해 사용될 접근 방법 등이 결정된다. 계층적 데이터베이스 관리 시스템 환경에서는 데이터베이스 관리자가 물리적 스키마를 설계하고 구현하기 위해 보다 많은 시간을 투자하여야 한다.

5. 프로젝트 생명주기 (Life Cycle) 에서 데이터 모델링

Waterfall 기반에서는 데이터 모델링의 위치가 분석과 설계 단계로 구분되어 명확하게 정의할 수 있다. 분석단계에서 업무 중심의 논리적 데이터 모델링을 수행하고, 설계단계에서 하드웨어와 성능을 고려한 물리적 데이터 모델링을 수행하게 된다.

나선형모델에서는 업무 크기에 따라 논리적 데이터 모델과 물리적 데이터 모델이 분석, 설계 양쪽 단계에서 수행되며, 분석단계에서 논리적 데이터 모델이 더 많이 수행된다.

sqld-1-1-4

정보시스템 프로젝트는 데이터축과 애플리케이션축으로 구분되어 진행되면서 각각에 도출된 사항을 지속적인 상호 검증을 통해 단계별 완성도를 높이게 된다. 단, 객체지향 개념은 데이터와 프로세스를 한꺼번에 바라보며 모델링을 일체형으로 진행하게 된다.

6. 데이터 모델링에서 데이터 독립성의 이해

1) 데이터 독립성의 필요성

어떤 단위에 대해 독립적인 의미를 부여하고, 그것을 효과적으로 구현하게 되면 자신이 가지는 고유한 특징을 명확하게 할 뿐만 아니라 다른 기능의 변경으로부터 쉽게 영향을 받지 않고 자신의 고유한 기능을 가지고 제공하는 장점을 가지게 된다.
데이터 독립성은 지속적으로 증가하는 유지보수 비용을 절감하고, 데이터 복잡도를 낮추며 중복된 데이터를 줄이기 위한 목적이 있다. 또한 끊임없이 요구되는 사용자 요구사항에 대해 화면과 데이터베이스 간에 서로 독립성을 유지하기 위한 목적이 있다.

sqld-1-1-5

  • 데이터 독립성 확보의 효과
    – 각 View의 독립성을 유지하고, 계층별 View 에 영향을 주지 않고 변경이 가능하다.
    – 단계별 Schema 에 따라 데이터 정의어 (DDL) 와 데이터 조작어 (DML) 가 다름을 제공한다.

데이터 독립성은 3단계로 표현된 ANSI 표준 모델, 특히 3단계인 구조, 독립성, 사상(Mapping) 3가지를 이해하면 된다.

2) 데이터베이스 3단계 구조

데이터독립성 모델의 ANSI / SPARC 3단계 구성은 외부단계, 개념적 단계, 내부적 단계로 구성된 서로 간섭되지 않는 모델을 제시하고 있다.

sqld-1-1-6

3) 데이터 독립성 요소

데이터베이스 스키마 구조는 3단계로 구분되고, 각각은 상호 독립적인 의미를 가지고 고유한 기능을 가진다.

sqld-i-1-2

4) 두 영역의 데이터 독립성

3단계로 분리된 데이터의 독립성을 지정하는 용어가 논리적 독립성, 물리적 독립성이다.
논리적 데이터 독립성은 외부 변경에도 개념 스키마가 변하지 않는 특징을 가진다. 컬럼이 변형되더라도 개별 화면이나 프로세스에 의해 변화된다기 보다는 전체 업무적인 요건을 고려하여 종합적인 영향을 받는다.

sqld-i-1-3

5) 사상 (Mapping)

– 논리적 사상 : 통합된 개념적 스키마가 인터페이스와 연결
– 물리적 사상 : 통합된 개념적 스키마가 물리적 테이블 스페이스와 연결

sqld-i-1-4

7. 데이터 모델링의 중요한 세 가지 개념

1) 데이터 모델링의 세가지 요소

⑴ Things : 업무가 관여하는 어떤 것
⑵ Attributes : 어떤 것이 가지는 성격
⑶ Relationship : 업무가 관여하는 어떤 것 간의 관계

2) 단수와 집합 (복수) 의 명명

sqld-i-1-5

8. 데이터 모델링의 이해관계자

1) 이해관계자의 데이터 모델링 중요성 인식

실제 프로젝트에서는 DBA 보다 개발자가 데이터 모델링을 하게 된다. 데이터 모델링 과정은 업무를 이해하고 분석하여 표현하는 것이 중요하고, 이를 바탕으로 프로젝트 관련자와 의사소통하며 프로그램을 비교 검증하는 등 많은 시간을 업무 분석 및 설계에 할애하기 때문이다. DBA 는 정확한 모델링이 진행되도록 교육하고 제시하는 역할을 수행한다.
정보시스템의 핵심에 있는 데이터베이스의 설계가 잘못되면 모든 프로그램과 트랜잭션에 영향을 미치게 된다. Bachmann 은 ‘프로그래머는 데이터집합의 탐색자이다’ 라고 하였다. 그만큼 데이터에 대한 중요성을 높게 평가한 것이다.

sqld-1-1-7

2) 데이터 모델링의 이해관계자

아래 [그림 I-1-8] 처럼 프로잭트 개발자 뿐만 아니라 해당 업무 담당자도 데이터 모델링에 대한 지식을 어느정도 가지고 있어야 프로젝트 수행 중 의사소통을 잘 할 수 있고, 잘못된 해석으로 인한 위험을 줄일 수 있게 된다.

sqld-1-1-8

9. 데이터 모델의 표기법인 ERD의 이해

1) 데이터 모델 표기법

1976년 피터 첸이 Entity-Relation Model (E-R Model) 이라는 표기법을 만들었다. 엔터티를 사각형으로 표현하고, 관계를 마름모, 속성을 타원으로 표현하는 이 표기법은 데이터 모델링 이론에서 많이 활용된다. 실무에서는 IE (Information Engineering) 표기법을 가장 많이 사용한다.

sqld-i-1-6

2) ERD (Entity Relationship Diagram) 표기법을 이용한 모델링 방법

ERD 는 데이터의 흐름과 프로세스와의 연관성을 이야기하는 데 가장 중요한 표기법이자 산출물이다. 일정한 규칙을 지정하여 그림으로써 데이터 모델을 누구나 공통된 시각으로 파악할 수 있고, 의사소통을 원활하게 하는 장점이 있다.

ERD 작성하는 순서는 다음과 같다.

⑴ 엔터티를 그린다.
⑵ 엔터티를 적절하게 배치한다.
⑶ 엔터티 간 관계를 설정한다.
⑷ 관계명을 기술한다.
⑸ 관계의 참여도를 기술한다.
⑹ 관계의 필수 여부를 기술한다.

sqld-1-1-13

◇ 좋은 데이터 모델의 요소

1) 완전성 (Completeness)

업무에서 필요로 하는 모든 데이터가 데이터 모델에 정의되어 있어야 한다.

2) 중복배제 (Non-Redundancy)

하나의 데이터베이스 내에 동일한 사실은 반드시 한번만 기록하여야 한다.

3) 업무규칙 (Business Rules)

데이터 모델링 과정에서 도출되는 업무규칙을 데이터 모델에 표현하고, 이를 모든 사용자가 공유할 수 있도록 제공해야 한다. 이렇게 함으로써 모든 사용자가 해당 규칙에 대해 동일한 판단을 하고 데이터를 조작할 수 있게 된다.

4) 데이터 재사용 (Data Reusability)

데이터의 재사용성을 향상시키고자 한다면 데이터의 통합성과 독립성에 대해 충분히 고려하여야 한다. 데이터를 통합하여 데이터의 집합을 정의하고, 이를 데이터 모델로 잘 표현하여 활용한다면 업무 변화에 데이터 모델이 큰 영향을 받지 않고 운용할 수 있다.

5) 의사소통 (Communication)

데이터 모델의 역할 중에 중요한 것은 의사소통 역할이다. 데이터 모델은 업무를 분석하며 도출되는 업무 규칙들이 최대한 자세하게 표현되어야 한다. 이렇게 함으로써 업무 규칙들을 모든 사용자가 동일한 의미로 받아들이고, 정보 시스템을 활용할 수 있게 된다.

6) 통합성 (Integration)

가장 바람직한 데이터 구조의 형태는 동일한 데이터가 한번만 정의되고, 이를 여러 다른 영역에서 참조 및 활용하는 것이다. 이 공유 데이터에 대한 구조를 여러 업무 영역에서 공동으로 사용하기 용이하도록 정의해야 한다.