SQLD Day - 1 (2/n)

TToII·2021년 3월 15일
0

DB study

목록 보기
2/3

정규화

데이터의 일관성, 최소 데이터 중복, 최대 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정이다.
변화에 대해 변경을 최소화 할 수 있다.
이상 문제를 해결할 수 있다.

이상 문제

삽입 이상 : 데이터를 저장할 때 원하지 않는 정보가 함께 삽입되는 경우
삭제 이상 : 튜플을 삭제함으로써 유지되어야 하는 정보까지도 연쇄적으로 삭제되는 경우
갱신 이상 : 중복된 튜플 중 일부의 속성만 갱신 시킴 으로써 정보의 모순성이 발생하는 경우

정규화 절차

  • 제1정규화

    속성의 원자성을 확보하고 기본키를 설정한다
    강의명 칼럼에 두개의 값을 가진다. 제1정규화하면 다음과 같다.

  • 제2정규화

    기본키가 2개 이상의 속성으로 이루어진 경우, 부분 함수 종속성을 제거(분해)

    부분 함수적 종속 : 릴레이션에서 종속자가이 기본키가 아닌 다른 속성에 종속되거나, 기본키가 여러 속성으로 구성되어 있을경우 기본키를 구성하는 속성 중 일부만 종속되는 경우
    위 테이블은 제 1 정규화가 되었지만 여전히 갱신 이상의 위험이 존재한다.(중복성) 위 테이블의 후보 키는 {이름} 이 될 수있다. {학교}는 오로지 이름에만 종속된다.
    이를 제거하면 다음과 같이 테이블을 분리할 수 있다.

  • 제3정규화

    기본키를 제외한 칼럼 간에 종속성을 제거한다 즉, 이행 함수 종속성 제거

    이행적 함수 종속 : 릴레이션에서 X, Y, Z라는 3 개의 속성이 있을 때 X→Y, Y→Z 이란 종속 관계가 있을 경우, X→Z가 성립될 때 이행적 함수 종속이라고 한다. 즉, X를 알면 Y를 알고 그를 통해 Z를 알 수 있는 경우

    학생 테이블에서 학번을 통해 학과명을 알 수 있고 학과명을 통해 학과전화번호를 알 수 있으므로 이행적 함수 종속이 있다고 할 수 있다.

  • BCNF
    기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해

  • 제4정규화
    여러 칼럼들이 하나의 칼럼을 종속시키는 경우 분해 (다중값 종속성 제거)

  • 제5정규화
    조인에 의해 종속성이 발생되는 경우 분해 (조인 종속성 제거)

정규화의 문제점
데이터 조회(select)시에 조인을 유발하기 때문에 CPU와 메모리를 많이 사용한다.

반정규화

데이터베이스의 성능 향상을 위해, 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법이다.
조회(select) 속도를 향상하지만, 데이터 모델의 유연성은 낮아진다.

사용 사례)

  • 정규화에 충실했을 때 수행 속도가 느려지는 경우
  • 다량의 범위를 자주 처리해야 하는 경우
  • 특정 범위의 데이터만 자주 처리하는 경우
  • 요약/집계 정보가 자주 요구되는 경우

기법

1) 계산된 칼럼 추가
배치 프로그램으로 미리 계산하고 결과를 특정 칼럼에 추가

2) 테이블 수직 분할
하나의 테이블을 두 개 이상의 테이블로 분할한다. 즉, 칼럼을 분할하여 새로운 테이블을 생성

3) 테이블 수평 분할
하나의 테이블에 있는 값을 기준으로 테이블을 분할

4) 테이블 병합
1:1 관계의 테이블을 하나의 테이블로 병합해 성능을 향상
1:N 관계의 테이블을 병합하여 성능을 향상
슈퍼 타입과 서브 타입 관계가 발생하면 테이블을 통합하여 성능을 향상시킴

profile
Hello World!

0개의 댓글