부주의한 데이터 베이스 설계
- 제어할 수 없는 데이터 중복을 야기
- 갱신이상을 유발
->
데이터 불일치 발생->
N-329로 변경을 할 때, 일련번호 1번만 수정이 되고 일련번호 3번은 수정이 되지 않는 경우이다.정규화의 의미
릴레이션 구조를 보다 정확하게 반영하고, 데이터 중복을 줄이고, 데이터 변경 시 발생하는 문제점을 방지하고, 데이터 무결성을 유지하는 것
다른 속성을 고유하게 결정하는 하나의 속성
A
가 속성 B의 결정자
이면, B
는 A에 함수적으로 종속
한다라고 말함.함수종속의 종류
🌱 부분적 함수 종속
- 복합키로 된 기본키에 모두에 충족하지 않고 부분적으로 충족이 되는 속성들을 뜻한다.
🌱 완전 함수 종속
- 기본키 전체에 의해 종속된 속성을 말한다.
🌱 이행적 함수 종속
- 기본키가 아닌 속성들 사이에 함수적 종속관계가 있을 때를 말한다.
예를들어 속성에 교수이름과 교수연구실이 있다하면 이 둘은 이행적 함수 종속에 속한다.
->
제1정규형)릴레이션의 모든 속성에 반복 그룹이 나타나지 않으면 제1정규형을 만족함
반복그룹은 다중값속성을 릴레이션으로 만들때 자주 발생한다.
비정규형의 예
제1정규화 방법1
반복그룹을 각각의 튜플로 표현을 한다.
제1정규화 방법2
1. 새로운 릴레이션을 만들어 기본키를 원래 릴레이션의 키와 반복그룹속으로 만듦(복합키)
2. 원리 릴레이션에서 반복그룹속성을 삭제
->
제2정규형 )->
별도의 릴레이션으로 분리"부분적 함수종속의 조건"
1. "기본키가 복합키"여야만 부분적 함수종속있음
2. 기본키의 일부에만 함수종속인 속성이 존재
->
제3정규형)이행적 함수종속을 제거
예시
->
BCNF )제3정규형이 부적절해지는 상황
1) 2개 이상의 후보키가 존재
->
(학번, 교수), (교수, 수강과목)
2) 후보키들이 복합적->
두 후보키 모두 복합키
3) 서로 중복될 수 있음->
속성(교수)가 중복
->
해결방법
모든 결정자를 후보키로 만든다.
다중값 종속이란?
한 릴레이션에 다중값 종속이 2개 이상있을 경우의 예이다.
->
해결방법
조인종속이란?
- 다중값 종속이 있는 원래의 릴레이션을 제4정규형에 맞게 분해
- 그런데 SQL로 질의하는 과정에서 2개의 제4정규형 릴레이션을 조인하여야 하는데, 이때 원래의 튜블보다 추가되는 경우를 조인종속이라고 한다.
다치종속을 해소하는 과정에서 2개의 릴레이션으로 분해 ->
모든 릴레이션으로 분해 (3개의 릴레이션으로 분해)'
다시 조인연산을 하더라도 조인종속이 일어나지 않음