▶ 이상 (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 |