" /> 데이터베이스 이론과 실습 14주차 | BlackWerf's Blog
포스트

데이터베이스 이론과 실습 14주차

정규화(Normalization)

  • 원래의 릴레이션을 분해하는 것

  • 잘못된 데이터베이스 설계시, 데이터 중복이 발생

    ​ => 갱신 이상 발생

갱신 이상

종류

  • 삽입 이상
  • 수정 이상
  • 삭제 이상

예시

상품 테이블

상품번호상품이름상품위치제조사분류구매한 사용자 ID구매한 사용자 이름
A-1234OO RC카3F-A12A완구DWA-32SV2김OO
C-2825AA 필통3F-F32B문구AWF-34AC2박XX
G-4326XX 로봇3F-A54A완구DWA-32SV2김OO
Y-3253OX TV2F-G43C전자기기RSD-64BR7유OX
  • 이 테이블은 ‘상품번호’와 ‘구매한 사용자 ID’를 Primary Key로 갖는다.
  • 이 테이블의 문제점은 사용자의 정보와 상품의 값을 전부 가지는 것이다.
삽입 이상
  • 이 테이블에서 사용자의 이름을 추가할때, Primary Key인 사용자 ID와 사용자 이름만 추가는 불가능하다

    • 테이블 내에 Primary Key가 2개가 존재하기 때문에 ‘상품이름’과 같이 필요없는 값도 추가가 필요
  • 이와 같이 특정 데이터를 삽입할때 불필요한 데이터까지 추가되는 것을 삽입 이상이라고 함

수정 이상
  • 테이블 내에서 특정 튜플 내에서 김OO이라는 사용자의 이름을 변경하는 경우, 다른 튜플에서도 해당 사용자의 이름을 변경해 주어야 한다
    • 이때, 모든 튜플에서 데이터를 수정하지 않고 하나의 튜플에서만 데이터를 수정하는 경우 발생하는 문제를 수정 이상이라고 한다.
삭제 이상
  • 이 테이블 내에서 특정 상품이 품절 등의 이유로 삭제하게 되었을 경우, 이 테이블 내에서 구매자의 ID와 이름까지 삭제가 된다
    • 사용자 정보는 필요한 정보이지만 같은 튜플 내부에 존재하므로 같이 삭제가 된다
  • 이와 같이 특정 튜플을 제거시 삭제를 원하지 않는 데이터까지 함께 삭제되는 것을 삭제 이상이라고 함

함수의 종속성

  • 정규화 이론의 핵심
  • A → B //A는 B를 결정한다(B는 A에 함수적으로 종속됨)

  • 완전함수 종속

    • (A1, A2) → B //A1과 A2가 모두 합쳐 B를 결정함
  • 부분함수 종속

    • A1 → B //가능하면 사용하지 않기

이행적 (함수)종속성

| A | B | C | | —- | —- | —- |


  • 이 테이블에서 Primary Key는 A이다.

  • A → B & B → C

    ​ //Primary Key A는 B와 C를 결정한다

    ​ //A는 B를 거쳐서 C를 결정함. 이를 ‘이행적으로 종속한다’ 라고 함

  • A → C

함수 종속성 예시

위쪽에서는

  • (학번, 과목번호) → 학점

    ​ 학과 이름

    ​ 학과 전화번호

    이므로 완전함수 종속을 충족함

하지만 아래쪽에서는,

  • 학번 → 학번이름

    ​ 학과 전화번호

    ​ 학과 이름 → 학과 전화번호

    를 충족하므로, 부분 함수 종속임

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.