본문 바로가기

데이터베이스/SQLD

[SQLD] 모델링

728x90

모델링의 중요성과 데이터 모델링의 이해

모델링은 현실 세계의 사물이나 개념을 간단하게 도식화하는 과정입니다. 이를 통해 복잡한 시스템이나 프로세스를 명확하게 이해하고, 설계, 개발, 유지보수를 효율적으로 할 수 있습니다. 모델링을 할 때는 일관된 표기법을 사용하는 것이 중요하며, 약속되지 않은 표기법은 모델링으로 인정받지 않습니다. 이제 모델링의 핵심 개념과 데이터 모델링의 단계, 그리고 유의사항에 대해 살펴보겠습니다.

모델링의 주요 특징

모델링에는 추상화, 단순화, 명료화의 세 가지 주요 특징이 있습니다.

  1. 추상화 (Abstraction):
    • 현실의 복잡한 사물을 중요한 특징만을 추려서 단순한 형태로 표현합니다. 예를 들어, 복잡한 건축 구조를 도식화할 때는 주요 구조물만을 강조하여 표현합니다.
  2. 단순화 (Simplification):
    • 사물의 본질적인 요소만을 간략하게 표현하여 이해를 돕습니다. 예를 들어, 복잡한 도시 교통망을 단순화하여 교통 흐름도를 작성합니다.
  3. 명료화 (Clarity):
    • 모델을 보는 사람이 혼동하지 않도록 명확하게 표현합니다. 불필요한 요소를 제거하고, 이해하기 쉬운 방식으로 도식화하는 것이 중요합니다.

데이터 모델링의 중요성

데이터 모델링의 정의

데이터 모델링은 데이터베이스를 설계할 때 사용되는 모델링 기법입니다. 이 과정은 데이터의 구조와 관계를 정의하여, 효율적인 데이터베이스를 구축하는 데 필수적입니다.

데이터 모델링의 3가지 유의사항

  1. 중복 최소화:
    • 동일한 정보를 여러 곳에 저장하지 않도록 주의합니다. 데이터의 중복 저장은 관리의 복잡성을 증가시킵니다.
  2. 비유연성 최소화:
    • 데이터 정의와 사용 프로세스를 분리하여, 데이터나 프로세스 변경이 응용 프로그램과 데이터베이스에 미치는 영향을 최소화합니다.
  3. 비일관성 최소화:
    • 데이터 간의 관계를 명확히 정의하여, 데이터의 일관성을 유지합니다. 예를 들어, 데이터 무결성을 위해 외래 키 제약조건을 활용합니다.

모델링의 관점

모델링은 다음의 세 가지 관점에서 접근할 수 있습니다.

  1. 데이터 관점:
    • 데이터 간의 관계를 집중적으로 분석합니다. 데이터의 구조와 상호 관계를 이해하는 정적 분석입니다.
  2. 프로세스 관점:
    • 업무의 흐름을 중심으로 분석합니다. 실제 업무 처리 과정을 분석하여 동적 분석을 수행합니다.
  3. 데이터-프로세스 상관 관점:
    • 데이터와 프로세스 간의 관계를 모델링하여 CRUD (Create, Read, Update, Delete) 분석을 수행합니다.

모델링의 단계

데이터 모델링은 세 단계로 나눌 수 있습니다.

  1. 개념적 데이터 모델링:
    • 가장 높은 수준의 추상화로, 엔터티와 속성을 정의합니다. 주로 EA(Enterprise Architecture) 수립에 사용됩니다.
  2. 논리적 데이터 모델링:
    • DBMS에 적용 가능한 수준으로, 키, 속성, 관계를 정의합니다. 정규화를 통해 데이터 중복을 최소화하고, 식별자를 도출합니다.
  3. 물리적 데이터 모델링:
    • 실제 DBMS의 성능, 보안, 가용성을 고려한 낮은 수준의 추상화입니다. 테이블, 인덱스, 뷰 등을 정의합니다. 성능 최적화를 위해 반정규화를 할 수 있습니다.

데이터 스키마 구조

데이터베이스 스키마는 다음의 세 가지 구조로 나뉩니다.

  1. 외부 스키마:
    • 사용자와 애플리케이션이 보는 데이터베이스의 뷰를 정의합니다. 여러 사용자 뷰를 제공합니다.
  2. 개념 스키마:
    • 설계자가 모든 사용자가 공유하는 데이터베이스의 구조를 통합하여 정의합니다. 전체 데이터베이스의 데이터와 관계를 설명합니다.
  3. 내부 스키마:
    • 개발자가 디스크와 메모리 등 실제 저장 구조를 정의합니다. 테이블, 컬럼, 인덱스 등을 설정하며 물리적 뷰를 제공합니다.
728x90

'데이터베이스 > SQLD' 카테고리의 다른 글

[SQLD] 서브 쿼리  (0) 2024.08.14
[SQLD] NULL 속성  (0) 2024.08.13
[SQLD] 트랜잭션  (1) 2024.08.02
[SQLD] 정규화  (1) 2024.07.30
[SQLD] Entity와 속성  (0) 2024.07.26