SQL 데이터 모델링 기본 개념

김혁준·2024년 5월 6일

SQLD

목록 보기
6/6

목차
1. 데이터 모델
2. 엔티티
3. 속성
4. 관계
5. 식별자
6. 성능 데이터모델링과 정규화

1. 데이터 모델

  • 데이터 모델링은 현실세계를 단순화하여 표현하는 기법
  • 특징 : 추상화("간략하게" 표현), 단순화(제한된 표기법이나 언어로 표현), 명학화(애매모호함을 제거하고 정확하게 현상을 기술)
  • 목적 : 업무 내용 분석, 실제 db 생성하여 개발 및 데이터 관리에 사용
  • 모델링의 3가지 관점 : 데이터 관점(업무가 어떤 데이터와 관련이 있는지), 프로세스 관점(업무가 실제로 처리하고 있는 일이 무엇인지), 상관 관점(프로세스에 따라 데이터가 어떻게 영향을 받는지)
  • 파급효과 : 데이터 모델링을 변경시 영향이 크다. 설계과정부터 제대로 해야한다.
  • 복잡한 요구 사항의 간결한 표현 : 많은 관련자가 있음에도 불구하고 데이터 정합성을 유지하자
  • 데이터 품질 : 데이터는 중요한 자산. 비즈니스 정의가 불충분하면 품질이 떨어진다.
  • 유의점 : 같은 데이터를 중복 저장하지 말자. 어플의 사소한 변경에도 데이터 모델이 자주 바뀌면 안된다. 데이터 모델과 프로세스를 분리하자. 데이터 간의 연관 관계에 대해 명확하게 정의하자.
  • 데이터 모델링의 3가지 단계 : 개념적(추상화 수준 높고 포괄적임. 전사적관점), 논리적(key, 속성, 관계를 정확히 표현한다. 재사용성을 높인다.), 물리적(성능등의 물리적인 성격을 고려해서 실제 db로 작동하도록 설계하자)
  • 데이터 모델링의 세가지 개념 : 엔티티, 속성, 내부스키마
  • 데이터베이스의 3단계 구조 : 외부스키마(사용자관점으로 구성, 개개인별), 개념스키마(통합관점으로 조직 전체에서 보는 구조), 내부스키마(데이터베이스의 물리적인 저장구조로 데이터가 실제로 저장되는 방법을 표현)
    - 독립성을 가져야한다 : 외부(was) - 개념 - 내부 구조에서 개념 스키마가 바뀌어도 외부 스키마는 바뀌지 않도록 논리적 독립성을 가져야하고 내부 스키마가 변경 되어도 외부,개념 스키마는 바뀌지 않아야 한다.

2. 엔티티

  • 엔티티는 인스턴스(행)의 집합.
  • 엔티티는 개념등의 명사에 해당한다.
  • 엔티티의 특징 : 필요한 정보여야 한다. 유일한 식별자에 의해 식별이 가능해야 한다. 반드시 두개 이상의 인스턴스의 집합이어야 한다. 반드시 속성이 2개 이상이어야 한다. 다른 엔티티와 최소 한 개 이상의 관계가 있어야 한다.
  • 유형 엔티티는 물리적인 형태이고 개념 엔티티는 물리적인 형태는 아니고 관리해야 할 개념적 정보. 사건 엔티티는 업무를 수행하면서 발생한다.
  • 기본 엔티티는 독립적으로 생성. 중심 엔티티는 기본 엔티티로부터 발생하며 업무의 중심 역할. 행위 엔티티는 두개 이상의 부모 엔티티로부터 발생하고 자주 내용이 바뀌거나 데이터 양이 증가된다.

3. 속성

  • 속성은 더이상 분리되지 않는 최소의 데이터 단위이다. 컬럼임
  • 한개의 엔티티는 2개 이상의 인스턴스 집합을 가지고 마찬가지로 2개 이상의 속성을 가진다. 한개의 속성은 한개의 속성값을 가진다.
  • 기본속성은 업무 분석을 통해 바로 정의한 속성이고 설계 속성은 업무상 존재하지 않지만 설계에서 도출한 속성이고 파생속성은 다른 속성으로부터 업무를 진행함에 따라 생긴 속성이다.

4. 관계

  • 관계는 인스턴스 사이의 논리적인 연관성으로서 조냊 또는 행위로서 서로에게 연관성이 부여된 상태이다.
  • 두 엔티티 사이 관심있는 연관 규칙이 있는지, 정보의 조합이 발생하는지, 연결을 가능하게 하는 동사가 있는지, 연결을 가능하게 하는 규칙이 서술되어있는지를 관계 도출시 생각하자
  • ERD 다이어그램 작성 순서 : 엔티티 도출, 엔티티 배치, 엔티티 관계 설정, 관계명 기입, 관계 참여도 기입, 관계 필수/선택 여부 기입
  • 식별자는 부모 엔티티의 식별자가 자식 엔티티의 주 식별자가 되는것. 비식별자는 부모 엔티티의 식별자가 자식 엔티티의 일반 속성이 되는것.
  • ERD 작성시 점선이면 약한 연결관계, 실선이면 강한 연결관계(부모 엔티티에 의해 생성됨)

5. 식별자

  • 하나의 엔티티는 반드시 하나의 유일한 식별자가 존재해야 한다.
  • 특징 : 유일성(모든 인스턴스를 유일 구분), 최소성(주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수), 불변성(식별자의 값은 변하지 않아야 함), 존재성(식별자는 반드시 데이터값이 존재해야 한다)
  • 단일 식별자는 주 식별자가 1개의 속성. 복합 식별자는 주 식별자가 2개 이상의 속성으로 구성.
  • 내부 식별자는 내부에서 스스로 생성. 외부 식별자는 다른 엔티티에서 온 식별자
  • 원조 식별자는 업무에 의해 만들어지는 식별자. 인조 식별자는 인위적으로 만들어지는 식별자

6. 성능 데이터모델링과 정규화

  • 성능을 최적화 하기 위해 해야 하는 행동 : 데이터 모델링시 정규화를 정확하게 수행한다. 데이터베이스 용량을 예측한다. 트랜잭션 유형을 파악한다. 반정규화를 수행한다. 이력모델 조정, 식별자 조정, 타입 조정등을 수행한다. 성능관점에서 데이터 모델을 테스트한다.

  • 정규화 : 데이터 분해 과정. 성능 최적화가 목적이고 데이터 일관성을 지켜야 한다.

  • 제1 정규형 : 모든 속성은 반드시 하나의 값을 가져야 한다. 하나의 속성에 여러 속성을 사용하면 안된다. > 여러 인스턴스로 분리

  • 제2 정규형 : 엔티티의 일반 속성은 주식별자 전체에 종속적이어야 한다. 하나의 주식별자에 종속적인 일반 속성이 있으면 그들만 따로 빼낸다.

  • 제3 정규형 : 엔티티의 일반 속성 간에는 서로 종속적이지 않는다. 하나의 일반속성을 알아야 다른 일반 속성을 알 수 있다면 그들만 따로 빼낸다.

  • 반정규화 : 정규화 했을때 성능이 안좋아지면 중복을 허용하거나 조인을 줄인다. 데이터 무결성이 깨질 수 있는 단점이 있다. 경로가 멀어서 조인으로 인해 성능이 저하될 때, 컬럼 계산할때 성능이 저하될때 진행한다. 입력,수정,삭제,조회 성능이 향상될 수 있다.

0개의 댓글