함수적 종속성(Functional Dependency)과 데이터 베이스 정규화 (+ 이상 현상(Anomaly),)

YongJin·2024년 4월 30일

<함수 종속성>

  • 릴레이션(테이블)의 속성 간의 관계를 나타내는 개념이다. 속성 X가 속성 Y를 결정한다면, X → Y라고 표현한다. 이때 X를 결정자(Determinant)라고 하고, Y를 종속자(Dependent)라고 한다.

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

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

위 테이블에서, '성적' Y는 {학생ID, 과목ID}의 조합 X에 의해 결정된다

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

  • 부분 함수적 종속이란, 릴레이션에서 종속자가 기본키가 아닌 다른 속성에 종속되거나, 기본키가 여러 속성으로 구성되어 있을경우 기본키를 구성하는 속성 중 일부만 종속되는 경우

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

  • 기본 키가 다른 키들을 통제해야 하는데(완전 함수 종속) 키들 간의 결정자와 종속자가 발생하는 경우

(학번(기본키) / 지도교수 / 학과) 의 관계
학번이 지도교수를 지도교수가 학과를 결정한다.

<데이터 베이스 정규화>

대부분의 릴레이션에서는 BCNF까지 정규화하면 실제적인 이상현상이 없어지기 때문에 정규형은(1,2,3,BCNF)까지만 다룹니다

정규화 : 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해 하는 과정이다 (정규화란 행위 자체의 의미)

무손실 분해 : 원래대로 복원할 수 있는 분해

정규화의 목적 :

- 가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것이다

그렇다면 이상 현상은 무엇일까?

<이상 현상>

이상(Anomaly)
이상이란 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생
이 중복으로 인해 테이블 조작 시 문제가 발생하는 현상을 의미한다,

  • 삽입 이상

    테이블에 데이터를 삽입할 때, 의도와는 상관 없이 원하지 않는 값들로 인해 삽입할 수 없게 되는 현상
    (의도적으로 테이블 기본키 - 고객아이디,이벤트번호 에 null값을 넣었다)
    이벤트가 끝난 이후 회원을 가입시키려면 기본키인 이벤트 번호에 넣을 수 있는 값이 없어서 고객을 테이블에 삽입 (등록) 시킬 수 없다

  • 삭제 이상

    테이블에서 한 튜플(행)을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 즉, 연쇄 삭제가 발생하는 현상이다
    고객 중 아무 한명이나 이벤트 기록만 삭제한다고 가정하면 이 테이블에서는
    이벤트 관련 데이터만 삭제할 수 없다.

  • 갱신 이상

    테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플(행)의 정보만이 갱신되어 정보에 불일치성이 생기는 현상이다
    001의 이벤트 번호 E010 행에서 등급이 gold로 변경됐다면 첫번째 두번째 행과 등급 정보에 불일치성이 생긴다

<정규화 과정>

제 1 정규형
도메인이 원자값
모든 속성이 원자값(하나의 값)을 갖도록 한다

  • 1 정규형을 만족해야 관계형 DB 릴레이션이 될 자격이 생긴다(이미 만족)

제 2 정규화
부분 함수 종속성 제거
제 1 정규형을 진행한 테이블을 완전 함수 종속을 만족하도록 테이블을 분해하는 것이다. == 기본키의 부분집합이 결정자가 되어서는 안 된다.
(제 1정규형 이후 각 속성들이 완전 함수 종속성을 갖도록 릴레이션을 분리한다)

안 한다고 가정 할 경우 어떤 문제가 생길까?

  • 이상 현상 설명을 위해 사용했던 단일 테이블에서 고객아이디 001인 고객의 등급이 이벤트번호 E010에서 등급이 변경된 것을 볼 수 있다.
    등급의 변경이 생겼을 때, 갱신이상이 생겨 정보의 불일치성이 생길 수 있다 또한 위에서 설명했던 삽입 이상의 문제 또한 생길 수 있다
    삭제 이상도 동일

제 3 정규형
이행 함수 종속성을 제거
제 2 정규형을 만족하고, 테이블에 대해 이행적 종속을 없애도록 릴레이션을 분해하는 것이다.

안 한다고 가정 할 경우 어떤 문제가 생길까?

  • 할인율을 변경할 일이 생긴다면 일일이 수정해줘야 한다.(갱신 이상 발생 될 수 있음)

BCNF 정규형
(기존 테이블에서) 결정자이면서 후보키가 아닌 것 제거
제 3정규형을 만족하고, 모든 결정자가 후보키인 정규형
즉, 모든 결정자가 후보키가 되도록 테이블을 분리해야 한다

안 한다고 가정 할 경우 어떤 문제가 생길까?

profile
더 나은 사람이 되고 싶습니다

0개의 댓글