앞서 데이터 모델링이란 무엇인지에 대해서 가볍게 알아보는 시간을 가졌다. 이번 장에서는 실제 데이터 모델링을 수행하는 각 절차와 특징에 대해서 알아보도록 하자.
내용에 들어가기 전에, 데이터 모델링의 기본 절차를 짧게 알아보자.
🔑 일반적인 데이터 모델링 절차
: 개념 데이터 모델링 → 논리 데이터 모델링 → 물리 데이터 모델링
(1) 개념 데이터 모델링
- 시스템 엔터티 간의 Entity-Relationship Diagram을 작성하는 단계
- 추상적인 모델링을 진행하는 과정
(2) 논리 데이터 모델링
- 데이터 모델링의 최종 완성 단계로 정규화, 다대다 관계 해소 등의 작업을 수행하는 과정
- 앞서 추상적으로 정의했던 key, 속성, 관계 등을 정확히 표현한다.
(3) 물리 데이터 모델링
- 모델링 내용을 바탕으로 실제 데이터베이스를 설계하는 단계
- 모델링을 기준으로 스키마, 테이블, 컬럼 등을 생성
데이터 모델링은 위와 같이 3가지 단계로 설명할 수 있으나, 각 모델링 단계에서 어떤 업무까지만 해야한다고 명확하게 정의하진 않는다. 때로는 개념과 논리 데이터 모델링 과정을 합쳐서 논리 데이터 모델링 단계 하나만으로 정의하기도 한다. 그렇기 때문에 본인의 프로젝트 상황과 수준에 맞춰서 진행 과정을 정하면 되는 것이고, 우리는 각 단계의 이론적인 내용에 대해서 배워보자.
[Part1. 개념 데이터 모델링]
개념 데이터 모델링은 업무의 핵심 엔터티를 도출하고 그들간의 관계를 추상적으로 정의하는 단계이다.
1-1. 주제 영역 정의
- 조직이 사용하는 데이터의 최상위 집합을 주제 영역으로 정의하고, 주제 영역을 분해하면서 하위 수준의 주제 영역이나 엔터티를 도출한다.
- 주제 영역 정의를 통해 업무 범위에 대한 기준을 확보하며, 데이터 구성에 대한 청사진을 제공하게 된다.
1-2. 후보 엔터티 선정 및 분류
- 기존 시스템 관련 문서, 인터뷰, 현장 조사 등을 통해 주제 영역 내의 후보 엔터티를 선정한다.
- 후보 엔터티 선정시 여러 가지 분류 기준을 사용할 수 있다.
(1) 일반적인 엔터티 분류 기준
* 유형 엔터티 - 물리적으로 존재하는 대상 (ex. 고객, 상품)
* 활동 엔터티 - 사건에 대한 정보 (ex. 주문, 계약)
* 개념 엔터티 - 관리해야하는 무형의 개념 (ex. 계정과목, 성적)
(2) 모델 관점의 엔터티 분류 기준
* 독립 엔터티 - 인스턴스를 식별하기 위해 다른 인스턴스에 의존하지 않는 대상
* 종속 엔터티 - 인스턴스를 식별하기 위해 하나 이상의 다른 인스턴스에 의존하는 대상
(3) 발생 시점의 엔터티 분류 기준
* 키 엔터티- 자신의 부모를 가지지 않는 대상(=다른 엔터티 없이 정의할 수 있는 집합)
* 메인 엔터티 - (키 엔터티를 제외한 것중에서) 중심 업무에 해당하는 대상
* 액션 엔터티 - 키, 메인 엔터티를 제외한 나머지 대상
* ex) 키 엔터티(상품), 메인 엔터티(주문), 액션 엔터티(상세 주문 내역)
- 엔터티 후보 선정 시 유의사항
- 엔터티 후보 가능성이 있다면 우선 검토 대상에 올린 후 판단한다.
- 동의어처럼 보이더라도 배제하지 않고 검토 대상에 올린후, 동의어 통합 과정을 진행한다.
1-3. 관계 및 속성 정의
- 관계 정의
- 개체 또는 속성 간의 관계를 정의하며 대응하는 관계에 따라 일대일(1:1)/일대다(1:n)/다대다(n:m) 중 하나로 정의된다.
- 관계 명칭을 선정하는 기준
- 현업에서 사용하는 간결한 동사형을 관계명으로 선정하며, 현재 시제를 사용해야 한다.
- 두 엔터티 간의 업무적 연관성을 나타내는 이름을 부여해야 한다.
- 능동/수동형의 표현과 애매모호한 용어는 배제한다.
- 속성을 도출하는 방법
- 현행 시스템의 데이터 구조 및 프로세스에 대한 문서 자료를 참고한다.
- 현업에서 사용하는 장표 및 보고서를 수집하여 조사한다.
- 실제 현업 담당자와 협의를 통해 속성을 도출한다.
- 모든 인스턴스가 속성 값을 모두 가져야하는 경우에는 ‘필수 속성’으로 정의하고, 값을 가지지 않아도 될 경우에는 ‘선택적 속성’으로 정의한다.
- 속성 명칭을 선정하는 기준
- 유일한 복합 명사를 사용하며, 단수형의 명칭을 사용한다.
- 속성을 구성하는 단어와 용어에 대한 표준을 정의해둔다.
[Part2. 관계 데이터 모델 생성]
2-1. 관계 데이터 모델이란?
- 위에서 도출한 정보를 바탕으로 개념적 구조를 표현한 논리적 데이터 모델이다.
- 하나의 엔터티에 대한 데이터를 하나의 릴레이션(=2차원 테이블 구조)으로 표현한다.
※ 아래에서는 릴레이션과 테이블을 혼용해서 표현하겠다.
- 관계 데이터 모델의 기본 용어
고객아이디 CHAR(10) |
고객이름 CHAR(10) |
나이 CHAR(10) |
등급 CHAR(10) |
직업 CHAR(10) |
적립금 INT |
tistory | 유인석 | 25 | vip | 교사 | 2000 |
notion | 유인아 | 30 | gold | 회사원 | 1500 |
- 속성(attribute) : 릴레이션의 열(=column)을 의미 (ex. 고객아이디, 고객이름)
- 튜플(tuple) : 릴레이션의 행(=row)을 의미
- 도메인(domain) : 속성이 가질 수 있는 값의 집합으로 데이터 타입을 의미 (ex. CHAR(10), INT)
- 차수(degree) : 속성의 전체 개수를 의미 (ex. 위의 릴레이션의 차수는 6이다 ⇒ 6개의 속성을 가지므로)
- 카디널리티(cardinality) : 행의 전체 개수를 의미 (ex. 위의 릴레이션의 카디널리티 값은 2이다 ⇒ 2개의 행을 가지므로)
- 널(null) : 속성 값을 모르거나 해당되는 값이 없음을 표현
2-2. 식별자 확정
- 테이블 내의 각 인스턴스(=하나의 행)를 식별할 수 있게 만들어주는 속성을 식별자라고 정의하며, 일반적으로 아래와 같이 식별자를 구분하게 된다.
- 후보키(candidate key) → 테이블 내에서 유일성과 최소성을 만족하는 속성 또는 속성의 집합
- 기본키(primary key) → 후보키 중에서 튜플을 식별하기 위해 사용할 키
- 대체키(alternate key) → 후보키 중에서 기본키로 선택되지 못한 남은 키
- 외래키(foreign key) → 다른 테이블의 기본키를 참조하는 속성 또는 속성의 집합
2-3. 관계 데이터 모델의 제약조건
1. 무결성 제약조건(integrity constraint)
- 릴레이션 내의 데이터는 결함이 없이 정확하고 유효하게 유지되어야 한다.
2. 개체 무결성 제약조건(entity integrity constraint)
- 기본키(pk)를 구성하는 속성은 널(null) 값을 가질 수 없다.
3. 참조 무결성 제약조건(referential integrity constraint)
- 외래키(fk)는 기본키(pk)의 값을 참조하고 있어야 한다.
- 단, 외래키는 널(null) 값을 가질 수도 있다.
데이터 분야에 일을 하고 있다면 위에서 설명한 개념들을 한 번쯤은 들어봤을 것이다. 당연히 처음 들어본 사람이라면 개념적인 내용이 조금 딱딱하고 어렵게 들릴 수도 있다. 이러한 과정은 모델링의 예시를 찾아보거나 직접 간단한 모델링을 구현해보면서 이해해보는 것을 추천한다😄
다음장에서는 개념적 모델링 이후의 논리, 물리 데이터 모델링의 과정에 대해서 알아보도록 하자.
📘참고 서적: [데이터아키텍처 전문가 가이드]
한국데이터산업진흥원 지음
'[자격증] > DAsP(데이터아키텍처 준전문가)' 카테고리의 다른 글
[DAsP 한 권으로 끝내기] Chapter4.데이터 모델링 - (4) (0) | 2023.06.03 |
---|---|
[DAsP 한 권으로 끝내기] Chapter4.데이터 모델링 - (3) (0) | 2023.06.03 |
[DAsP 한 권으로 끝내기] Chapter4.데이터 모델링 - (1) (0) | 2023.06.03 |
[DAsP 한 권으로 끝내기] Chapter3.데이터 표준화 - (2) (0) | 2023.06.03 |
[DAsP 한 권으로 끝내기] Chapter3.데이터 표준화 - (1) (0) | 2023.06.03 |