데이터의 중복을 최소화
하고 데이터의 일관성을 최대화한다.데이터를 분해하는 과정
으로 이해할 수 있다.이상현상(Anomaly)?
- 삽입 이상 : 데이터를 삽입할 때 의도와 상관없는 데이터도 함께 삽입되는 문제
- 삭제 이상 : 데이터를 삭제할 때 의도와 상관없는 데이터도 함께 삭제되는 문제
- 수정 이상 : 데이터를 수정할 때 의도와 상관없는 데이터도 함께 수정되는 문제
학번(학생 번호) | 강의 |
---|---|
1 | 컴퓨터 공학 개론, 알고리즘 |
2 | 핵융합 |
3 | 기계 공학 개론 |
4 | 광학 이론 |
5 | 컴퓨터 공학 개론, 알고리즘, 컴퓨터 구조 |
👇🏻 제 1정규화를 진행했을 경우
학번(학생 번호) | 강의 |
---|---|
1 | 컴퓨터 공학 개론 |
1 | 알고리즘 |
2 | 핵융합 |
3 | 기계 공학 이론 |
4 | 광학 이론 |
5 | 컴퓨터 공학 개론 |
5 | 알고리즘 |
5 | 컴퓨터 구조 |
학번이 여러번 등장하지만, 강의명은 한번씩 등장하므로 정규화가 적용된 것이 맞음
👉🏻 이 문제를 해결하기 위해 제 2정규화 적용
키에 속하지 않는 속성들은 기본 키에 완전 함수 종속이도록 한다.
완전 함수 종속 : 기본키의 부분 집합이 결정자가 되면 안 된다는 것을 의미한다.
현재 기본키인 (학번, 강의)가 성적을 결정하고, 학과도 결정한다.
👉🏻 단, "강의"만 보았을 때도 학과를 결정하는 문제가 있다.
👉🏻 또한, "학번"만 보았을 때도 지도 교수를 결정하는 문제가 있다.
👉🏻 해결 방법 : 현재 테이블을 소속 테이블과 수강 테이블로 쪼개어 해결할 수 있다.
🥟 참고 사항 : 기본적으로 기본키가 1개의 속성으로만 구성되어 있다면, 자동으로 제2정규화는 만족하므로, 제 2정규화 과정을 생략할 수 있다.
이행적 종속
- A->B->C가 성립할 때, A ->C가 성립하는 것
- 기본키가 아닌 속성이 결정자가 아니도록 하면 해결된다. 👉🏻 별도의 테이블로 분해