DB/SQLD / / 2024. 4. 1. 15:30

SQLD (1) - 모델링이란?

1. 데이터 모델링이란?

  • 데이터 구조를 설계하는 과정입니다.
  • 이 과정에서 실제 세계의 정보를 어떻게 데이터로 표현할지 결정하는 과정입니다.
  • 주요 목적은 데이터의 저장, 검색, 업데이트를 효율적으로 만들기 위해서 데이터 간의 관계를 명확히 정의하고 구조화합니다.
  • 개념적 모델링, 논리적 모델링, 물리적 모델링 세 단계로 이루어집니다.

2. 모델링의 특징

  • 추상화 : 실제 세계의 정보를 일정한 형식으로 표현하는 것으로 아이디어나 개념을 간략하게 표현합니다.
  • 단순화 : 복잡한 실제 세계를 정해진 표기법으로 단순하고 쉽게 표현합니다.
  • 명확화 : 불분명함을 제거하고 명확하게 해석할 수 있도록 표현합니다.
  • 한마디로 데이터 모델링은 실제 세계를 단순하고 명확하게 표현 할 수 있도록 정해진 표기법과 일정한 형식으로 추상화한 것 입니다.

3. 모델링의 관점

데이터 관점 모델링

데이터 관점 모델링은 정보 시스템 내의 데이터 구조와 그 데이터가 서로 어떻게 연결되어 있는지에 초점을 맞춥니다. 이 모델링 방식은 데이터 엔티티(예: 사람, 장소, 사물)의 정의, 이들 엔티티 간의 관계, 그리고 각 엔티티가 가지고 있는 속성(예: 이름, 주소, 날짜 등)에 대해 심층적으로 탐구합니다. 데이터의 정확성, 일관성, 그리고 효율적인 저장 및 접근을 보장하는 것이 핵심 목표입니다. 이러한 모델링은 데이터베이스 설계, 데이터 관리 전략 수립, 그리고 정보 시스템의 데이터 요구 사항 분석에 필수적입니다.

예시: 도서관 시스템에서, '책'과 '저자'는 중요한 데이터 엔티티입니다. '책' 엔티티는 제목, 출판년도, 장르 등의 속성을 가지고, '저자' 엔티티는 이름, 국적, 출생년도 등의 속성을 가집니다. 이 두 엔티티는 '저술' 관계로 연결되어, 한 저자가 여러 책을 저술할 수 있으며, 한 책은 여러 저자에 의해 공동 저술될 수 있습니다. 이러한 모델링을 통해 도서관 시스템은 도서 검색, 저자별 도서 목록 생성 등의 기능을 효율적으로 수행할 수 있습니다.

프로세스 관점 모델링

프로세스 관점 모델링은 조직 내의 비즈니스 프로세스와 그 흐름에 초점을 맞춥니다. 이 방식은 프로세스의 각 단계, 그 단계들 사이의 전환, 그리고 각 단계에서 필요한 데이터와 활동에 대해 분석합니다. 프로세스의 효율성과 효과성을 개선하기 위한 목표로, 작업 흐름의 최적화, 불필요한 단계의 제거, 그리고 자원 배분의 효율화에 중점을 둡니다. 이 접근 방식에서 데이터는 프로세스 실행을 지원하는 중요한 자원으로 간주되며, 데이터의 관리와 흐름은 프로세스의 효율성을 높이는 수단으로 활용됩니다.

예시: 온라인 쇼핑몰에서 '주문 처리' 프로세스는 여러 단계로 구성됩니다: 고객이 상품을 선택, 장바구니에 추가, 결제 정보 입력, 결제 승인, 배송 준비, 배송 시작. 이 프로세스는 고객의 주문부터 제품의 배송까지의 흐름을 정의하며, 각 단계에서 필요한 데이터(예: 고객 정보, 주문 상세, 결제 정보)의 관리 방법을 설명합니다. 이 모델링을 통해 쇼핑몰은 주문 처리의 효율성을 개선하고 고객 만족도를 높일 수 있습니다.

데이터와 프로세스의 상관 관점 모델링

데이터와 프로세스의 상관 관점 모델링은 데이터와 비즈니스 프로세스 사이의 상호작용에 주목합니다. 이 접근 방식은 프로세스의 흐름과 그 프로세스를 통해 생성, 변경, 사용되는 데이터의 흐름을 동시에 고려하며, 두 요소 간의 의존성과 상호작용을 최적화하는 것을 목표로 합니다. 여기서 데이터와 프로세스는 서로를 지원하고 제약하는 관계에 있으며, 이러한 상호작용을 통해 전체 시스템의 효율성과 성능을 개선합니다. 이 방식에서는 프로세스 설계와 데이터 관리 전략이 서로 밀접하게 연결되며, 데이터의 정확성, 접근성, 그리고 일관성이 프로세스의 성공에 중요한 역할을 합니다.

예시: 병원 정보 시스템에서, '환자 진료' 프로세스는 환자 등록, 진단, 처방, 치료, 청구의 단계를 포함합니다. 이 과정에서 환자 정보(개인 정보, 의료 기록)는 각 단계에서 중요한 역할을 하며, 프로세스의 흐름에 따라 생성, 조회, 업데이트 됩니다. 진료 프로세스의 각 단계는 환자 데이터와 밀접하게 연결되어 있으며, 이 데이터의 정확성과 접근성은 환자 치료의 질과 효율성에 직접적인 영향을 미칩니다.

4. 모델링의 단계

개념적 데이터 모델링

개념적 데이터 모델링은 가장 높은 수준의 추상화를 제공합니다. 이 단계는 전체 시스템을 매우 높은 수준에서 바라보며, 데이터의 구조와 그 데이터 간의 기본적인 관계를 정의합니다.
  • 주요 초점: 시스템 내의 주요 엔티티(데이터 객체)와 이들 엔티티 간의 관계를 식별하고 정의합니다. 이 과정에서 구체적인 데이터 타입이나 길이, 데이터베이스 특정 기술은 고려되지 않습니다.
  • 목적: 비즈니스 요구사항을 반영하여 데이터의 고수준 구조를 이해하고, 시스템의 주요 데이터 객체 간의 관계를 명확히 합니다.
  • 예시: 대학 정보 시스템에서, '학생', '과목', '교수' 등이 주요 엔티티가 될 수 있으며, 이들 사이의 관계를 개념적으로 정의합니다.

논리적 데이터 모델링

논리적 데이터 모델링은 개념적 모델을 바탕으로 보다 구체적인 데이터 모델을 구성하는 단계입니다. 이 단계에서는 실제 데이터베이스 구현을 위한 구체적인 구조를 정의합니다.
  • 주요 초점: 엔티티의 속성(데이터 필드), 키(기본 키, 외래 키), 그리고 엔티티 간의 정확한 관계를 포함한 데이터 모델을 더욱 상세하게 정의합니다. 이 단계에서는 여전히 특정 데이터베이스 관리 시스템(DBMS)의 구현 사항에는 구애받지 않습니다.
  • 목적: 데이터 모델을 구체화하여 비즈니스 규칙을 정확히 반영하고, 데이터의 구조를 시스템의 요구사항에 맞게 조정합니다.
  • 예시: '학생' 엔티티에는 이름, 학번, 전공 등의 속성이 있으며, '과목'과 '학생' 사이의 수강 관계가 정의됩니다.

물리적 데이터 모델링

개념적 데이터 모델링은 가장 높은 수준의 추상화를 제공합니다. 이 단계는 전체 시스템을 매우 높은 수준에서 바라보며, 데이터의 구조와 그 데이터 간의 기본적인 관계를 정의합니다.
  • 주요 초점: 테이블 구조, 인덱스, 저장 프로시저, 접근 방식, 물리적 저장 위치 등 데이터베이스의 실제 구현에 관한 세부 사항을 결정합니다. 이 단계에서는 특정 데이터베이스 관리 시스템(DBMS)의 기능과 제약 사항을 고려하여, 데이터 모델을 효과적으로 구현하는 방법을 개발합니다.
  • 목적: 논리적 데이터 모델을 실제 데이터베이스 시스템에서 구현 가능하도록 변환하여, 데이터의 저장과 관리를 위한 물리적 구조를 설계합니다. 이 과정은 시스템의 성능 최적화, 데이터 관리의 효율성 증대, 그리고 데이터 접근 속도의 개선을 목표로 합니다.
  • 예시: '학생' 엔티티는 물리적 데이터 모델링 단계에서 특정 데이터베이스 시스템의 테이블로 구현됩니다. 예를 들어, MySQL을 사용할 경우, '학생' 테이블은 학번을 기본 키로 사용하여 생성되며, '과목' 테이블과는 외래 키를 통해 연결됩니다. 이 단계에서는 데이터베이스 성능을 최적화하기 위해 인덱스 생성, 쿼리 최적화, 스토리지 파티셔닝 등의 기술적 조치를 취할 수 있습니다.

요약

  • 개념적 데이터 모델링은 엔티티를 정의함에 있어 어떤 데이터를 가지고 어떤 상관 관계를 가지는게 좋을지에 대한 고민을 적용하는 단계
  • 논리적 데이터 모델링은 개념적 데이터 모델링은 보다 구체적으로 실제 데이터 베이스에서 어떤 데이터 타입과 연관관계 설정 및 키(기본키와 외래키 등)를 구체적으로 설정하는 단계
  • 물리적 데이터 모델링은 논리적 데이터 모델링을 바탕으로 사용할 데이터베이스의 특징에 따라 물리적으로 저장하거나 최적화하는 단계

5. 모델링의 독립성

데이터베이스 관리 시스템의 추상적인 설계 표준인 ANSI/SPARC은 데이터베이스 모델은 세 가지 추상화 레벨을 나타냅니다.

분리하는 목적은 데이터베이스에 대한 사용자들의 관점과 데이터베이스가 실제로 표현되는 물리적인 방식을 분리하기 위함입니다.

외부 스키마 (External Schema)

  • 정의: 사용자의 관점에서 데이터베이스를 보는 방법입니다. 각 사용자 그룹이나 개별 애플리케이션에 맞춤화된 뷰(View)를 제공합니다.
  • 목적: 다양한 사용자가 데이터를 다른 방식으로 보고 사용할 수 있도록 지원합니다. 예를 들어, 마케팅 부서와 인사 부서는 같은 데이터베이스에서 서로 다른 정보를 필요로 할 수 있습니다.
  • 예시: 웹 애플리케이션에서 고객 정보를 보는 뷰는 고객의 이름, 이메일 주소, 주문 이력을 포함할 수 있으며, 공급업체 정보를 보는 뷰는 공급업체의 이름, 주소, 공급 품목 등을 포함할 수 있습니다.

개념 스키마 (Conceptual Schema)

  • 정의: 조직 전체의 데이터베이스 구조와 정책을 기술하는 단계입니다. 모든 사용자의 데이터 요구 사항을 반영하여 데이터베이스의 전반적인 논리적 구조를 정의합니다.
  • 목적: 데이터베이스의 모든 데이터 객체, 데이터의 관계, 제약 조건, 접근 권한 등을 포괄적으로 정의하여 데이터의 논리적 구조를 제공합니다. 이는 데이터베이스의 설계와 구현에 있어 중추적인 역할을 합니다.
  • 대학 데이터베이스에서는 학생, 교수, 강좌, 부서 등의 엔티티와 이들 사이의 관계(예: 학생이 강좌를 수강한다)를 개념 스키마에서 정의합니다.

내부 스키마 (Internal Schema)

  • 정의: 데이터가 실제로 저장되는 방식을 설명하는 데이터베이스의 물리적 구조입니다.
  • 목적: 데이터의 실제 저장, 접근 방식, 최적화 방법 등을 정의하여 데이터베이스의 물리적 성능을 관리합니다. 데이터베이스 관리 시스템(DBMS)의 성능과 효율성을 최적화하는 데 필수적입니다.
  • 예시: 데이터를 저장하기 위한 테이블의 구조, 인덱싱 방법, 데이터 압축, 데이터의 물리적 위치 등을 내부 스키마에서 정의합니다.

요약

  • 외부 스키마는 사용자 인터페이스(UI)를 통해 데이터베이스 사용자나 애플리케이션에 제공되는 데이터의 맞춤형 뷰입니다. 이는 사용자가 데이터베이스와 상호작용하는 방식을 정의하며, 각 사용자 또는 애플리케이션에 맞춰 데이터를 다양한 형태로 표현합니다.
  • 개념 스키마는 조직의 모든 사용자 요구 사항을 반영한 데이터베이스의 전반적인 논리적 구조를 나타냅니다. 이는 데이터베이스 설계의 청사진으로서, 엔티티, 관계, 제약 조건 등을 포함하는 데이터베이스의 개념적 모델을 정의합니다. 개념적 데이터 모델링 단계에서 생성되며, ERD와 같은 도구로 시각화됩니다.
  • 내부 스키마는 데이터가 실제로 어떻게 저장될지, 데이터에 어떻게 접근하고 최적화할지에 관한 데이터베이스의 물리적 구조를 설명합니다. 이는 데이터의 저장 방식, 인덱싱 전략, 데이터 압축 등 물리적 데이터 모델링의 결정 사항을 포함합니다.

논리적 독립성

  • 논리적 독립성은 데이터베이스의 논리적 구조를 변경해도, 그 변경이 외부 스키마에 영향을 미치지 않도록 보장하는 성질입니다.
  • 데이터베이스의 논리적 구조(예: 테이블 구조, 엔티티 간의 관계)에 변경이 생겨도, 애플리케이션은 수정 없이 기존의 방식대로 데이터에 접근할 수 있습니다. 이는 개념 스키마와 외부 스키마 사이의 분리를 통해 달성됩니다.
  • 개념 스키마가 변경되어도, 이에 맞춰 외부 스키마(사용자 뷰)를 조정하여 사용자 인터페이스나 애플리케이션의 변경을 최소화할 수 있습니다. 개념 스키마의 변경이 외부 스키마에 자동으로 반영되도록 설계할 수 있으며, 이는 애플리케이션의 수정 없이 데이터 모델의 논리적 변경을 용이하게 합니다.

물리적 독립성

  • 물리적 독립성은 데이터베이스의 물리적 저장 구조(예: 파일 시스템, 저장 방식)를 변경해도, 그 변경이 논리적 구조나 애플리케이션에 영향을 미치지 않도록 보장하는 성질입니다.
  • 데이터의 물리적 저장 방식을 최적화하거나 변경해도, 개념 스키마와 외부 스키마는 그대로 유지됩니다.
  • 내부 스키마를 변경하더라도, 개념 스키마와 외부 스키마가 이러한 물리적 변화로부터 독립적이기 때문에, 사용자는 데이터베이스의 사용 방법을 변경하지 않고도 동일한 방식으로 데이터에 접근할 수 있습니다. 예를 들어, 데이터를 저장하는 물리적 장치를 변경하거나 데이터 액세스 방식을 최적화해도, 사용자의 쿼리나 애플리케이션 코드를 변경할 필요가 없습니다.

'DB > SQLD' 카테고리의 다른 글

SQLD (5) - 식별자란?  (0) 2024.04.19
SQLD (4) - 관계란?  (0) 2024.04.17
SQLD (3) - 속성이란?  (0) 2024.04.16
SQLD (2) - 엔티티란?  (0) 2024.04.06
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유