251002_SQLD_데이터 모델링

2025. 10. 2. 16:00TIL

1. 데이터와 데이터베이스

1) 데이터(Data)

데이터는 정보(information)이다. 다만 '저장이나 처리에 효율적인 형태로 변환된' 정보이다.

우리 주변의 모든 것들은, 정성화(qualify)와 정량화(quantify)를 통해 데이터가 될 수 있다.

 

2) 데이터베이스(Database, DB)와 DBMS

데이터베이스는 데이터를 잘 조직화(organization)해서 모아놓은 '데이터 모음집'이다.

데이터베이스와 상호작용을 통해 데이터를 관리하고 분석할 수 있는 소프트웨어를 DBMS(DataBase Management Software)라고 한다.

DBMS에는 ORACLE, MySQL, SQLite, MariaDB 등 다양한 종류가 있다.

※ SQL은 국제표준화기구(International Organization for Standardization, ISO)에서 정하는 표준이 있기 때문에,

   DBMS마다 기본 동작 원리는 같으나, 문법 등 세세한 부분에서 차이점이 있다.

(SQLD 자격증 시험은 ORACLE을 기준으로 출제된다.)

 

2. 데이터 모델링(Data Modeling)

1) 데이터 모델링의 정의와 기능

데이터 모델링은 '데이터'(data)를 기반으로 '현실 세계를 추상화해 표현'(modeling)하는 것이다.

IBM에서는 다음과 같이 데이터 모델링을 정의하고 있다.

Data modeling is the process of creating a visual representation of either a whole information system or parts of it to communicate connections between data points and structures.

( 데이터와 구조 간의 연결과 소통을 위해 전체 정보 시스템의 구조 혹은 일부분을 시각화한 표현을 만드는 과정. )

 

What Is Data Modeling? | IBM

Data modeling is the process of creating a visual representation of an information system to communicate connections between data points and structures.

www.ibm.com

<데이터 모델링의 정의>

  • 정보 시스템 구축을 위해 데이터 관점으로 업무를 분석하는 과정
  • 현실 세계의 데이터를 약속된 표기법에 의해 표현하는 과정
  • 데이터베이스를 구축하기 위한 분석 및 설계의 과정

<데이터 모델링의 기능>

시각화 시스템을 원하는 모습으로 시각화해 보여준다. (Visualization)
문서화 시스템의 구조와 행동을 문서화한다. (Documentation)
구체화 특정 목표에 따라 구체화된 상세 수준의 표현 방법을 제공한다. (Specification)
구조화된 틀 제공 시스템을 구축하는 구조화된 틀을 제공한다. (Structuralization)
다양한 관점 제공 특정 영역에 집중하기 위해 다른 영역의 세부사항은 숨기는 다양한 관점을 제공한다.
(Multi-points-of-view)

 

2) 데이터 모델링의 특징

 

특징 설명
추상화(Abstraction) 현실 세계를 일정한 형식에 맞추어 표현하는 것.
데이터를 크고 작은 기준으로 구분하고 나누는 과정을 반복하면서, 수많은 요소를 하나의 문장, 단어, 개념으로 통합하는 것.
단순화(Simplification) 복잡한 현실 세계를 약속된 규칙에 기반한 제한된 표기법이나 언어로 표현해 쉽게 이해할 수 있도록 하는 것.
명확화(Clarity) 대상에 대한 애매모호함을 제거하고 현상을 정확하게 기술하는 것.
데이터의 추상화, 단순화 과정에서 한 대상이 갖는 의미를 명확하게 기술하는 것.

 

3) 데이터 모델링의 단계

데이터 모델링 단계에 대한 설명. 출처 : https://alokai.com/blog/data-model

 

데이터 모델링 단계 설명
개념적 데이터 모델링
(Conceptual Data Modeling)
필요한 데이터의 요구사항을 찾고 분석하는 과정
중요한 부분을 위주로 모델링 수행
추상화 수준이 가장 높고, 업무 중심적인 모델링 단계
논리적 데이터 모델링
(Logical Data Modeling)
데이터의 논리적인 구조와 규칙을 명확하에 표현하는 과정
정규화(normalization, 데이터의 중복을 줄이고 무결성을 높이는 과정)를 통해 데이터 모델의 독립성을 확보함
물리적 데이터 모델링
(Physical Data Modeling)
논리적 데이터 모델을 DB로 실체화하는 과정
실제로 동작할 수 있는 DB 관리 시스템에 table, index 등을 생성함
성능, 보안, 가용성을 고려하여 시스템을 구축하는 단계

 

4) 데이터 모델링의 관점

데이터 모델링을 어떤 관점으로 수행하느냐에 따라, 데이터 / 프로세스 / 상관 관점으로 구분할 수 있다.

관점 설명
데이터 관점(What) 업무와 관련 있는 데이터의 모델링 방법을 생각하는 관점
프로세스 관점(How) 업무가 실제로 하는 일과, 무엇을 해야 하는지를 바탕으로 모델링 방법을 생각하는 관점
상관 관점(Intersection) 업무에 의해 데이터에 발생하는 변화를 바탕으로 모델링 방법을 생각하는 관점

 

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

1) 데이터 모델링의 중요성과 유의점

<데이터 모델링의 중요성>

파급효과(Leverage) 시스템 구축에서 데이터 모델 설계는 다른 어떤 설계 과정보다 큰 영향을 미친다.
간결한 표현(Conciseness) 데이터 모델은 시스템의 정보 요구 사항과 한계를 가장 명확하고 간결하게 표현하는 도구이다.
데이터 품질(Data Quality) 데이터의 품질을 높이기 위해 데이터의 중복, 비유연성, 비일관성을 줄인다.

 

<데이터 모델링 시 유의점>

중복(Duplication) DB 여러 곳에 같은 정보를 중복해서 저장하는 행위
비유연성(Inflexibility) 환경이 바뀌었을 때 기존 데이터 모델링을 사용하기 어렵게 설계하는 행위
비일관성(Inconsistency) 데이터 간의 연관관계를 명확히 정의하지 않아 DB의 신뢰성을 낮추는 행위

 

2) 프로젝트 생명주기(life cycle)에서의 데이터 모델링

프로젝트 생명주기는 프로젝트의 시작부터 완료에 이르기까지 거치는 일련의 단계를 의미하며, 크게 폭포수 모델(Waterfall)과 에자일 모델(Agile)이 있다. 폭포수 모델은 주로 프로젝트의 크기가 작고, 범위가 명확할 때 사용한다.

폭포수 모델과 에자일 모델의 차이점. 출처 : https://www.bairesdev.com/blog/agile-vs-waterfall/

폭포수 모델에서 데이터 모델링이 이루어지는 단계는 다음과 같다.

폭포수 모델 생명주기(Life Cycle) 데이터 모델링(이론) 데이터 모델링(실무)
계획 개념적 데이터 모델링  
분석 논리적 데이터 모델링 개념+논리적 데이터 모델링
설계 물리적 데이터 모델링 물리적 데이터 모델링

 

4. 3층 스키마 구조 (Three-level Schema Architecture)

1) 데이터 독립성

데이터 독립성은 사용자의 접근 유형에 따라 데이터 구성 방법이 영향을 받지 않아야 한다는 개념이다. 즉 DB의 구조가 변경되어도 사용자나 응용 프로그램에 영향이 없는 것을 의미한다.

데이터 독립성이 확보되면 유지보수 비용 감소, 유지보수 중복성 감소, 데이터 복잡도 감소, 요구사항 대응 속도 상승 등 다양한 장점이 있다.

 

2) 3층 스키마 (Three-level Schema)

3층 스키마는 데이터 독립성을 확보하기 위해 1978년 ANSI(American National Standards Institute, 미국표준협회)에서 제안한 표준 DB 모델이다. DB를 바라보는 3개의 계층(view, 사용자 / 설계자 / 개발자)의 관점에 따라 DB를 설명하고, 이들 간의 관계를 정리한 표준 모델이다.

3층 스키마에 대한 설명. 출처 : https://techfincast.in/three-schema-architecture-in-dbms/

※ View, schema, level 등은 모두 유사한 의미이다.

Schema 종류 내용 비고
외부 스키마
(External schema)
Sub 스키마 또는 view 스키마라고 불림
화면에서 사용자가 실제로 보는 DB 스키마
사용자가 관심 있는 DB 부분만 보여주고 나머지는 숨김
사용자 관점
개념 스키마
(Conceptual schema)
모든 사용자 관점, 사용자들이 필요로 하는 데이터, 애플리케이션을 통합해 조직 전체의 DB를 기술하는 것
DB의 전체적인 구조와 관계에 집중하고 나머지는 숨김
논리적 단계
통합(설계자) 관점
내부 스키마
(Internal schema)
DB의 물리적 저장 형식과 구조를 보여주는 스키마
실제 데이터가 어떻게 저장되는지 보여줌
물리적 단계
개발자 관점

 

이때 하위 레벨의 스키마를 변경하더라도 상위 레벨의 스키마에 영향을 미치지 않는 것을 데이터 독립성(data independence)이라 하며, 각각 논리적 독립성(외부 vs 개념)과 물리적 독립성(개념 vs 내부)으로 구분한다.

독립성의 종류 내용 특징
논리적 독립성 개념 스키마가 변경되어도 외부 스키마에 영향이 없는 것
논리적 구조가 변경되어도 응용 프로그램에 영향이 없는 것
사용자 특성에 맞게 논리적 구조를 변경할 수 있다.
통합 구조로 변경 가능하다.
물리적 독립성 내부 스키마가 변경되어도 외부/개념 스키마에 영향이 없는 것
저장 장치의 구조 변경이 응용 프로그램과 개념 스키마에 영향을 주지 않음
물리적 구조의 영향 없이 개념 구조를 변경할 수 있다.
개념 구조의 영향 없이 물리적 구조를 변경할 수 있다.

이때 각 스키마 간의 요청과 응답을 전송해주는 프로세스를 사상(mapping)이라 한다.

 

5. 데이터 모델링의 요소와 ERD

1) 데이터 모델링의 3요소

요소 설명 예시
엔터티 (Entity) 데이터 모델링에서 사용되는 하나의 대상이나 객체 사람(개인)
성격 (Attribute) Entity가 지닐 수 있는 여러 가지 특징 개인의 키, 몸무게 등
관계 (Relationship) Entity와 entity 간의 연관성 개인과 개인의 관계

 

2) ERD (Entity Relationship Diagram)

ERD : 엔터티 간의 관계를 이해하기 쉽게 도식화한 다이어그램. 데이터의 흐름과 프로세스의 연관성을 파악하는 데 매우 중요하다.

ERD를 작성하는 프로세스는 다음과 같다.

Entity 그리기 → Entity 배치(중심 entity를 좌상단 혹은 중앙 배치) → Entity 간의 관계 설정 → 관계명 기술

→ 관계의 참여도 기술(참여도 : 특정 entity와 다른 entity 간의 관계의 수) → 관계의 필수 여부 기술

대표적인 ERD 표기법은 IE 표기법(Information Engineering)과 Barker 표기법이 있다.

IE/Crow's foot 표기법을 이용한 ERD의 예시. 출처 : https://softwareengineering.stackexchange.com/questions/455547/one-and-only-one-vs-one-in-crows-foot-notation
Barker's noattion을 이용한 ERD의 예시. 출처 : https://vertabelo.com/blog/barkers-erd-notation/

 

3) 좋은 데이터 모델의 요소

좋은 데이터 모델을 평가하는 절대적인 기준은 없으나, 전반적인 상황에서 좋은 데이터 모델로 평가할 수 있는 요소들은 다음과 같다.

요소 특징
완전성(Completeness) 필요로 하는 모든 데이터가 데이터 모델에 정의되어 있어야 한다.
중복 제재(Non-Redundancy) 하나의 DB 내에 동일한 정보는 한 번만 기록되어 있어야 한다.
업무 규칙(Business Rules) 데이터 모델링 과정에서 도출, 규명된 업무 규칙들을 데이터 모델에 표현하고, 모든 사용자와 이를 공유할 수 있어야 한다.
데이터 재사용(Data Reusability) 데이터는 언제든 재사용 가능한 형태로 가공, 보관되어야 한다.
의사소통(Communication) 데이터 모델을 통해 업무 구성원 간의 의사소통이 원활해져야 한다.
통합성(Integration) 동일한 데이터는 한 조직 내에서 한 번만 정의되고, 이를 조직 내 여러 영역에서 다양하게 사용할 수 있어야 한다.