database/DataBase 설계

[DB 설계] 정규화

솧이 2022. 9. 4. 23:35

▶ 이상 (Anomaly)

테이블에서 일부 속성들의 종속으로 인하여 데이터의 중복(redundancy)이 발생하고 이러한 중복으로 인해 테이블의 조작(manupulation) 시 문제가 발생하는 현상

 

▷ 이상(Anomaly)의 종류

삽입 이상(Insertion Anomaly)

삭제 이상(Deletion Anomaly)

갱신 이상(Update Anomaly)

 

- 삽입 이상 (Insertion Anomaly)

테이블에 데이터를 삽입할 때 의도와는 다르게 원하지 않는 값들로 인해 삽입할 수 없게 되는 현상

 

- 삭제 이상 (Deletion Anomaly)

테이블에서 한 튜플을 삭제할 때 의도와는 상관 없는 값들도 함께 삭제되는, 즉 연쇄 삭제가 발생하는 현상

 

- 갱신 이상 (Update Anomaly)

테이블에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성(inconsistenct)이 생기는 증상

 

 

 

* 정규화를 이해하려면 '함수적 종속' 의 의미를 꼭 알아야 한다

함수적 종속 (Functional Dependency)

어떤 테이블 R, 

X, Y는 각각 R의 속성(column) 집합의 부분 집합

속성 X 값에 대해 속성 Y의 값은 오직 하나만 대응될 때 Y는 X에 함수적 종속 관계에 있다고 한다

 

예시) 

‘학번’, ‘이름’ ‘학년’ ‘학과’ 는 각각 ‘학번’ 속성에 함수적 종속이다.

학번 -> 이름

학번 -> 학년

학번 -> 학과

혹은

학번 -> 이름, 학년, 학과 

 

Q. '학번'에 종속적이다 라는 말은?

A. '학번'이 결정되면 다른 값은 올 수 없다는 뜻이다

     즉, '학번 9411' 에 대해서 (서진수, 4, 컴퓨터 공학과) 이외에는 다른 어떤 값도 존재할 수 없다

     복합키 조합은 중복될 수 없다

     복합키는 데이터를 대표하는 키가 여러 개의 컬럼으로 구성된 것을 의미한다. 데이터를 더욱 효과적으로 찾기 위해             키에는 기본적으로 PK 인덱스가 생성됩니다.

 

결정자, 종속자

X -> Y의 관계를 갖는 속성 X, Y에서 X를 결정자(determinant), Y를 종속자(dependent) 라고 한다

 

함수적 종속 다이어그램

한 테이블에 존재하는 '속성' 간의 함수적 종속 관계를 그림으로 표현한 것

 

완전 함수 종속, 부분 함수 종속

위의 그림을 보면

학번, 과목 번호 -> 성적

학번 -> 학년

'성적'은 (학번, 과목번호) 에 완전 함수적 종속(full functional dependency)이고

'학년'은 (학번, 과목번호)에 완전 함수적 종속은 아니고 부분 함수적 종속(partial functional dependency)이다

 

 

 

정규화 (Normalization)

테이블의 '속성'들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 '무손실 분해' 하는 과정이다

 

무손실 분해 (Nonloss Decomposition)

테이블 R에서 일부 속성들로만 추출하며 테이블 R1, R2 가 national join을 통해 원래의 테이블 R로 정보 손실 없이 복귀할 수 있는 경우이다

R은 R1, R2로 무손실 분해되었다고 한다

 

 

정규화의 목적

가능한 중복(Redundancy)을 제거하여, 삽입/삭제/갱신 이상(anomaly) 가능성을 줄이기

 

 

정규화의 종류 (단계)

 

비정규 릴레이션

                 ↓

제 1정규형 : 1NF 테이블 R에 속한 모든 속성의 도메인(domain)이 원자값(atomic value)로만 구성된 정규형
도메인(domain) : 하나의 속성이 취할 수 있는 동일한 타입의 원자값들의 집합

                 ↓

제 2정규형 : 2NF 테이블 R이 제 1정규형이고 기본키가 아닌 모든 속성이 기본키에 대해 완전 함수적 종속을
만족
하는 정규형이다 -> 부분적 함수 종속을 제거

                 ↓

제 3정규형 : 3NF 테이블 R이 제 2정규형이고 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
이행적 함수 종속(Transitive Functional Dependency) 
: A -> B 이고 B -> C 일 때 A -> C를 만족하는 관계

                 ↓

BCNF

                 ↓

제 4정규형 : 4NF

                 ↓

제 5정규형 : 5NF

 

 

 

- 제 2정규형 : 2NF

부분 함수 종속 테이블을 만든 후에 완전 함수종속 부분을 생성?

 

- 제 3정규형 : 3NF

- 최종 형태 ( ~ 3정규형)

 

 

'database > DataBase 설계' 카테고리의 다른 글

[Oracle] PL/SQL  (0) 2022.09.05
[DB 설계] 관계형 모델  (0) 2022.09.04
[DB 설계] ER-Model  (0) 2022.09.04