프로그래밍/SQL / / 2022. 9. 23. 09:42

[ SQL ] 정규화 개념 목적 용어 정의 1차 2차 3차

정규화 목적
정규화 목적

1. 정규화의 개념

 

1) 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 말한다.

2) 함수적 종속성을 이용해서 연관성 있는 속성들을 분류하고, 각 릴레이션들에서 이상(anomaly) 현상이 생기지 않도록 하는 과정이다.

3) 데이터의 일관성을 유지하고 데이터의 중복을 방지하며 데이터의 유연성을 유지하기 위해 데이터를 분해하는 과정이다.



2. 정규화의 목적

 

1) 데이터 중복을 최소화

2) 데이터베이스 구조 확장 시 재 디자인을 최소화

3) 무결성 제약 조건의 시행을 간단하게 하기 위해

 

 

 

 

 

 

3. 정규화 용어

 

1) 함수적 종속성(FD, Functional Dependency) : 테이블의 특정 컬럼 A의 값을 알면 다른 컬럼 B의 값을 알 수 있을 때, 컬럼 B는 컬럼 A에 함수적 종속성이 있다고 한다.

 

예) 주민등록번호를 알면 고객명을 알 수 있다. -> 고객명은 주민등록번호에 함수적 종속성이 있다.

 

2) 정규화 (Normalization) : 함수적 종속성 등과 같은 이론에 근거하여 관계형 데이터베이스 테이블의 삽입/삭제/갱신 시 이상(anomaly)현상 발생을 최소화하기 위해 좀 더 작은 단위의 테이블로 설계하는 과정을 말한다. 정규화는 데이터 모델을 정규형에 맞도록 고치는 과정이라고 할 수가 있다.

 

3) 정규형 (NF, Normal Form) : 정규화된 결과

 

 

 

4. 정규화 이론

 

1) 1차 정규화

 

- 한 속성에 여러 개의 속성값을 갖거나 같은 유형의 속성이 여러 개인 경우 => 해당 속성을 분리시킨다

- 1차 정규화 작업으로 속성의 원자성을 확보하게 된다.

 

2) 2차 정규화

 

- 주식별에 완전 함수 종속되지 않은 속성을 분리한다.

- 2차 정규화 작업으로 부분 종속 속성(Partial Dependency Attribute)이 된 속성을 분리한다.

 

3) 3차 정규화

 

- 일반 속성끼리 함수 종속이 발생한 속성을 분리한다.

- 3차 정규화 작업으로 이행적 종속 속성(Transitive Dependency Attribute)을 분리한다.



5. 제1 정규형

 

- 한 속성에 여러 개의 속성 값을 갖거나 같은 유형의 속성이 여러 개인 경우, 해당 속성을 분리시켜야 함을 뜻한다. 예) 기존 회원 엔터티에 있었던 연락처 속성을 제거하고 회원 연락처 엔터티를 추가해서 제1 정규형을 만족하게 됨.

 

 

 

6. 제2 정규형

 

1) 제1 정규형을 만족하고 엔터티 내에서 식별자가 아닌 속성은 식별자 전체에 종속되어야 한다.

2) 식별자 전체에 종속적이지 않거나 복합 식별자들 중 일부 식별자 속성(들)에만 종속적인 일반 속성은 분리되어야 한다.

 

예) 고객 주문 엔터티 식별자 : 고객 아이디 + 주문 순번

고객 명과 고객등급 속성은 위 엔터티의 복합 식별자에 완전 종속되지 않음.

- 고객 아이디 컬럼에만 종속되고 있다.

=> 고객 엔터티 추가해서 고객 아이디만 식별자로 하여 고객명과 고객등급 속성을 관리함.

==> 제2 정규형 작업을 통해 복합 식별자의 일부 속성에만 함수 종속하는 일반 속성이 사라졌으며 제2 정규형을 만족하게 됨.



7. 제3 정규형

 

1) 제2 정규형을 만족하고 일반 속성들 간에도 함수 종속관계가 존재하지 않아야 한다.

2) 제3 정규형을 만족하려면 일반 속성들 간 종속관계가 존재하는 것들은 분리되어야 한다.

 

예) 고객 엔터티의 식별자는 고객 아이디임.

고객 아이디 속성을 제외하고 일반 속성인 작업 코드와 작업명 속성 간에 함수 종속이 발생함.

작업명은 작업 코드가 정해져 있기 때문에 작업명은 작업 코드에 함수 종속된다고 할 수 있음.

식별자를 제외한 일반 속성 간에 함수 종속이 발생하는 경우를 제3 정규형 위반이라고 함.

 

=> 직업 엔터티를 추가하여 일반 속성끼리의 함수 종속을 제거함.

 

LIST
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유