본문 바로가기
스터디/SQL

[정리노트] SQLD 2024년 개정판 - 정규화

by 견습생L 2024. 8. 7.

[정리노트] SQLD 2024년 개정판 - 정규화

 


함수적 종속성(Functional Dependency)의 개념과 기본원리

  •   개념
    •   데이터들이 상호 종속되는 현상, 결정자와 종속자의 관계
    •   X → Y: 결정자(DERTERMINANT)인 X가 종속자(DEPENDENT)인 Y를 결정
  •   기본 원리
    •   속성의 부분집합 X → Y에서 Y에 대응되는 X는 하나만 존재
    •   X가 기본키인 경우, 모든 속성 Y는 X에 종속
    •   X → Y인 관계에서 X가 후보키가 아닐 경우 이상현상이 발생할 수 있음
    •   이상현상: 릴레이션에 테이터를 조작할 때 의도하지 않는 현상이 발생하거나 데이터 불일 혹은 누락이 발생하는 현상으로 ‘삽입이상, 갱신이상, 삭제이상’ 이 있음
      •   삽입이상: 구조적 문제 때문에 불필요한 데이터까지 함께 갖춰서 추가해 줘야 하는 문제
      •   갱신이상: 중복된 데이터 문제로 한 개는 변경되지만 다른 데이터는 갱신 안되는 모순
      •   삭제이상: 삭제되면 안되는 데이터가 함께 삭제되며 모순 발생

 

함수적 종속성(Functional Dependency)의 종류

 

 

정규화

  •   개념
    •   불필요한 데이터 중복에 따른 이상현상 제거를 위한 무손실 분해하는 과정
      •   무손실 분해 - 분해 후 Join을 통해 원래의 관계와 데이터를 복원할 수 있어야 함
    •   함수적 종속성을 이용하여 릴레이션이 연관성 있는 속성 들로만 구성되도록 분해하는 과정
    •   정규형: 정규화로 도출된 데이터 모델이 갖추어야 할 특성
    •   다치종속
      •   결정자 컬럼 A에 의해 컬럼 B의 값을 다수 알 수 있을 때, 컬럼 B는 컬럼 Aㅔ 다치 종속 되었다고 함
        •   학번을 알면 해당 학생의 다수 개 수강 과목을 알 수 있을 때, 수강과목은 학번에 다치 종속 되었다고 함
  •   특징
    •   원칙: 무손실 분해, 함수적 종속성, 최소의 데이터 중복성 분리의 원칙
    •   장점: 이상현상 제거와 일관성 유지, 중복제거 통한 저장공간 절약, 데이터 구조의 유연성 확보
    •   단점: Join을 통한 정보 구성 시 성능 저하 → 반정규화 고려
      •   두개 이상의 테이블을 합치는 것
  •   유형
    •   1차
      •   속성의 원자값 확보 (취미라는 컬럼에 배구, 축구 들어가면 안됨)
      •   반복되는 속성 제거, 다중값 속성의 분리
      •   R에 속한 모든 도메인이 원자값(atomic value)만으로 구성
      •   위의 엔터티에 연락처 속성에 두가지 값이 있음, 이럴 경우 1차 정규형 위반
      •   1차 정규형 위반 해소 → 연락처 제거 → 회원 연락처 엔터티 생성 → 컬럼 값으로 회원아이디, 연락처 유형, 연락처 생성
    •   2차
      •   부분함수 종속성 제거
      •   릴레이션 R이 1NF이고, 릴레이션의 기본키가 아닌 속성들이 기본키에 완전히 함수적으로 종속
      •   기본키가 하나의 컬럼일 경우 생략 가능
      •   위의 엔터티에 갱신 시에 갱신 이상이 발생할 가능성 존재
        • 고객아이디만 알아도 고객명, 고객등급 알 수 있음
        • 주문 시마다 고객정보를 저장해야 함
        • 고객 정보 바뀌면 해당 테이블 다 변경해야
      • 고객 정보의 중복이 발생할 수 있음
      • 고객 정보를 모르면 주문이 불가능 함
      • 2차 정규형 위반 해소 → 고객명, 고객 등급 제거
    • 3차
      • 이행함수 종속성 제거
      • 릴레이션 R이 2NF이고, 기본키가 아닌 모든 속성들이 기본키에 대하여 이행적 함수 종속성의 관계를 가지지 않음
      • 즉, 기본키 외의 속성들 간에 함수적 종속적을 가지지 않는 경우
      • 식별자를 제외한 일반 속성 끼리 종속이 발생하여 제거 필요
      • 3차 정규형 위반 해소 → 직업 엔터티 생성 → 직업코드, 직업명 컬럼 추가
    • 기타
      • BCNF, 4차 정규화, 5차 정규
    • 정규화 수행 이후, 성능향상과 운영 단순화를 위해 반정규화를 고려한다.
      • 모델 통합(테이블 반정규화), 부가 정보 추가 (칼럼 반정규화, 중복관계 추가)

 

 

 

반응형