Programming

[SQLD] 1. 데이터 모델링의 이해

상상쓰 2022. 3. 8. 01:09

1. 데이터 모델링이란?

  • 업무정보를 구성하는 기초가 되는 정보들에 대해 일정한 표기법에 의해 표현함으로써 업무 내용을 정확하게 분석하는 것
  • 분석된 모델을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터관리에 사용하기 위한 것

2. 데이터 모델링 유의점

  • 중복 : 데이터베이스가 여러 장소에 같은 정보를 저장하는 잘못을 하지 않도록 한다.
  • 비유연성 : 데이터 모델링은 데이터 혹은 프로세스의 작은 변화가 애플리케이션과 데이터베이스에 중대한 변화를 일으킬 수 있는 가능성을 줄인다.
  • 비일관성 : 데이터간의 상호 연관관계를 명확하게 정의하여 일관성 있게 데이터가 유지되도록 한다.

3. 데이터 모델링 개념

  • 개념적 : 추상화 수준이 높고 업무중심적이고 포괄적인 수준의 모델링 진행, 전사적 데이터 모델링, EA수립시 많이 이용
  • 논리적 : 시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현, 재사용성이 높음
  • 물리적 : 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계

4. 데이터베이스 스키마

  • 외부스키마
  • 개념스키마 : 모든 사용자 관점을 통합한 조직 전체 관점의 통합적 표현, DB에 저장되는 데이터와 그들간의 관계를 표한하는 스키마
  • 내부스키마

5. ERD 작성 순서

  1. 엔터티를 그린다. 
  2. 엔터티를 적절하게 배치한다. (일반적으로 사람의 눈은 왼쪽에서 오른쪽, 위쪽에서 아래쪽으로 이동하는 경향이 있기 때문에 엔터티를 왼쪽 상단에 배치)
  3. 엔터티간 관계를 설정한다.
  4. 관계명을 기술한다.
  5. 관계의 참여도를 기술한다.
  6. 관계의 필수여부를 기술한다.

6. 엔터티의 특징

  • 유일한 식별자에 의해 식별이 가능
  • 영속적으로 존재하는 인스턴스의 집합('한 개'가 아니라 '두 개 이상')
  • 속성이 반드시 필요(속성 : 인스턴스에서 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위)
  • 다른 엔터티와 최소 한 개 이상의 관계가 필요(단, 통계성 엔터티나, 코드성 엔터티의 경우 관계를 생략)

7. 속성의 특성에 따른 분류

  • 기본속성
  • 설계속성
  • 파생속성

8. 데이터모델링의 관계

  • 관계는 존재에 의한 관계와 행위에 의한 관계로 구분될 수 있으나 ERD에서는 존재와 행위를 구분하지 않고 단일화된 표기법을 사용
  • UML에는 클래스다이어그램의 관계 중 연관관계와 의존관계가 있고 이것은 실선과 점선의 표기법으로 다르게 표현

9. 관계의 표기법

  • 관계법 : 관계의 이름
  • 관계차수 : 1:1, 1:M, M:N
  • 관계선택사양 : 필수관계, 선택관계

10. 식별자의 분류체계

  • 대표성 여부
    • 주식별자 : 타 엔터티와 참조관계를 연결할 수 있는 식별자(유일성, 최소성, 불변성, 존재성(Null 안됨))
    • 보조식별자 : 대표성을 가지지 못해 타 엔터티와 참조관계를 연결할 수 없는 식별자
  • 스스로 생성여부
    • 내부식별자 : 엔터티 내부에서 스스로 만들어지는 식별자
    • 외부식별자 : 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자
  • 속성의 수
    • 단일식별자 : 하나의 속성으로 구성된 식별자
    • 복합식별자 : 둘 이상의 속성으로 구성된 식별자
  • 대체 여부
    • 본질식별자 : 업무에 의해 만들어지는 식별자
    • 인조식별자 : 인위적으로 만든 식별자

11. 식별자와 비식별자관계 비교

  • 식별자 관계
    • 강한 연결관계 표현
    • 부모의 주식별자가 자식 주식별자의 구성에 포함됨
    • 실선 표현
    • 상속받은 주식별자속성을 타 엔터티에 이전 필요
  • 비식별자 관계
    • 약한 연결관계 표현
    • 부모의 주식별자가 자식 일반 속성에 포함됨
    • 점선 표현
    • 상속받은 주식별자속성을 타 엔터티에 차단 필요

12. 성능을 고려한 데이터 모델링의 순서

  • 데이터 모델링을 할 때 정규화를 정확하게 수행
  • 데이터베이스 용량산정을 수행
  • 데이터베이스에 발생되는 트랜잭션의 유형을 파악
  • 용량과 트랜잭션의 유형에 따라 반정규화를 수행
  • 이력모델의 조정, PK/FK조정, 슈퍼타입/서브타입 조정 등을 수행
  • 성능관점에서 데이터 모델을 검증

13. 정규화

  • 1차 정규화 : 도메인 값이 하나의 값을 갖도록 테이블을 분리(중복속성에 대한 분리)
  • 2차 정규화 : 완전 함수 종속을 만족하도록 테이블을 분리

14. 반정규화

  • 테이블병합
    • 1:1 관계 테이블병합
    • 1:M 관계 테이블병합
    • 슈퍼/서브타입 테이블병합
  • 테이블분할(파티셔닝)
    • 수직분할
    • 수평분할
  • 테이블추가
    • 중복테이블 추가
    • 통계테이블 추가
    • 이력테이블 추가
    • 부분테이블 추가
  • 칼럼의 반정규화
    • 중복칼럼 추가
    • 파생칼럼 추가
    • 이력테이블 칼럼추가
    • PK에 의한 칼럼 추가
    • 응용시스템 오작동을 위한 칼럼 추가

15. 분산 데이터베이스 장단점

  • 장점
    • 지역 자치성, 점증적 시스템 용량 확장
    • 신뢰성과 가용성
    • 효용성과 융통성
    • 빠른 응답 속도와 통시닙용 절감
    • 시스템 규모의 적절한 조절
  • 단점
    • 소프트웨어 개발 비용
    • 오류의 잠재성 증대
    • 설계, 관리의 복잡성
    • 불규칙한 응답 속도
    • 통제의 어려움
    • 데이터 무결성에 대한 위협