13회차 - 릴레이션 정규화

prana·2022년 10월 11일
0

database

목록 보기
13/38
post-thumbnail

1. 갱신 이상(Update Anomaly)

1) 정의

  • 갱신 이상이란 관계 DB를 조작할 때 데이터의 중복으로 인해 발생하는 문제점을 의미한다.

2) 표현 방법
① 삽입 이상(Insertion Anomaly)

  • 불필요한 데이터를 함께 삽입하지 않으면 어떤 데이터를 삽입하는 것이 불가능한 문제점

② 수정 이상(Modification Anomaly)

  • 중복된 데이터 가운데 일부만 수정되어 데이터의 불일치가 발생하는 문제점

③ 삭제 이상(Delection Anomaly)

  • 어떤 데이터를 삭제하면 유용한 데이터도 함께 삭제되는 문제점

3) 원인

릴레이션 스키마를 생성할 때 속성들 간의 종속성을 충분히 고려하지 않아 불필요한 데이터가 중복되었기 때문이다. 즉, 한 개체의 속성들 간에 존재하는 여러 개의 종속 관계를 하나의 릴레이션으로 표현했기 때문이다.

4) 해결 방법

  • 릴레이션 스키마를 변환해서 속성들 간의 여러 종속 관계를 분해(Decomposition)하는 릴레이션 정규화(Relation Normalization) 과정을 수행한다.

2. 함수적 종속(Functional Dependency: FD)

1) 정의

  • 속성들 간의 대응 관계를 보다 수학적으로 규명하기 위해 E.F Codd가 제안한 이론으로, 정규화의 핵심적인 개념이며, 릴레이션이 갖고 있는 갱신 이상을 발견하기 위한 하나의 수단이다.

2) 표현 방법

  • 속성 X의 값이 속성 Y의 값을 결정지으면, 즉 속성 X의 각각의 값에 대해 속성 Y의 값이 오직 하나만 연관되면, "속성 Y는 속성 X에 함수적으로 종속된다"고 하고, 다음과 같이 표현한다.

3) 완전 함수적 종속과 부분 함수적 종속

  • 복합 속성 X에 대하여 X→Y가 성립할 때, X'⊂X이고 X'→Y를 만족하는 속성 X'이

    1) 존재하지 않으면, 속성 Y는 복합 속성 X에 완전 함수적 종속이다.

  • 2) 존재하면, 속성 Y는 복합 속성 X에 부분 함수적 종속이다.

4) 이행적 함수적 종속

  • 한 릴레이션의 속성 A, B, C가 있을 때 다음과 같은 필요 충분 조건을 만족하는 경우, 속성 C가 속성 A에 이행적(또는 추이적) 함수적 종속이라고 한다.
    A →B ∧ B → C

3. 정규화 (Normalization)

1) 정의

① 스키마변환을 통해서 일련의 제약 조건을 만족하는 릴레이션을 만드는 과정이다.
② 속성들 간의 종속성을 분석해서 하나의 릴레이션에는 하나의 종속성만 갖도록 릴레이션을 분해하는 과정이다.
③ 갱신 이상의 발생 요인인 데이터 중복을 최소화하기 위해서 일종의 제약 조건을 기초로 릴레이션을 분해하는 과정이다.
④ 불필요한 데이터 중복을 제거해서 논리적 데이터 모델을 단순화시키는 과정이다.


2) 원칙

① 데이터 중복을 최소화한다.
② 정보가 사라지지 않아야 한다. (정보의 무손실)
-같은 의미의 정보를 유지하면서 더 바람직한 구조로 변환해야 한다.
③ 다음과 같은 원칙에 따라 분해한다.
a) 독립적인 관계는 별개의 릴레이션으로 표현한다.
b) 릴레이션 각각에 대해 독립적인 조작이 가능해야 한다.


3) 효과
① 중복된 데이터가 제거되어 갱신 이상이 감소한다.
② 데이터의 일관성 유지가 가능하다.
③ 데이터 모델이 단순해진다.
④ 무결성 제약 조건을 만족시키기 위해 필요한 프로그램 코드 양이 감소한다.


4) 문제점

릴레이션(테이블) 분해로 인해 많은 조인(Join) 연산이 발생하므로 질의에 대한 응답 시간이 느려질 수 있다.


4. 단계별 정규형과 제약 조건

1) 제 1 정규형 (1NF)

  • 제약조건 : 모든 속성의 도메인이 원자 값이어야 함
  • 정규화 방법 : 다중치 속성 및 중복 속성을 분리(다중치와 반복 그룹 제거)

2) 제 2 정규형(2NF)

  • 제약 조건: 모든 속성이 기본 키에 완전 함수적 종속이어야 함
  • 정규화 방법: 기본 키에 부분 함수적 종속인 속성을 분리(부분 함수적 종속 제거)

3) 제 3 정규형(3NF)

  • 속성들 간에 이행적 함수적 종속이 없어져야 함
  • 정규화 방법 : 이행적 함수적 종속인 속성을 분리(이행적 함수적 종속 제거)

4) 보이스/코드 정규형(BCNF)

  • 제약 조건: 후보 키가 아닌 결정자가 없어야 함
  • 정규화 방법 : 후보 키가 아니면서 결정자 역할을 하는 속성과 그 종속자를 분리(모든 결정자가 후보 키)

5) 제 4 정규형(4NF)

  • 제약 조건 : 다치 종속(Multi-valued Dependency)인 속성이 없어야 함
  • 정규화 방법 : 다치 종속인 속성을 분리

6) 제 5 정규형(5NF)

  • 제약 조건 : 조인 종속(Join Dependency)인 속성이 없어야 함
  • 정규화 방법 : 조인 종속인 속성을 분리

5. 단계별 정규화


6. 역정규화(Denormalization)

1) 정규화의 문제점

  • 정규화 단계가 진행될수록 릴레이션이 분해되므로 원하는 정보를 얻기 위해서 조인의 필요성이 증가되어 성능이 저하될 수 있다.
  • 즉, 불필요한 데이터의 중복은 감소하지만 질의에 대한 응답 시간은 증가할 수 있다.

2) 역정규화란?

  • 성능에 대한 요구를 만족시키기 위해 데이터 중복과 갱신 이상을 대가로 치르면서 보다 낮은 정규형으로 되돌아가는 것을 의미한다.
  • 즉, 빈번하게 수행되는 검색 질의의 수행 속돌르 높이기 위해서 이미 분해된 두 개 이상의 릴레이션을 합쳐서 하나의 릴레이션으로 만드는 작업이다.

3) 주의사항

역정규화 해도 중복된 데이터는 관리해야 하므로, 응용 프로그램에서 별도로 데이터 무결성을 보장하기 위한 비용이 발생될 수 있다.

0개의 댓글