← 목록으로
✏️ Study

데이터베이스 설계 | 11. 데이터 모델링

2024년 5월 30일

1. 데이터베이스와 현실 설계

image.png

image.png

2. 데이터 모델의 개념

image.png

  • 데이터 모델 : 데이터를 설명하기 위한 개념 모음
  • 스키마 : 주어진 데이터 모델을 사용하여 특정 데이터 컬렉션에 대한 설명
  • 릴레이션의 모임 → 관계 데이터 베이스
  • 관계 데이터 모델
    • 릴레이션 : 기본적으로 행과 열이 있는 테이블, 모든 관계에는 열 또는 필드를 설명하는 스키마가 있다
  • 데이터 모델에 표시할 요소
    • 구조 : 논리적으로 표현된 개체 타입들 간의 관계, 데이터 구조 및 정적 성질을 표현
    • 연산 : 데이터 베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구
    • 제약 조건 : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건

3. 개체 타입과 관계 타입

  • 개체 타입(Entity Type) : 개체 이름과 속성(애트리뷰트)들로 정의됨
  • 개체 집합(Entity Set) : 특정 개체 타입에 대한 인스턴스 집합
  • 속성(애트리뷰트)의 종류
    • 단순 속성과 복합 속성
      • 복합 속성(Composite Attribute)
        • 몇 개의 기본적인 단순 속성들로 분해할 수 있는 속성
        • 사용자가 때로는 복합 속성을 하나의 단위로 사용하고, 때로는 그 부속 속성 값을 참조하는 경우에 유용
        • 복합 속성이 항상 전체로만 참조된다면 그것을 다시 부속 속성으로 분해할 필요 X
      • 다중 값 속성(Multivalued Attribute) : 관계 데이터 모델의 정규화된 릴레이션에서는 다중 값을 가지는 속성 허용 X
      • 저장 속성과 유도(파생) 속성
        • 유도(파생) 속성(Derived Attribute) : 다른 속성의 값으로부터 계산된 속성
          • 통계 관련 개체 경우에 이용되며, 일반 개체에서는 많이 사용 X
          • 유도 속성이 가지는 업무 로직을 기술하여 데이터의 정합성이 유지되어야 함
          • 단순 속성이 생성, 수정, 삭제될 때 유도 속성도 함께 고려해야 됨
          • 점선 타원으로 표현
      • 널 속성(Null Attribute) : 어떤 개체 인스턴스가 어느 특정 속성에 대한 값을 갖고 있지 않을 때 사용
        • 기본 키는 널 값 X ⇒ 개체 무결성
        • 널 값이 허용되는 경우
        • Not applicable
        • Unknown
          • Missing : 값이 존재하지만 누락인 경우
          • Not Known : 값이 존재하는지 모르는 경우

4. E-R 다이어그램과 E-R 모델

  • 관계 타입(Relationship Type)

    • 전체 참여(Total Participation) : A-B 관계에서 개체 집합 B의 모든 개체가 A-B 관계에 참여
    • 부분 참여(Partial Participation) : A-B 관계에서 개체 집합 B의 일부 개체가 A-B 관계에 참여
    • 특성 : 관계의 차수는 관계로 연결된 엔터티 타입들의 개수를 의미, 실세계에서 가장 흔한 관계는 2진 관계
    • 카디날리티 비율은 두 개의 엔터티 타입 간 관계에서 참여자의 수를 의미(1:1, 1:M, N:M)
  • E-R 다이어그램

    • 레이블(Label) : 관계의 사상, 원소 수를 표현(1:1, 1:M, N:M)

      image.png

  • E-R 모델 : 적은 노력으로 쉽게 배울 수 있고, 전문가가 아니어도 이해하기 쉬움

    • 자연어 보다 좀 더 정형적이고, 구현에 독립적
    • E-R 모델링은 데이터베이스 설계를 위한 그래픽 표기법
  • Entity

    image.png

    • 다른 개체와 구별할 수 있는 실제 개체
    • 개체는 일련의 속성을 사용하여 설명
    • 각 개체에는 키가 있고, 각 속성에는 도메인이 있다
  • Relationship

    • 두 개 이상의 엔티티 간의 연결, 관계도 속성을 가질 수 있다
    • 동일한 엔티티 집합이 다른 관계 집합에 참여할 수 있다

5. 제약조건

  • Key Constraints (부분 참여, 화살표 →)

  • Participation Constraints (Total, 전체 참여, 굵은 화살표 ⮕ 또는 이중 선 ⇒)

  • Weak Entities (partial key(부분 키 혹은 구별자), 점선으로 표시)

    • 약한 엔터티는 다른(소유자) 엔터티의 기본 키를 고려해야만 고유하게 식별할 수 있다
    • 약한 개체와 관계, 둘 사이의 링크는 굵은 선으로 표시
    • 약한 엔티티 집합은 관계 집합을 식별하는 데 전체 참여가 있어야 한다
  • IS-A Hierarchies (계층 구조, superclass- subclass relationship)

    • AIS-AB로 선언하면 모든 A 엔티티도 B 엔티티로 간주
    • 서브 클래스에 특정한 설명 속성을 추가
  • Specialization(위에서 아래) & Generalization(아래에서 위)

  • 까마귀 발(Crow-feet) 표기법

    image.png

6.객체 지향 데이터 모델

  • 객체(Object) : 현실 세계에 존재하는 개체를 추상적으로 표현한 것

  • 객체 식별자(OID : ObjectIdentifier) : 시스템 전체에서 유일하게 식별되며 객체에 접근하는 수단으로 이용

  • 속성(Attribute) : 사용자가 정의한 클래스만 아니라 해당 클래스의 하위 클래스도 도메인으로 정의할 수 있음

  • 메서드(Method) : 객체에 수행할 수 있는 연산(검색/추가/삭제/수정)

  • 클래스(Class) : 속성과 메서드를 공유하는 유사한 성질의 객체들을 하나로 그룹화한 것

  • 클래스계층(ClassHierarchy) : 상위 클래스와 하위 클래스 사이에 IS-A 관계가 성립

  • 상속(Inheritance) : 상위 클래스의 속성과 메서드를 모든 하위클래스에 물려주는 개념

    • 단일 상속 : 단 한 개의 상위 클래스로부터 속성과 메서드를 상속받는 것
    • 다중 상속 : 여러 개의 상위 클래스로부터 속성과 메서드를 상속받는 것
  • 복합 객체(CompositeObject)

    image.png

    • 시스템에서 기본으로 제공하지 않는 사용자 정의 클래스(팀)를 도메인으로 하는 속성(소속팀)을 가진 객체
    • 속성 값으로 다른 객체를 참조하며 IS-PART-OF 관계가 성립
  • 객체 지향 DB

    • 관계 DB(질의대상, 질의결과 ⇒ 릴레이션)와 달리 데이터 모델과 질의어는 표준화되지 X
    • 널리 사용되지 못하고 특수한 몇 몇 분야에서만 사용
    • 질의대상(클래스), 질의결과(클래스에속하는객체집합)
    • 객체 지향 프로그래밍 개념에 기반을 두고 데이터베이스의 기능을 추가하는 데 목적

7.객체 관계 데이터 모델

  • 추가된 데이터 유형을 처리하는 구조체
  • 튜플의 속성이 복잡한 유형을 가질 수 있도록 허용
  • 중첩 관계와 같은 비 원자적 값 포함
  • 기존 관계형 언어와의 상위 호환성 제공
  • 객체 관계 DB : 관계 데이터베이스에 기반을 두고 사용자가 더 풍부한 데이터 타입을 추가할 수 있도록 하는 데 목적

8. XML 데이터 모델

  • XML
    • 원래는 문서 마크업 언어로 고안
    • 새로운 태그를 지정하고 중첩된 태그 구조를 만들 수 있는 기능 덕분에 문서 뿐 아니라 데이터를 교환하는 데도 훌륭한 수단
  • XML 데이터 모델 : XML 문서/데이터의 구문 분석, 검색, 쿼리를 위한 다양한 도구를 사용
  • 데이터베이스 자동화 도구
    • DB 모델링 : 논리∙물리 데이터 모델 설계 무결(적합성) 검증(ex.Erwin,DA#)
      • 릴레이션 관계성 설정 및 적합성
      • 키(유일,참조키) 설계의 적정성
      • 성능을 고려한 데이터베이스 설계 여부
    • DB표준 : 데이터 표준 체계 수립 및 반영 여부 점검(ex. DBware, RDB Checker, Qaudit-DB®)
      • 메타 데이터 관리 체계 점검
      • 표준 단어∙도메인∙용어 반영 여부
      • 표준 코드 설계 및 적용 여부
      • 데이터 사전 표준 준수, 칼럼 정합성∙일치성 점검
    • DB 품질 : 데이터 통계적 분석 및 오류 추적(ex.spd+, SDQ, DQAnalyzer®)
      • 소스 데이터 상태 통계적 분석
      • 데이터 도메인 별 품질 상태 및 품질 오류 데이터 추출 reporting
    • DB 성능 및 튜닝 : 데이터베이스 성능 향상(ex. Orange)
      • DB 오브젝트 분석 및 악성 SQL 도출, 튜닝 점검