데이터베이스

데이터 모델링, 정규화

signal시노 2024. 8. 6. 12:54

데이터 모델링이란?

 

데이터 모델링(Data Modeling)은 데이터 구조와 관계를 정의하고 문서화하는 프로세스입니다. 이는 데이터베이스 설계의 중요한 단계로, 정보 시스템이 데이터를 효과적으로 저장, 관리, 검색할 수 있도록 합니다. 데이터 모델링의 주요 목적은 데이터베이스를 구현하기 전에 데이터의 구조를 명확하게 이해하고 이를 기반으로 데이터베이스를 설계하는 것입니다.

데이터 모델링은 여러 단계로 이루어지며, 각 단계마다 다루는 추상화 수준이 다릅니다:

  1. 개념적 데이터 모델링 (Conceptual Data Modeling):
    • 비즈니스 요구사항을 반영하여 데이터의 개념적 구조를 정의합니다.
    • 주로 ERD(Entity-Relationship Diagram) 같은 도구를 사용하여 엔티티(개체)와 그들 간의 관계를 나타냅니다.
    • 기술적인 세부 사항을 배제하고 비즈니스 관점에서 데이터를 표현합니다.
    • 예: 고객, 주문, 제품 같은 엔티티와 이들 간의 관계를 정의.
  2. 논리적 데이터 모델링 (Logical Data Modeling):
    • 개념적 모델을 바탕으로 데이터베이스의 논리적 구조를 정의합니다.
    • 테이블, 열(필드), 기본 키, 외래 키 등을 정의하여 데이터의 논리적 관계를 상세하게 기술합니다.
    • 데이터베이스의 특정 기술에 독립적인 모델로, 데이터의 정규화를 통해 중복을 최소화하고 일관성을 유지합니다.
    • 예: 고객 테이블, 주문 테이블, 제품 테이블과 이들 간의 외래 키 관계를 정의.
  3. 물리적 데이터 모델링 (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