ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQLD] SQL 개발자 공부하기 Day 2 : 정규화 / 반정규화 / 관계
    Study/SQL 2024. 2. 17. 23:23
    728x90
    반응형
    목차
    1. 정규화, 반정규화, 관계

     

    1. 정규화 / 반정규화 / 관계

     

     

    정규화 Normalization

    데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 얻기 위한 방법

    ‣ 테이블을 분해해서 데이터 중복을 제거하기 때문에 데이터 모델의 유연성을 높임.

    ‣ 제1정규화부터 제5정규화까지 있지만, 실질적으로는 제3정규화까지만 수행한다.

    ‣ 정규화된 모델은 테이블이 분해된다.

    ‣ 정규화를 수행하면 불필요한 데이터를 입력하지 않아도 되기 때문에 중복 데이터가 제거된다.

     

    정규화 절차

    1. 제1정규화 - 함수적 종속성을 근거로 기본 키를 설정한다.

    2. 제2정규화 - 기본키가 2개 이상의 칼럼으로 이루어진 경우에만 발생, 부분 함수 종속성을 제거.

    3. 제3정규화 - 이행 함수 종석성을 제거.

    4. BCNF - 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해한다.

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

    6. 제5정규화 - 조인에 의해서 종속성이 발생되는 경우 분해한다.

     

    정규화의 문제점

    ‣ 데이터 조회 시에 조인을 유발하기 때문에 CPU와 메모리를 많이 사용한다.

    ‣ 정규화의 문제점을 해결하기 위해서 반정규화를 하여 하나의 테이블에 저장한다면 조인을 통한 성능 저하는 해결될 것.

     

     

    반정규화 De-Normalization

    데이터베이스의 성능 향상을 위하여, 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법

    ‣ 조회 속도를 향상하지만, 데이터 모델의 유연성은 낮아진다.

     

    반정규화를 수행하는 경우

    ‣ 정규화에 충실하면 종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우

    ‣ 다량의 범위를 자주 처리해야 하는 경우

    ‣ 특정 범위의 데이터만 자주 처리하는 경우

    ‣ 요약/집계 정보가 자주 요구되는 경우

     

    반정규화 절차

    1. 대상 조사 및 검토 - 데이터 처리 범위, 통계성 등을 확인해서 반정규화 대상을 조사한다.

    2. 다른 방법 검토 - 반정규화를 수행하기 전에 다른 방법이 있는지 검토한다.

    3. 반정규화 수행 - 테이블, 속성, 관계 등을 반정규화 한다.

    728x90

    반정규화 기법

    1. 계산된 칼럼 추가

    ‣ 배치 프로그램으로 총판매액, 평균잔고, 계좌평가 등을 미리 계산하고, 그 결과를 특정 칼럼에 추가한다.

     

    2. 테이블을 수직 분할

    ‣ 칼럼을 분할하여 새로운 테이블을 만든다.

     

    3. 테이블 수평 분할

    ‣ 값을 기준으로 테이블을 분할한다.

     

    4. 테이블 병합

    ‣ 1대1 관계의 테이블을 하나의 테이블로 병합해서 성능을 향상시킨다.

    ‣ 1대N 관계의 테이블을 병합하여 성능을 향상시킨다. but 많은 양의 데이터 중복 발생

    ‣ 슈퍼 타입과 서브 타입 관계가 발생하면 테이블을 통합하여 성능을 향상시킨다.

     

    * Super Type과 Sub Type 

    ‣ 부모와 자식 간의 관계를 나타냄. 

    ‣ 고객 엔터티는 개인고객과 법인고객으로 분류된다. 이 때, 고객 엔터티는 Super Type, 개인고객과 법인고객은 Sub Type이 된다.

     

    * Super Type과 Sub Type 변환 방법

    1. OneToOne Type - 슈퍼 타입과 서브 타입을 개별로 도출. 테이블의 수가 많아서 조인이 많이 발생하고 관리가 어렵다.

    2. Plus Type - 슈퍼 타입과 서브 타입 테이블로 도출. 조인이 발생하고 관리가 어렵다.

    3. Single Type - 슈퍼 타입과 서브 타입을 하나의 테이블로 도출. 조인 성능이 좋고 관리가 편하지만, 입출력 성능이 나쁘다.

    반응형

    파티션 기법 Partition

    데이터베이스에서 파티션을 사용하여 테이블을 분할할 수 있다.

    파티션을 사용하면 논리적으로는 하나의 테이블이지만 여러 개의 데이터 파일에 분산되어서 저장된다.

    ‣ Range Partition : 데이터 값의 범위를 기준으로 파티션을 수행한다.

    ‣ List Partition : 특정한 값을 지정하여 파티션을 수행한다.

    ‣ Hash Partition : 해시 함수를 적용하여 파티션을 수행한다.

    ‣ Composite Partition : 범위와 해시를 복합적으로 사용하여 파티션을 수행한다.

     

    파티션 테이블의 장점

    데이터 조회 시에 액세스 범위가 줄어들기 때문에 성능이 향상됨.

    ‣ 데이터가 분할되어 있기 때문에 Input/Output 성능이 향상됨.

    ‣ 각 파티션을 독립적으로 백업 및 복구가 가능.

     

     

    식별 관계 Identification Relationship

    ‣ 강한 개체는 어떤 다른 엔터티에게 의존하지 않고 독립적으로 존재

    ‣ 강한 개체는 다른 엔터티와 관계를 가질 때 다른 엔터티에게 기본키를 공유

    ‣ 강한 개체는 식별 관계로 표현된다.

    ‣ 강한 개체의 기본키 값이 변경되면 식별관계에 있는 엔터티의 값도 변경된다.

     

     

    비식별 관계 Non - Identification Relationship

    ‣ 강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 칼럼으로 관계를 가지는 것.

    ‣ 비 식별 관계는 점선으로 표현

     

     

    NULL

    값이 정의되지 않은 미지의 값. 0이나 공백이 아닌, 값이 정해지지 않은 값.

    ‣ NULL과 연산을 수행하면 항상 NULL

    ‣ 집계함수는 NULL 값을 제외 

     

    728x90
    반응형

    댓글

Designed by Tistory.