데이터 모델링이란?
데이터 모델링(Data Modeling)은 데이터 구조와 관계를 정의하고 문서화하는 프로세스입니다. 이는 데이터베이스 설계의 중요한 단계로, 정보 시스템이 데이터를 효과적으로 저장, 관리, 검색할 수 있도록 합니다. 데이터 모델링의 주요 목적은 데이터베이스를 구현하기 전에 데이터의 구조를 명확하게 이해하고 이를 기반으로 데이터베이스를 설계하는 것입니다.
데이터 모델링은 여러 단계로 이루어지며, 각 단계마다 다루는 추상화 수준이 다릅니다:
- 개념적 데이터 모델링 (Conceptual Data Modeling):
- 비즈니스 요구사항을 반영하여 데이터의 개념적 구조를 정의합니다.
- 주로 ERD(Entity-Relationship Diagram) 같은 도구를 사용하여 엔티티(개체)와 그들 간의 관계를 나타냅니다.
- 기술적인 세부 사항을 배제하고 비즈니스 관점에서 데이터를 표현합니다.
- 예: 고객, 주문, 제품 같은 엔티티와 이들 간의 관계를 정의.
- 논리적 데이터 모델링 (Logical Data Modeling):
- 개념적 모델을 바탕으로 데이터베이스의 논리적 구조를 정의합니다.
- 테이블, 열(필드), 기본 키, 외래 키 등을 정의하여 데이터의 논리적 관계를 상세하게 기술합니다.
- 데이터베이스의 특정 기술에 독립적인 모델로, 데이터의 정규화를 통해 중복을 최소화하고 일관성을 유지합니다.
- 예: 고객 테이블, 주문 테이블, 제품 테이블과 이들 간의 외래 키 관계를 정의.
- 물리적 데이터 모델링 (Physical Data Modeling):
- 논리적 모델을 바탕으로 실제 데이터베이스에 구현할 물리적 구조를 정의합니다.
- 데이터베이스의 특정 기술(예: MySQL, Oracle)에 맞춰 테이블 스키마, 인덱스, 파티션 등을 설계합니다.
- 성능, 저장 용량, 접근 방법 등을 고려하여 최적의 데이터 구조를 만듭니다.
- 예: 인덱스 설정, 데이터 타입 결정, 파티셔닝 전략 수립.
데이터 모델링의 중요성
- 명확한 데이터 구조: 데이터의 구조와 관계를 명확히 정의함으로써 데이터베이스의 일관성 및 무결성을 보장합니다.
- 효율적 데이터 관리: 데이터 모델을 통해 효율적인 데이터 저장 및 접근 방법을 설계할 수 있습니다.
- 비즈니스 요구사항 반영: 데이터 모델링은 비즈니스 요구사항을 데이터베이스 설계에 반영하여, 시스템이 실제 비즈니스 운영을 효과적으로 지원할 수 있도록 합니다.
- 변경 용이성: 데이터 모델을 통해 데이터베이스의 구조를 문서화하면, 변경 사항이 발생했을 때 영향 범위를 쉽게 파악하고 수정할 수 있습니다.
데이터 모델링은 데이터베이스 설계의 핵심 요소로, 잘 설계된 데이터 모델은 데이터베이스의 성능, 확장성, 유지 보수성에 큰 영향을 미칩니다.
라고 한다.
정규화는 크게 1, 2, 3 정규화 단계로 나누어져 있다.
쉽게 말하면 제 1 정규화는 한 데이터에 여러 정보가 들어가면 안된다.
예를 들어 수강 테이블이라 했을 때
id | 과목 | 이름 |
1 | 생활영어1 | 홍길동, 이무진 |
2 | 말과 글 | 홍길동 |
이름 컬럼에 홍길동, 이무진 두 개가 들어가선 안된다.
id | 과목 | 이름 |
1 | 생활영어1 | 홍길동 |
2 | 생활영어1 | 이무진 |
3 | 말과글 | 홍길동 |
이렇게 나눠주는 것이 제 1 정규화이다.
제 2 정규화는 1 정규화를 거친 테이블에서 완전 함수 종속으로 만드는 것이다.
완전 함수 종속은 일차 함수 그래프를 생각하면 된다.
'x값이 변함에 따라 y값이 변한다' 는 명제는 무조건 참이다.(일차 함수 그래프)
id를 x라고 했을 때 x 값이 변함에 따라 y값이 변해야 한다.
그러나 과목과 이름은 각각 id에 따라 변하는 것이 아니라 과목과 이름을 묶어서 변하게 된다.
그러므로 과목과 이름 테이블을 따로 만들면
과목테이블
id | 과목 | 이름 |
1 | 생활영어1 | 홍길동 |
2 | 생활영어1 | 이무진 |
3 | 말과글 | 홍길동 |
이 테이블에서
id | 과목_id |
1 | 1 |
2 | 2 |
3 | 3 |
으로 바꿔줄 수 있다.
다소 예시가 빈약하여 이상하게 느껴지지만 조금 더 복잡한 테이블에서 명확히 느낄 수 있다.
제 3 정규형은 제 2 정규화까지 거친 테이블의 이행 종속을 없애는 것이다.
즉, x -> y -> z 이면 안된다
과목테이블
id | 과목 | 이름 |
1 | 생활영어1 | 홍길동 |
2 | 생활영어1 | 이무진 |
3 | 말과글 | 홍길동 |
이 테이블에서 id는 과목과 이름을 결정하지만 과목 또한 이름을 결정한다.
예시에서는 제 2 정규화를 통해 제 3 정규화까지 된 것이다.
다음에 조금 더 복잡한 예시를 들고와보자.
'데이터베이스' 카테고리의 다른 글
데이터베이스 이름 규칙 (0) | 2024.07.31 |
---|