정규화(Normalization)
1. 어떤 관계라도 데이터베이스 내에서 표현이 가능하도록 만드는 것
2. 관계에서 바람직하지 않은 삽입, 삭제, 갱신 이상이 발생하지 않도록 한다.
3. 새로운 형태의 데이터가 삽입될 때 관계를 재구성할 필요성을 줄일 수 있다.
4. 보다 간단한 관계 연산에 기초하여 검색을 보다 효율적으로 할 수 있다.
- 이상(anomaly) 현상
: 속성 간에 존재하는 여러 종속 관계를 하나의 릴레이션에 표현함으로써 데이터의 중복으로 인해 발생하는 여러가지 현상
■ 삭제 이상
: 연쇄삭제에 의한 정보의 손실
■ 삽입 이상
: 원하지 않는 정보의 강제 삽입
■ 갱신 이상
: 중복 데이터의 일부 갱신으로 정보의 모순성 발생
- 함수 종속
: X가 Y를 결정한다, Y가 X에 의해 결정된다, X는 Y의 결정자이다
: X(determinant)를 결정자, Y를 종속자
: {학번, 과목번호} -> {성적}은 완전 함수 종속(FFD: Full Functional Dependency), {학번} -> {학년}은 부분 함수 종속(PFD: Partial Functional Dependency)
- 정규화 과정
: 일반적으로 데이터베이스를 설계할 때에는 BCNF까지만 고려
: 정규화 과정을 거칠 수록 join 연산으로 인한 성능저하를 가져올 수 있기 때문에 데이터의 정합성과 데이터의 무결성을 우선으로 할지 데이터베이스 구성의 단순화와 성능을 우선으로 할지를 결정
: 반대 개념으로 역정규화
■ 제1정규화(1NF)
: 어떤 릴레이션 R에 속한 모든 도메인이 원잣값(atomic value)만으로 되어 있다.
■ 제2정규화(2NF)
: 어떤 릴레이션 R이 제1정규형이고, 키에 속하지 않은 속성 모두가 키에 완전 함수 종속
: 무손실 분해
■ 제3정규화(3NF)
: 어떤 릴레이션 R이 2NF이고, 모든 속성들이 기본키에 이행적 함수 종석(transitive FD)이 아니면 제3정규형에 속한다.
: 이행적 함수 종속성은 A -> B 와 B-> C의 함수 종속성이 존재하면(A->B∧B->C) 속성 C가 이행적으로 A에 종속 (A->C)■ 보이스/코드 정규형(BCNF)
: 릴레이션 R이 제3정규형을 만족하고, 모든 결정자가 후보키이어야한다.
'Major > Database' 카테고리의 다른 글
데이터베이스 - SQL (0) | 2015.11.25 |
---|---|
데이터베이스 - 관계 대수 (0) | 2015.11.25 |
데이터베이스 - 관계형 데이터베이스 (0) | 2015.11.24 |
데이터베이스 - 데이터 모델 (0) | 2015.11.24 |
데이터베이스 - 기초 (3) | 2015.11.24 |