티스토리 뷰
데이터 모델링이란
시스템을 구현하기 위해 데이터 관점으로 업무를 분석하는 기법이다.
이를 통해 약속된 표기법으로 표현하고 데이터베이스 구축을 위한 분석 및 설계의 근간이 된다.
대부분의 관계형 데이터베이스(RDBMS)는 데이터 모델링으로 정의된 데이터 모델(Data Model)을 기반으로 물리적 데이터베이스가 구축되고, SQL문으로 데이터가 입력, 수정, 삭제, 조회가 되고 있다.
데이터 모델의 기능과 중요성
데이터 모델링 과정을 통해 도출된 데이터 모델들은 다양한 기능을 제공한다.
명칭 | 설명 |
가시화 (Visualization) |
시스템의 목표, 용도, 모습을 사람이 보기 좋게 시각화한다. 이는 회의나 발표와 같은 정보 전달에 용이하다. ERD, UML, Flowchart 등이 있다. |
명세화 (Specification) |
시스템의 기능, 동작, 제약 조건 등을 명확히 기술하는 것이다. 개발, 구현, 테스트 등 가시화보다 깊은 영역의 정보를 전달한다. API 명세서, 요구사항 명세서, 스키마 정의 등이 있다. |
구조화된 틀 제공 (Structured framework) |
현실 정보를 정해진 규칙과 구조로 정리하여 표현한다. 이는 어떤 데이터를 어떻게 저장하고, 다른 데이터와 어떤 관계를 가질지 명확히 할 수 있게 한다. ERD 테이블 관계 정의, 스키마 구성, UML과 같다. |
문서화(Documentation) | 데이터 모델을 통해 시스템의 구조나 업무 규칙 등을 문서로 남긴다. 유지보수, 협업 등 다양한 작업에 기록물로 참고가 된다. 데이터 모델 명세서, 테이블 정의서, API 명세서와 연관된 DTO 정의 등이 있다. |
다각적 관점 제공 (Multiple persepctives) |
하나의 시스템을 다양한 수준과 관점(논리, 물리, 개념적)에서 표현하여 설계 목적에 따라 유연하게 접근하도록 해 준다. 엔티티들의 관계도, 테이블 구조, 실제 DBMS 스키마 등을 고려하게 해준다. 이로써 사용자, 설계사, DBA 모두 각자 역할에 맞는 관점으로 작업이 가능하다. |
상세 수준 표현 방법 제공 (Level of detail expression) |
시스템 설계의 복잡한 요소들을 단계별, 수준별 표현이 가능하다. 각 데이터 타입의 제약조건(Unique, FK, not null 등)이나 크기, 타입을 명확히 정의 가능하다. 정밀한 설계와 구현을 가능하게 하며 데이터 무결성과 정확성 확보에 필요하다. |
데이터 모델의 중요성
파급효과 (Leverage) |
비효율적인 데이터 설계는 개발/테스트/운영 과정에서 불필요한 시간과 인력이 낭비된다. |
복잡한 정보 간결화 (Conciseness) |
규모가 커질수록 생길 수 있는 복잡성을 명확하고 간결히 표현할 수 있다. |
데이터 품질 (Data quality) |
데이터 중복, 비유연성, 비일관성을 바로잡고 품질 저하를 예방한다. |
데이터 모델링의 3단계
현실 > 개념 구조 > 논리 구조 > 물리구조
현실의 정보가 DB로 구축되기 까지 "정보전략계획 > 분석 > 설계 > 개발 > 테스트 > 전환/이행"이라는 단계가 진행되고 이는 대략 3단계로 이루어진다.
명칭 | 설명 |
개념 데이터 모델링 | 시스템이 구현하려는 대상의 포괄적 정보를 모델링한다. 정보전략기획과 분석 단계 |
논리적 데이터 모델링 | 시스템이 구현하려는 업무를 만족하기 위한 속성, 관계, 키 등을 명확히 표현한다. 분석 단계 |
물리적 데이터 모델링 | 논리 데이터 모델을 기반으로 실제 DB를 구축하기 위한 성능, 저장공간 등 물리적 특성을 고려한 설계 단계이다. 설계 단계 |
데이터의 독립성
데이터의 계층 구조에서 독립성은 필수이다. 그래야 하위 단계 데이터 구조가 변경되어도 상위는 영향을 받지 않아 의도치 않은 오류를 범하지 않기 때문이다.
이는 유지보수 비용 감소, 데이터 중복 감소, 데이터 복잡도 감소, 요구사항 대응 상승 등을 기대할 수 있고, 각 View의 동립적 계층을 설계하고 단계별 스키마에 따라 다른 DDL과 DML 권한을 부여할 수 있다.
'Computer > SQL' 카테고리의 다른 글
[SQL] 테이블 데이터 조합 (Union, Join, Intersect, etc) (0) | 2025.05.10 |
---|---|
[SQLD] 데이터베이스의 구조 (0) | 2025.05.07 |
[SQLD] 모델링(Modeling)의 이해 (0) | 2025.05.05 |
[SQLD] 단기 특강 (0) | 2023.11.15 |
[SQL] SQL 문법 작성 순서 & 문장 작동 순서 (0) | 2023.11.12 |