Post

[데이터베이스] 데이터모델링

데이터모델링

데이터모델링의 특징

  • 추상화(Abstraction)
    • 복잡한 현실에서 핵심적인 개념이나 원리를 추출하고 일반화하여, 더 단순한 형태로 표현한다.
  • 단순화(Simplification)
    • 복잡한 정보나 과정을 더 쉽게 이해하고 관리할 수 있도록 한다.
  • 명확화 (Clarification) 또는 정확화 (Precision)
    • 정보나 지시 사항의 애매모호함을 제거하여, 오해의 여지를 줄이고 명확한 이해를 도모한다.

데이터모델링 3요소

  • 개체(Entity)
    • 정의: 개체는 실세계에서 구별 가능한 개체나 사물
    • 예시: ‘학생’, ‘교수’, ‘과목’
    • 특징: 각 개체는 고유한 특성을 가지며, 이를 통해 다른 개체와 구별된다. 개체는 하나 이상의 속성을 가질 수 있으며, 이 속성들은 개체의 특성을 나타낸다.
  • 속성(Attribute)
    • 정의: 속성은 개체의 성질, 특성 또는 상태를 설명하는 데이터
    • 예시: ‘학생’ 개체의 속성으로 ‘학번’, ‘이름’, ‘전공’ 등
    • 특징: 속성은 개체를 더 구체적으로 설명하며, 데이터베이스에서는 개체의 속성이 테이블의 컬럼으로 표현된다. 각 속성은 개체 내에서 고유한 값을 가지거나, 값의 집합을 가질 수 있다.
  • 관계(Relationship)
    • 정의: 관계는 두 개 이상의 개체 간의 연관성이나 상호 작용
    • 예시: ‘학생’과 ‘과목’ 사이의 ‘수강’ 관계는 학생이 어떤 과목을 수강하고 있는지를 나타낸다.
    • 특징: 관계는 개체들 사이의 연결을 통해 데이터 모델의 복잡성을 관리하고, 실세계의 관계를 데이터베이스 내에서 구현한다. 관계는 ‘1:1’, ‘1:N’, ‘N:M’과 같이 다양한 형태를 가질 수 있으며, 이를 통해 데이터 간의 다양한 상호작용을 표현할 수 있다.

데이터모델링

  • 개념적 모델링
    • 정의: 가장 높은 수준의 추상화를 제공하는 모델링 단계로, 전체 시스템에 대한 개괄적인 뷰를 제공한다. 주요 엔티티(데이터 객체)들과 그들 간의 관계를 식별한다.
    • 목적: 주요한 비즈니스 규칙을 정의하고, 시스템의 주요 엔티티와 그 관계를 이해하는 데 초점을 맞춘다. 이 단계는 기술적인 세부 사항보다는 비즈니스의 요구사항과 목표를 반영한다.
    • 도구: 개념적 데이터 모델은 일반적으로 엔티티-관계 다이어그램(ERD)을 사용하여 표현한다.
  • 논리적 모델링
    • 정의: 개념적 모델을 기반으로 하여, 데이터 모델을 더욱 구체화하는 단계이다. 데이터 모델을 특정 데이터베이스 관리 시스템(DBMS)에 독립적인 형태로 표현한다.
    • 목적: 엔티티의 속성(데이터 필드)을 정의하고, 엔티티 간의 관계를 명확하게 표현한다. 또한, 데이터의 유형, 길이, 제약 조건 등을 정의한다. 재사용성이 높다.
    • 도구: 논리적 데이터 모델은 종종 정규화 과정을 통해 개발되며, 관계형 스키마나 다른 형태의 스키마로 표현될 수 있다.
  • 물리적 모델링
    • 정의: 데이터 모델이 실제 데이터베이스 시스템에서 어떻게 구현될지를 정의하는 단계이다. 특정 DBMS의 기능과 제한을 고려하여 데이터 모델을 최적화한다.
    • 목적: 테이블, 인덱스, 접근 경로 등의 물리적 구조를 설계하여, 데이터의 저장 방식과 데이터베이스의 성능을 최적화한다.
    • 도구: 물리적 데이터 모델은 특정 DBMS에 의존적이며, 데이터 파일의 구조, 인덱스 구조, 테이블의 파티셔닝, 데이터 액세스 방법 등을 포함한다.

데이터베이스 3단계 구조

  • 외부 스키마: 사용자나 응용 프로그램이 데이터를 보는 방식을 정의하는 수준
  • 개념 스키마: 데이터베이스의 전체적인 논리적 구조와 정책을 정의하는 수준
  • 내부 스키마: 데이터가 실제로 물리적인 저장소에 어떻게 저장되는지를 정의하는 수준

엔터티(Entity), 인스턴스(Instance), 속성(Attribute)

ERD(Entity Relational Diagram)

  • 데이터 모델 표기법
  • 엔터티를 사각형, 관계를 마름보, 속성을 타원형으로 표현한다.

관계의 표기법

  • 관계명(Membership)

    • 엔터티간 관계에 맺어진 형태
  • 관계차수(Cardinality/Degree)

    • 두 엔터티간의 관계에서 수행되는 경우의 수 Cardinality
  • 관계선택사양(Optionality)

    • 특정 엔티티가 다른 엔티티와의 관계에서 필수적으로 참여해야 하는지, 아니면 선택적으로 참여할 수 있는지를 나타냄
    • 두 가지 유형

      • 필수적 참여 (Mandatory Participation): 한 엔티티는 다른 엔티티와의 관계에서 반드시 존재해야 한다. 예를 들어, “모든 주문은 고객에 의해 이루어져야 한다”는 관계에서, 주문 엔티티는 고객 엔티티와의 관계에서 필수적으로 참여해야 한다. 즉, 주문이 존재하기 위해서는 반드시 하나의 고객이 연결되어 있어야 한다.

      • 선택적 참여 (Optional Participation): 한 엔티티는 다른 엔티티와의 관계에 선택적으로 참여할 수 있다. 예를 들어, “직원은 부서에 속할 수도 있고, 그렇지 않을 수도 있다”는 관계에서, 직원 엔티티는 부서 엔티티와의 관계에서 선택적으로 참여할 수 있다. 즉, 부서에 속하지 않는 직원이 존재할 수 있다.

식별자(Identifier)

  • 엔티티 내의 인스턴스(또는 레코드)를 고유하게 식별하는 데 사용되는 속성(또는 속성의 집합)

  • 분류

    1. 주식별자 (Primary Identifier)
      • 정의: 엔티티 내의 각 인스턴스를 유일하게 식별하는 속성
      • 특성: 고유성과 최소성을 만족해야 하며, 변경되지 않는 값. 각 엔티티는 하나의 주식별자를 가진다.
    2. 보조식별자 (Alternate Identifier)
      • 정의: 주식별자 외에 엔티티를 식별할 수 있는 다른 속성 또는 속성의 집합
      • 특성: 고유성을 만족하지만, 주식별자로 선택되지 않은 속성
    3. 내부식별자 (Internal Identifier)
      • 정의: 엔티티 내부에서만 의미를 가지는 식별자
      • 특성: 주로 엔티티 내의 고유한 값을 생성하기 위해 내부적으로 사용
    4. 외부식별자 (External Identifier)
      • 정의: 엔티티 외부의 시스템이나 프로세스에서 엔티티를 식별하는 데 사용되는 식별자
      • 특성: 다른 시스템에서 엔티티를 참조하거나 식별할 때 사용
    5. 단일식별자 (Single Attribute Identifier)
      • 정의: 단 하나의 속성으로 구성된 식별자
      • 특성: 간단하고 명확한 식별 방법을 제공
    6. 복합식별자 (Composite Identifier)
      • 정의: 두 개 이상의 속성을 결합하여 만든 식별자
      • 특성: 단일 속성만으로는 고유성을 확보할 수 없을 때 사용
    7. 본질식별자/자연식별자 (Natural Identifier)
      • 정의: 엔티티의 본질적인 속성으로 구성된 식별자
      • 예시: 주민등록번호
      • 특성: 엔티티에 자연스럽게 존재하는 속성을 사용
    8. 인조식별자 (Artificial Identifier or Surrogate Identifier)
      • 정의: 엔티티의 식별을 위해 인위적으로 생성된 속성
      • 특성: 엔티티의 본질적인 속성과는 관련이 없으며, 단순히 식별 목적으로만 사용
  • 주식별자의 특징

    • 유일성: 주식별자로 엔터티 내의 모든 인스턴스들을 유일하게 구분
    • 최소성: 주식별자를 구성하는 속성의 수가 유일성을 만족하는 최소의 수
    • 불변성: 주식별자가 지정되면 그 값이 변하지 않아야 한다.
    • 존재성: 반드시 데이터 값이 존재해야 한다.

정규화(Normalization)

반정규화(Denormalization)

개념

  • 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 의도적으로 정규화 원칙을 위배하는 행위
  • 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로 이루어질 수 있다.
  • 정규화된 엔터티, 속성, 관계에 대해 이루어진다.

특징

  • 반정규화는 데이터 무결성을 해칠 수 있다.
  • 과도한 반정규화는 오히려 성능을 저하시킬 수 있다.
  • 반정규화 방법에는 테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가 등이 있다.
This post is licensed under CC BY 4.0 by the author.