CS/데이터베이스

Ch7. Normalization

Frankie 2020. 2. 2. 16:16

이번 챕터에서는 정규화에 대해서 배웠는데

정규화의 의미, 이상 현상이 무엇인지, 함수 종속이 무엇을 의미하는지, 정규화 과정에 대해서 배웠다

 

정규화는 하나의 릴레이션에 하나의 의미만 존재할 수 있도록 릴레이션을 분해해가는 과정인데

이 과정에서 데이터 중복이 있을 때 이상 현상이 발생할 수 있다

이런 데이터의 중복을 피하기 위해 우리는 스키마를 분해해서 정규화를 하게 된다

정규화를 하면 자료 저장 공간 최소화, 데이터베이스 내 데이터 불일치 되는 위험 요소 최소화하므로 사용하기 좋은 데이터베이스 스키마 설계가 된다

 

이상 현상은 릴레이션의 설계가 잘못되어 불필요한 데이터  중복이 발생하고 데이터 중복이 릴레이션을 조작할 때 문제를 발생시키는 것인데 갱신 이상, 삽입 이상, 삭제 이상이 있다

 

함수 종속은 속성 X의 값을 알면 속성 Y의 값이 정해지는 의존 관계를 의미한다

릴레이션의 한 속성 값을 알 때 다른 속성도 유일하게 어떤 값이 되는지 알 수 있다

이 때 X를 Y의 결정자라고 한다

함수 종속의 성질로는

1. 완전 함수 종속 - 릴레이션에서 속성 집합 Y가 속성 집합 X에 함수적으로 종속되어 있지만 X 전체가 아닌 일부분에는 종속되지 않는 것

2. 부분 함수 종속 - 결정자가 여러 개의 속성으로 구성되어 있고 Y가 X 전체가 아닌 일부분에도 함수적으로 종속되는 것

 

정규화의 목적은 어떤 릴레이션도 데이터베이스 내에 표현하는 것이 가능하게 만드는 것이고 릴레이션에서 갱신 이상이 발생하지 않게 하며 새로운 데이터가 삽입될 때 있는 릴레이션을 이용해서 새로운 데이터를 재정의할 수 있도록 릴레이션을 분해해 가고 하나의 기본키가 있을 때 종속 관계를 유지할 수 있도록 분리시켜 완벽하게 독립성을 가지는 속성끼리 이루어지도록 새로운 릴레이션을 만들어가는 것이다

 

두 번째 강의에서는 정규형에 대해서 배웠는데 

정규형은 

정규형은 이런 형태이고 안으로 들어갈수록 제1정규형~BCNF까지 기본 정규형이고 제4정규형부터는 고급 정규형이다 보통 BCNF까지 맞춰주는 것이 일반적이다

제1정규형은 한 튜플의 한 속성에 여러 개의 값을 가지고 있는 릴레이션을 하나의 값만 가질 수 있도록 바꿔주는 것이다

하지만 제1정규형을 만들어도 릴레이션이 부분 함수 종속성을 가지고 있기 때문에 이상 현상이 발생한다

제2정규형은 제1정규형인 상태에서 부분 함수 종속성을 제거하는 것인데 제2정규형 또한 하나의 릴레이션에 함수 종속 관계가 여러 개 존재하면 논리적으로 이행적 함수 종속 관계가 유도되어 이상현상이 발생할 수 있다

제3정규형은 제2정규형이며 모든 속성들이 기본키에 이행적 함수 종속이 되지 않는 것을 의미한다

보이스/코드 정규형(BCNF)은 제3정규형을 보완한건데 여러 개의 후보키가 존재할 경우 제3정규형 만족해도 이상 현상이 발생하는데 키에 대해서 직접적으로 함수 종속이 되는 제3정규형 릴레이션에서 후보키가 아닌 결정자를 제거하는 것이다

 

이렇게 정규화와 정규형에 대해서 배워봤는데 그래도 이번 챕터는 나름 정리하기 편했던 거 같아서 좋았다 이제 데이터베이스에서 중요한 E-R 모델, 정규화 등을 배워봤는데 이론을 배웠으니 실전에도 적용해봐야겠다

 

22강 정규화.pptx
0.31MB
23강 정규형.pptx
0.29MB

'CS > 데이터베이스' 카테고리의 다른 글

Ch9. Transaction  (0) 2020.02.02
Ch8. Indexing  (0) 2020.02.02
Ch6. Entity-Relationship Model  (0) 2020.01.29
Ch5. Advanced SQL  (0) 2020.01.23
Ch4. Intermediate SQL  (0) 2020.01.22