본문 바로가기

컴퓨터 일반/데이터베이스론

정규화

정규화란? 테이블을 쪼개가는 것이다. 하나의 테이블을 여러개로 분리하여 관리하면

예기치않은 여러가지 이상현상을 막을 수 있기 때문이다.

정규화를 하지 않으면 삽입, 삭제, 갱신 이상 현상이 발생할 수 있다

  • 삽입 이상 : 데이터 삽입 시 불필요한 데이터까지 함께 삽입되는 현상이다
  • 삭제 이상 : 한 튜플을 삭제 함으로써 일어나는 연쇄 삭제 현상이다
  • 갱신 이상 : 수정을 할 때 특정한 데이터만 수정되는게 아닌 다른 내용까지 같이 갱신되는 것이다.

정규화 과정은 여러 단계가 있는데 1정규화 과정을 만족하면 2정규형으로, 2정규형을 만족하며 3정규형으로 가며

보통 3정규화까지 하는 것이 일반적이다

https://www.youtube.com/watch?v=rHq3ms88miU

 

함수적 종속이란?

어떤 테이블에 속성 X,Y가 있을때 X의 값 각각에 대해 속성 Y의 값이 시간에 관계 없이(데이터 추가 삭제) 오직 하나만 연관될 때 Y는 X에 함수적 종속이다

X→Y라고 쓴다.

EX) 학생 테이블의 학번과 성명 속성이 있다. 데이터 입력, 추가, 삭제하는 일이 아무리 반복되어도 학번 10001은 무조건 김형석이다 : 학번 → 성명을 결정한다. 성명은 학번에 종속된다

  • 완전 함수적 종속 : 어떤 속성이 기본키에 대해 완전히 종속적일때  ->기본키로 설정된 그 필드의 전체에 대해서 필드가 종속이 되어야 한다
  • 부분 함수적 종속 : 어떤 속성이 기본키의 일부에 대해 종속적일때 -> 어떤 필드가 없어도 된다

부분 함수적 종속을 제거하면 2 정규화이다

ex. 도메인은 원자값이고기본키가 아닌 모든 속성들이 기본키에 대해 완전 함수적 종속적이며, 이행적 함수 종속관계는 제거 되었으면 2NF 이다

 

제 1정규형

모든 도메인들의 값이 원자값만으로 되어 있는 릴레이션이다.

제 2정규형

  • 1정규형을 만족한다
  • 완전 함수적 종속이 되어야 한다 : 부분적 함수 종속을 제거해야 한다
  • 부분적 함수 종속이란? (A,B)가 기본키이다. 그래서 C,와 D를 가리킬 수 있다
  • (A,B) → C,D
  • B → C
  • 이렇게 B하나만 가지고 C를 지목할 수가 있는 경우

제 3정규형

  • 2정규형을 만족한 테이블
  • 모든 속성들이 기본키에 이행적 함수 종속이 되지 않는다
  • 이행적 함수 종속이란? 
  • A→B이고 B→C이면 A→C를 만족하는 관계이다. 이런 관계를 제거해야 제 3정규형을 만족한다

BCNF

모든 속성이 릴레이션의기본키에 대해서만 완전함수적으로 종속되어야 하며 이런 제약조건을 만족시키는 릴레이션을 BCNF라고 한다. 

스키마 R(A,B,C,D)와 함수적 종속 {A->B, A->C}을 가질 때 BCNF는

A가 기본키이고 이에 완전함수적으로 종속되는 B와 C를 모아 하나의 릴레이션으로 만들고

나머지 D는 A와 함께 별도로 릴레이션을 구성한다. 

S(A,B,C)와 T(A,D)로 구성한다

 

 

역정규화

정규화는 큰테이블을 쪼개고 쪼개는 과정, 분할되어가는 과정이다. 안정적으로 데이터베이스를 운영하기 위해 정규화 과정을 거친다. 주로 검색할때 문제점이 없기 위해 정규화를 하는데, 갱신을 할때는 큰 테이블에서 갱신을 하게 되면 좀 더 낫기 때문이다. 그래서 쪼개진 테이블을 합하는 과정을 역정규화라고 한다. 이미 분해된 여러 릴레이션을 합쳐서 하나의 릴레이션으로 만드는 작업, 낮은 정규형 형태로 돌아가는 과정이다.

합해지는 과정에는 조인, 역정규화가 있다. 테이블 간의 크기 차이가 크면 조인을, 테이블 간의 크기가 비슷하고 자주 합해야 한다면 역정규화가 더 효율적이다.

'컴퓨터 일반 > 데이터베이스론' 카테고리의 다른 글

회복과 동시성제어  (0) 2024.10.15
관계 대수 정리하기  (4) 2024.10.15
데이터베이스론 정리  (2) 2024.10.15