데이터베이스 정규화

2025. 6. 10. 16:01·Study/DateBase
반응형

정규화의 개념과 이상 현상

이상 현상: 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 수행할 때 발생할 수 있는 부작용

정규화: 이상 현상을 제거하면서 데이터베이스를 올바르게 설계해 나가는 과정

 

이상 현상의 종류

삽입 이상: 릴레이션에 새 데이터를 삽입하려면 불필요한 데이터도 함께 삽입해야 하는 문제

갱신 이상: 릴레이션의 중복된 투플들 중 일부만 수정하여 데이터가 불일치하게 되는 모순이 발생하는 문제

삭제 이상: 릴레이션에서 투플을 삭제하면 꼭 필요한 데이터까지 손실되는 연쇄 삭제 현상이 발생하는 문제

 

정규화

이상 현상이 발생하지 않도록, 릴레이션을 관련 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정

함수적 종속성(속성들 간의 관련성)을 판단하여 정규화 수행

 

함수 종속

X가 Y를 함수적으로 결정한다 = Y가 X에 함수적으로 종속되어 있다

릴레이션 내 모든 투플에서 하나의 X값에 대해 Y값이 항상 하나 존재

X → Y로 표현(X는 결정자, Y는 종속자)

함수 종속 다이어그램: 함수 종속 단계를 도식화하여 표현한 것

 

함수 종속 관계 판단 시 유의 사항

속성 자체의 특성과 의미를 기반으로 함수 종속성을 판단해야 함(현재 릴레이션에 포함된 속성 값만으로 X)
일반적으로 기본키와 후보키는 릴레이션의 다른 모든 속성들을 함수적으로 결정

기본키가 후보키가 아니어도 다른 속성 값을 유일하게 결정하는 속성은 함수 종속 관계에서 결정자가 될 수 있다.

 

함수 종속 다이어그램

함수 종속성을 나타내는 표기법

릴레이션의 속성 → 직사각형

속성 간의 함수 종속성 → 화살표

복합 속성 → 직사각형 선으로 묶어서 그림

 

함수 종속 종류

완전 함수 종속(FFD)

릴레이션에서 속성 집합 Y가 속성 집합 X에 함수적으로 종속되어 있지만, 속성 집합 X의 전체가 아닌 일부분에는 종속되지 않음을 의미한다.

일반적으로 함수 종속 = 완전 함수 종속 의미

 

부분 함수 종속(PFD)

릴레이션에서 속성 집합 Y가 속성 집합 X의 전체가 아닌 일부분에도 함수적으로 종속됨을 의미한다.

 

*결정자와 종속자가 같거나, 결정자가 종속자를 포함하는 것처럼 당연한 함수 종속 관계는 고려하지 않음

 

이행적 함수 종속(transitive FD)

릴레이션을 구성하는 3개의 속성 집합 X,Y,Z에 대해 함수 종속 관계 X → Y와 Y → Z가 존재하면 논리적으로 X → Z가 성립되는데, 이때 Z가 X에 이행적으로 함수 종속되었다고 한다.

 

기본 정규형과 정규화 과정

정규화(normalization)

함수 종속성을 이용해 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해해서, 이상 현상이 발생하지 않는 올바른 릴레이션으로 만들어가는 과정

관련이 없는 함수 종속성은 별개의 릴레이션으로 표현한다.

 

주의 사항)

정규화를 통해 릴레이션은 무손실 분해(nonloss decomposition)되어야 한다.

릴레이션이 의미 상 동등한 릴레이션들로 분해되고, 분해로 인한 정보 손실이 없어야 한다.

= 분해된 릴레이션들을 자연 조인하면 분해 전의 릴레이션으로 복원 가능해야 한다.

 

정규형(NF, Normal Form)

릴레이션이 정규화된 정도

정규형마다 제약조건이 존재 → 정규형의 차수가 높아질수록 요구되는 제약조건이 많아지고 엄격해진다.

릴레이션의 특성을 고려해서 적합한 정규형을 선택해야 함

 

기본 정규형:

제1정규형, 제2정규형, 제3정규형, 보이스/코드 정규형

 

고급 정규형:

제4정규형, 제5정규형

 

비정규형 → 제1정규형 → 제2정규형 → 제3정규형 → BCNF형 → 제4정규형 → 제5정규형

 

제1정규형(1NF)

릴레이션의 모든 속성이 더는 분해되지 않는 원자 값(atomic value)만 가지면 제1정규형 만족

→ 관계 DB의 릴레이션이 될 자격을 갖추게 되는 것

 

다중 값 속성을 없애는 과정!

 

제2정규형(2NF)

릴레이션이 제1정규형에 속하면서, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제2정규형 만족

 

부분 함수 종속을 제거하고, 모든 속성이 기본키에 완전 함수 종속되도록 분해하는 과정!

 

제3정규형(3NF)

릴레이션이 제2정규형에 속하면서, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제3정규형 만족

 

이행적 함수 종속을 제거하는 과정!

 

보이스/코드 정규형(BCNF, Boyce/Codd NF)

= 강한 제3 정규형(strong 3NF)

후보키를 여러 개 가지고 있는 릴레이션에 발생할 수 있는 이상 현상을 해결하기 위해 좀 더 엄격한 제약조건 제시

 

릴레이션이 제3정규형에 속하면서, 모든 결정자가 후보키이면 보이스/코드 정규형 만족

 

제4정규형

릴레이션이 보이스/코드 정규형에 속하면서, 함수 종속이 아닌 다치 종속(MVD; Multi Valued Dependency)를 제거하면 제4정규형 만족

 

제5정규형

릴레이션이 제4정규형에 속하면서, 후보키를 통하지 않는 조인 종속(JD)을 제거하면 제5정규형 만족

 

정규화 주의 사항

모든 릴레이션이 제5정규형에 속해야만 바람직한 것이 아니다.

제3정규형이나 보이스/코드 정규형에 속하도록 릴레이션을 분해해 데이터 중복을 줄이고 이상 현상을 해결하는 게 보편적임

 

 

 

 

출처: 데이터베이스 개론 2판 김연희 저, MySQL로 배우는 데이터베이스 개론과 실습 박우창 외2
반응형

'Study > DateBase' 카테고리의 다른 글

데이터베이스 권한 관리  (0) 2025.06.10
데이터베이스 회복과 병행 제어  (0) 2025.06.10
데이터베이스 설계와 인덱싱  (5) 2025.06.08
데이터베이스 언어 SQL  (3) 2025.05.25
데이터베이스 모델과 연산  (0) 2025.04.12
'Study/DateBase' 카테고리의 다른 글
  • 데이터베이스 권한 관리
  • 데이터베이스 회복과 병행 제어
  • 데이터베이스 설계와 인덱싱
  • 데이터베이스 언어 SQL
harchiving
harchiving
Computer Science Engineering, undergraduate student
  • harchiving
    harchiving
    harchiving
  • 전체
    오늘
    어제
    • 분류 전체보기 (21)
      • Study (21)
        • JavaScript (6)
        • OS (8)
        • DateBase (7)
      • Review (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    DB
    데이터베이스
    프론트엔드
    명품운영체제
    운영체제
    사자책
    javascript
    모던자바스크립트딥다이브
    FE
    데이터베이스개론
    자바스크립트
    operatingsystemconcepts
    공룡책
    SQLD
    OperatingSystem
    js
    DATABASE
    프로그래밍
    SQL
    OS
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
harchiving
데이터베이스 정규화
상단으로

티스토리툴바