반응형
정규화 (Normalization)****
- 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정
- 데이터 중복을 제거하며 데이터 모델의 독립성을 확보하기 위한 방법
- 비즈니스에 변화가 발생하여도 데이터 모델의 변경을 최소화할 수 있다.
- 제1정규화부터 제5 정규화까지 있지만, 실질적으로 제3정규화까지만 수행
- 불필요한 데이터를 입력하지 않아도 되기 때문에 중복 데이터가 제거된다.
*정규화를 하지 않아 이상현상이 존재하는 모델입니다.
*정규화를 진행한 사진
> 정규화 절차
정규화 절차 | 설명 |
제1정규화 | - 속성의 원자성을 확보한다. - 기본키를 설정한다. |
제2정규화 | - 기본키가 2개 이상의 속성으로 이루어진 경우 부분 함수 종속성을 제거(분해)한다. |
제3정규화 | - 기본키를 제외한 칼럼 간에 종속성을 제거한다. - 즉, 이행 함수 종속성을 제거한다. |
BCNF | - 기본키를 제외하고 후보키가 있는 경우 후보키가 기본키를 종속시키면 분해한다. |
제4정규화 | - 여러 칼럼들이 하나의 칼럼을 종속시키는 경우 분해하여 다중값 종속성을 제거한다. |
제5정규화 | - 조인에 의해서 종속성이 발생되는 경우 분해한다. |
함수적 종속성(Functional Dependency)
제1정규화
- 함수적 종속성을 근거로 하며 함수적 종속성이란 X -> Y이면 Y는 X에 함수적으로 종속된다고 말한다.
- X가 변화하면 Y도 변화하는지 확인한다.
- ex) 회원 ID가 변화하면 이름도 변경될 것이고 이런 경우는 회원 ID가 기본키가 되고, 회원 ID가 이름을 함수적으로 종속한다.
- 계좌 테이블 X가 Y의 칼럼들을 함수적으로 종속하고 한다.
- X는 계좌번호 하나만으로는 유일성을 만족하지 못한다고 가정하고 계좌번호와 회원 ID를 기본키로 잡은 것
- 기본키를 잡는 것이 제1정규화
제2정규화
- 부분 함수 종속성이란 | 기본키가 2개 이상의 칼럼으로 이루어진 경우에만 발생
- 키본키가 하나의 칼럼으로 이루어지면 제2정규화는 생략
- 위에 사진은 키본키에 있는 회원 ID가 변경되면 이름이 변경된다.
- 회원 ID가 이름을 함수적으로 종속하고 있는 것
- 이러한 경우가 부분 함수 종속성이라고 한다. (부분 함수 종속성이 발생하면 분해를 해야 한다.)
부분 함수 종속성을 제거하면 위의 사진과 같고 회원이라는 새로운 테이블이 도출되고 회원 ID가 기본키가 된다.
제3정규화
- 이행 함수 종속성을 제거한다. 이행 함수 종속성이란 키본키를 제외하고 칼럼 간에 종속성이 발생하는 것
- 제3 정규화는 제1정규화와 제2정규화를 수행한 다음에 해야 한다.
- 위처럼 관리점이 관리점 코드에 종속되는 것을 이행 함수 종속성이라 한다.
- 제3정규화를 수행하면 위에 사진처럼 관리점 테이블이 도출되고 관리점 코드가 기본키가 된다.
BCNF(Boyce-Codd Normal Form)
- 복수의 후보키가 있고, 후보키들이 복합 속성이어야 하며, 서로 중첩되어야 한다.
- 위의 사진처럼 키본키(학번, 과목 번호)가 교수를 함수적으로 종속하고 있다.
- 이때 교수가 후보키(최소성과 유일성을 만족)이고 교수가 과목 번호를 함수적으로 종속하는 경우 분해가 일어난다.
- 위와 같은 경우 교수 테이블을 새롭게 만들고 기본키는 교수로 하고 칼럼은 과목 번호가 된다.
반응형
'재미로하는 공부' 카테고리의 다른 글
2022년 데이터자격시험 sqld 일정 (17) | 2022.04.02 |
---|---|
[sqld] 데이터 모델링 정규화와 성능 (20) | 2022.04.01 |
[sqld] 데이터 모델링 이론 문제 간단 정리 (7) | 2022.03.29 |
[sqld] 엔터티 식별자 (Entity Identifier) (3) | 2022.03.29 |
[sqld] 데이터 모델링 식별 관계와 비식별 관계 (16) | 2022.03.28 |