데이터 모델링은 현실 세계의 복잡한 업무 프로세스를 정보 시스템으로 구축하기 위해, 데이터의 구조와 관계를 체계적으로 정의하는 과정임. 건물의 설계도와 같이 시스템 개발의 근간을 이루며, 전체 시스템의 품질에 가장 큰 영향을 미침.
데이터 모델링은 복잡한 현실을 일정한 형식에 맞춰 표현하는 과정으로, 다음 세 가지 특징을 가짐.
좋은 데이터 모델은 다음 세 가지를 반드시 고려하여 설계해야 함.
| 유의점 | 설명 | 해결 방안 |
|---|---|---|
| 중복성 (Duplication) | 동일한 데이터가 여러 곳에 저장되어 데이터 불일치를 유발할 가능성. | 정규화(Normalization)를 통해 중복을 최소화하고 데이터를 원자적으로 관리함. |
| 비유연성 (Inflexibility) | 업무 변화에 대응하기 어려운 경직된 데이터 구조. | 핵심 데이터와 부가 데이터를 분리하고, 통합 가능한 구조로 설계하여 향후 확장에 유연하게 대처함. |
| 비일관성 (Inconsistency) | 데이터 간의 관계가 명확하지 않아 논리적으로 모순된 데이터가 발생하는 상태. | 참조 무결성(FK) 등 제약조건을 활용하여 데이터 간의 논리적 관계를 명확히 정의함. |
| 단계 | 목적 | 주요 활동 | 산출물 | 비유 |
|---|---|---|---|---|
| 개념적 모델링 | 업무의 핵심 개념과 관계를 추상적으로 정의 | - 핵심 엔터티 추출 - 엔터티 간 관계 정의 - 기술적 요소 배제 | 개념적 ERD | 아이디어 스케치 |
| 논리적 모델링 | 데이터베이스의 논리적 구조를 상세하게 설계 | - 모든 엔터티, 속성, 관계 정의 - 정규화(Normalization) 수행 - 식별자(PK, FK) 정의 | 논리적 ERD | 상세 설계도 |
| 물리적 모델링 | 논리적 모델을 실제 데이터베이스에 구현 | - 특정 DBMS에 맞는 테이블, 컬럼명 정의 - 데이터 타입( VARCHAR2, NUMBER) 정의- 인덱스, 제약조건 등 물리적 객체 설계 | 물리적 ERD, CREATE 스크립트 | 실제 건축/시공 |
데이터 모델링을 단계별로 나누는 주된 이유는 데이터 독립성을 확보하기 위함임. 데이터 독립성이란, 한 부분의 변경이 다른 부분에 미치는 영향을 최소화하는 것을 의미함.
| 스키마 | 설명 | 대응 모델링 단계 |
|---|---|---|
| 외부 스키마 (External Schema) | 개별 사용자나 응용 프로그램이 보는 관점의 데이터베이스. (View) | - |
| 개념 스키마 (Conceptual Schema) | 데이터베이스 전체의 논리적 구조와 관계를 정의. (전체 설계도) | 논리적 모델링 |
| 내부 스키마 (Internal Schema) | 데이터가 물리적 저장 장치에 어떻게 저장되는지를 정의. | 물리적 모델링 |
User 테이블에 phone_number 컬럼을 추가해도, 기존에 만들어 둔 사용자 조회 화면은 코드를 수정할 필요가 없음.| 요소 | 정의 | 특징 | 예시 (인스타그램) |
|---|---|---|---|
| 엔터티 (Entity) | 업무상 관리해야 할 정보의 대상 또는 의미 있는 명사. | - 2개 이상의 속성을 가짐 - 인스턴스(실제 데이터) 존재 - 다른 엔터티와 구별 가능 | User, Post, Comment |
| 속성 (Attribute) | 엔터티가 가지는 세부 정보. 더 이상 쪼갤 수 없는 최소 단위. | - 엔터티의 특징을 설명함 - 각 속성은 고유한 이름과 데이터 타입을 가짐 | User 엔터티의 user_id, name, email |
| 관계 (Relationship) | 엔터티 간의 의미 있는 연관성 또는 상호작용. | - 관계 차수(1:1, 1:N, N:M)와 선택성(필수/선택)을 가짐 | User는 Post를 '작성한다' (1:N) |