
논리적 모델링
ERD
를 도출한 후, 삽입, 삭제, 갱신 이상을 핸들링하는 과정
- 정규화를 통해 해결한다.
이상 현상
1. 삽입 이상
- 불필요 정보를 함께 저장하지 않고 특정 데이터를 저장하는 것이 불가능한 경우
2. 갱신 이상
- 반복된 데이터 중 일부만 수정 시, 데이터의 불일치가 발생하는 경우
3. 삭제 이상
- 다른 데이터를 함께 삭제하지 않고는 특정 데이터 삭제가 불가능한 경우
정규화 : Nomalization
- 데이터의 중복을 방지하고 보다 효율적으로 DB를 운영
- 중복된 데이터를 허용하지 않음으로써 무결성을 유지하고 저장 용량을 감소
- 이상 현상을 해소하는 과정
제 1 정규화
- Entity에서 하나의 속성이 단일 값(원자 값)을 갖도록 하는 것.
- 즉, 테이블의 COL이 하나의 값을 갖도록 테이블을 분해

정규화 진행 ↓

제 2 정규화
-
제 1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것
-
완전 함수 종속
: PK의 부분집합이 결정자가 되어선 안된다는 것
-
즉, 복합키를 PK로 가지는 테이블에서 각 복합키의 일부에 종속되는 COL이 테이블에 없도록 테이블을 구분짓는 것

정규화 진행 ↓

제 3 정규화
- 제 2 정규화를 진행한 테이블에 대해 이행 함수 종속을 제거하는 것
- 즉, 주식별자가 아닌 속성들 중에서 종속 관계 속성을 제거하는 것이다.
- 이행 함수 종속
: A → B, B → C
가 성립할 때, A → C
가 성립되는 것

정규화 진행 ↓

BCNF 정규화
- 제 3 정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해 하는 것

해당 테이블에서 기본 키
는 (학생번호, 특강이름)
이며,
기본 키가 교수를 결정짓는다.
또한, 여기서 교수는 특강 이름을 결정짓는다.
(교수 → 특강이름)

따라서 이를 테이블을 분리하여 교수
가 후보키가 되게끔 한다.
반정규화 : De-Nomalization
- 정규화 작업이 완료된 후, 물리 모델링 과정에서 시스템의 성능 향상 및 개발 과정의 편의성, 운영 단순화를 위한 과정
- 데이터의 중복을 일정 감수하면서 DB의 성능 향상을 목적으로 둠
- 데이터 무결성 유지와 일정 성능 유지의 딜레마 사이에서 진행하는 것
[참고자료]