1. 정규화(Normalization)란?
◎ 정규화란 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법으로
데이터를 분해하는 과정.
◎ 데이터 중복을 제거하고 데이터 모델의 독립성을 확보하기 위한 방법.
◎ 제1정규화부터 제5정규화까지 있으나 보통 제3정규화까지만 수행.
◎ 비즈니스에 변화가 발생하여도 데이터 모델의 변경을 최소화시킬 수 있음.
◎ 정규화를 수행하게 되면 불필요한 데이터를 입력할 필요가 없어 중복데이터가 제거된다.
◎ 정규화를 하지 않을경우 삽입, 삭제, 갱신이상이 발생할 수 있다.
2. 정규화 절차
정규화 절차 | 설명 |
제 1 정규화 | - 속성(Attribute)의 원자성 확보(도메인이 원자값) - 기본키(Primary key) 설정 |
제 2 정규화 | - 기본키가 2개 이상의 속성으로 이루어진 경우, 부분 함수 종속성 제거 |
제 3 정규화 | 기본키를 제외한 컬럼 간 종속성 제거 (이행 함수 종속성 제거) |
BCNF | 후보키가 있는 경우, 후보키가 기본키를 종속시킬 때 (결정자가 모두 후보키인 경우 제거) |
제 4 정규화 | 여러 컬럼이 하나의 컬럼을 종속시킬 때 다중 값 종속성 제거 (다치 종속성 제거) |
제 5 정규화 | 조인에 의해 종속성이 발생했을 경우 |
3. 함수적 종속성(Functional Dependency)
◎ 함수적 종속이란 X→Y 이면 Y는 X에 함수적으로 종속한다고 말함.
◎ 함수적 종속인지 확인하려면 X가 변했을 때 Y도 변하는지 확인을 해본다.
◎ 제 1 정규화는 X의 컬럼값이 변화할 때 Y가 변한다면 X는 기본키가 되고 Y는 X에 함수적으로
종속한다고 한다.
이처럼 기본키를 찾는게 제 1 정규화다.
◎ 제 2 정규화는 부분 함수적 종속성을 제거할 때 사용한다. 기본키가 2개 이상 컬럼으로 이루어진 경우에만 발생한다.
기본키가 하나의 컬럼으로 이루어지면 제 2 정규화는 생략한다.
ID가 변경되면 이름이 바뀐다. -> ID가 이름을 함수적으로 종속하고 있음.
기본키가 ID인 테이블을 하나 더 만듦으로 부분 함수적 종속 제거
◎ 제 3 정규화는 이행적 함수 종속성을 제거한다.
이행적 함수 종속성이란 기본키 외의 컬럼간에 종속성이 발생하는 것이다.
제 3 정규화는 제 1 정규화와 제 2 정규화를 수행한 다음에 해야 함.
관리점이 관리점 코드에 종속되고 있음(이행 함수 종속성)
관리점코드가 기본키인 관리점 테이블이 생성된다.(이행 함수 종속성 제거)
◎ BCNF(Boyce-Codd Normalization Form)는 복수의 후보키가 있고, 후보키들이 복합 속성이어야하며, 서로 중첩되어야 함.
기본키(학번, 과목 코드)가 교수를 함수적으로 종속하고 있는데, 교수가 후보키(최소성, 유일성)이고, 교수가 과목 코드를 함수적으로 종속할 때 분해
교수가 기본키인 테이블을 새로 만든다.
'Programming > DataBase' 카테고리의 다른 글
[DataBase]계층형 조회(Connect by)를 사용하는 법을 알아보자! (1) | 2019.03.01 |
---|---|
[DataBase]DB에서 조건문을 사용해 보자! (0) | 2019.03.01 |
[DataBase]엔티티 식별자[Key](Entity Identifier)란 뭘까? (0) | 2019.02.21 |
[DataBase]관계(Relationship)이란 무엇일까? (0) | 2019.02.21 |
[DataBase]속성(Attribute)이란? (0) | 2019.02.21 |