정규화에 대해서 알아보자

송기훈·2023년 7월 17일
0

🚀정규화(Normalization)란?

  • 관계형 데이터베이스의 설계에서 중복을 최소화 해 데이터를 구조화하는 프로세스를 정규화라고 합니다.
  • 정규화를 거치지 않은 데이터베이스는 이상이 발생할 수 있습니다.
  • 정규형에는 제1정규형, 제2정규형, 제3정규형, BCNF형, 제4정규형, 제5정규형이 있으며, 순서대로 정규화의 정도가 높아집니다.

🛸이상(Anomaly)이란?

  • 이상이란 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 테이블 조작시 문제가 발생하는 현상을 의미합니다.
  • 이상의 종류에는 테이블 조작 중에 발생하는 삽입 이상(Insertion Anomaly), 삭제 이상(Deletion Anomaly), 갱신 이상(Update Anomaly)이 있습니다.

🚀 제1정규형

  • 1정규형은 테이블 R에 속한 모든 속성의 도메인(Domain)이 원자 값(Automic Value)만으로 되어 있는 정규형입니다. 즉 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형입니다.

*도메인은 하나의 애트리뷰트(속성)가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합입니다.

🚁제1정규형의 예시

출처 : https://itwiki.kr/w/데이터베이스_정규화

발생할 수 있는 이상(Anomaly)의 예

  • 갱신이상: 홍길동이 사회과목을 '역사'로 바꾸었다. 그럼 임꺽정이 듣고 있는 사회 과목도 바뀌어버린다.
    UPDATE 과목 SET 수강과목 = '역사' WHERE 수강과목 = '사회' AND 수강자 = '홍길동'
  • 삭제 이상: 임꺽정이 '과학' 과목을 수강취소했다. 그럼 신사임당의 수강 정보도 삭제된다.
    DELETE FROM 과목 WHERE 수강과목 = '과학' AND 수강자 = '임꺽정'

🚀 제2정규형

  • 제2정규형은 테이블 R이 제1정규형이고, 기본키가 아닌 모든 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형입니다.

🚁제2정규형의 예시

출처 : https://itwiki.kr/w/데이터베이스_정규화

발생할 수 있는 이상(Anomaly)의 예

  • 삽입이상: 컴퓨터과, 전자과, 기계과 학생을 추가하고자 할 경우 더이상 불필요한 중복정보인 학과장 정보가 삽입되야 한다.
  • 갱신이상: 컴퓨터과의 학과장이 변경되었다. 하나만 변경하면 모순이 발생하므로 다 찾아서 변경해야 한다.
  • 삭제이상: 신사임당이 자퇴해서 삭제하고자 한다. 이 삭제로 인해 기계과 학과장의 정보가 사라져버린다.

🚀 제3정규형

  • 제3정규형은 테이블R이 제2정규형이고 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형입니다.

🚁제3정규형의 예시

출처 : https://itwiki.kr/w/데이터베이스_정규화

발생할 수 있는 이상(Anomaly)의 예

  • 삽입이상: 컴퓨터과, 전자과 학생을 추가하고자 할 경우 더이상 불필요한 중복정보인 대학 정보가 삽입되어야 한다.
  • 갱신이상: 컴퓨터과의 소속 대학이 'IT대학'으로 변경되었다. 하나만 변경하면 모순이 발생하므로 다 찾아서 변경해야 한다.
  • 삭제이상: 홍길동이 자퇴해서 삭제하고자 한다. 이 삭제로 인해 컴퓨터과의 대학 정보가 사라져 버린다.

🚀 BCNF

  • BCNF는 테이블 R에서 모든 결정자가 후보키인 정규형입니다.
  • 일반적으로 제3정규형에 후보키가 여러 개 존재하고, 이러한 후보키들이 서로 중첩되어 나타나는 경우에 적용 가능합니다.

🚁제3정규형의 예시

출처 : https://itwiki.kr/w/데이터베이스_정규화

발생할 수 있는 이상(Anomaly)의 예

  • 삽입이상: 200학생이 데이터베이스를 수강하고자 할 경우, 현재 불필요한 홍길동 교수 정보가 한번 더 삽입된다.
  • 갱신이상: 홍길동의 담당 과목이 알고리즘으로 바뀌었다. 담당 과목을 변경할 경우, 학생의 수강 과목이 변경되어 버린다.
  • 삭제이상: 300학생이 자퇴해서 삭제하고자 한다. 이 삭제로 인해 인공지능 과목을 유관순 교수가 담당하고 있다는 정보가 사라진다.

제4정규형과 제5정규형은 실제 프로젝트에서 거의 발생하지 않으므로 정의만 기술합니다.

🚀 제4정규형

  • 제4정규형은 테이블 R에 다중 값 종속 A → → B가 존재할 경우 R의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형입니다.

🚀 제5정규형

  • 제5정규형은 테이블 R의 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형입니다.

🔥완전/부분 함수적 종속 및 이해/이행적 종속

완전 함수적 종속(Full Functional Dependency)

어떤 테이블 R에서 속성 Y가 다른 속성 집합 X 전체에 대해 함수적 종속이면서 속성 집합 X의 어떠한 진부분 집합 Z(즉, Z⊂X)에도 함수적 종속이 아닐 때 속성 Y는 집합 X에 완전 함수적 종속이라고 합니다.

부분 함수적 종속(Partial Functional Dependency)

어떤 테이블 R에서 속성 Y가 다른 속성 집합 X 전체에 대해 함수적 종속이면서 속성 집합 X의 임의의 진부분 집합에 대해 함수적 종속일 때, 속성 Y는 속성 집합 X의 부분 함수적 종속이라고 합니다.

완전/부분 함수적 종속의 이해

완전 함수적 종속이라는 말은 어떤 속성이 기본키에 대해 완전히 종속적일 때를 말합니다 예를들어 <수강>테이블은 (학번, 과목번호)가 키본키인데, 성적은 학번과 과번호가 같을 경우에는 항상, 같은 성적이 오므로, 즉 성적은 학번과 과목번호에 의해서만 결정되므로 성적은 기본키(학번, 과목번호)에 완전 함수적 종속이 되는 것입니다. 반면에 학년은 과목번호에 관계없이 학번이 같으면 항상 같은 학년이 오므로, 즉 기본키의 일부이 학번에 의해서 학년이 결정되므로 학년은 부분 함수적 종속이라고 합니다.

이행적 함수적 종속(Transitive Functional Dependency)

X → Y이고, Y→ Z 일 때 X→Z를 만족하는 관계를 이행적 함수적 종속이라고 합니다.

profile
하루 하루 성장하는 코린이 블로그입니다.

0개의 댓글