어두운 지도를 조금씩 밝혀나가는 데에서 즐거움을 느낀다면
: 잘못 설계된 릴레이션 스키마(관계형 스키마)를 더 작은 속성 집합으로 분해하여 바람직한 형태의 스키마로 변환하는 것
- 정규화의 목적
- 정규화의 원칙
- 이상 (Anomaly)
: 데이터베이스 내에서 데이터들이 불필요하게 중복되어 릴레이션 조작 시에 발생하는 예기치 못한 곤란한 현상.
1. 삽입 이상 (Insertion Anomaly)
: 릴레이션에 데이터를 삽입할 때 원하지 않는 값들도 함께 삽입되거나, 삽입해야하는 현상
2. 삭제 이상 (Deletion Anomaly)
: 릴레이션에서 튜플을 삭제할 때 의도치 않은 값들도 함께 삭제되어 유지해야할 정보도 연쇄 삭제되고 따라서 정보의 손실이 일어나는 현상
3. 갱신 이상(Update Anomaly)
: 릴레이션 내의 한 튜플의 속성 값을 갱신할 때 중복된 여러 튜플 중 일부 튜플만 값이 바뀌어서 정보에 모순이 일어나는 현상
: 릴레이션의 속한 모든 도메인이 원자값으로만 되어있는 정규형
제 1 정규화의 예시
: 제 1 정규형에 속하는 릴레이션 중 기본 키가 아닌 모든 속성이 기본 키에 대해 완전 함수 종속인 릴레이션
- 함수 종속 (Functional Dependency)
: 릴레이션 R에서 X와 Y를 R이 가진 속성들의 부분 집합이라고 할 때, 시간에 관계 없이 속성 X의 값 각각에 대해 속성 Y의 값이 하나만 연관되어 있을 때 Y는 X에 함수 종속이다. (X → Y)
- 완전 함수 종속 (Full Functional Dependency)
: 릴레이션 R에서 X와 Y를 R이 가진 속성들의 부분 집합이라고 할 때, Y가 X에 함수 종속이면서 X의 진부분집합에는 함수 종속이 아닐 때 Y는 X에 완전 함수 종속이다.
- 제 2 정규화
: 제 1 정규형이면서 제 2 정규형이 아닌 릴레이션은 올바른 프로젝트 연산을 통해 두 개의 제 2 정규형 릴레이션으로 분해할 수 있다.
: 제 2 정규형에 속하는 릴레이션 중 기본 키에 속하지 않는 모든 속성이 기본 키에 대해 이행적 함수 종속이 아닌 릴레이션
- 이행적 함수 종속 (Transitive Functional Dependency)
: 릴레이션 내의 속성들의 부분 집합 A, B, C에 대해, 함수 종속 관계 A → C가 성립할 때, A → B와 B → C가 성립하는 경우 C는 A에 이행적 함수 종속이다.
- 제 3 정규화
: 속성 A가 기본 키인 릴레이션에서 속성 집합 B, C에 대해 A → B, B → C, A → C가 성립한다면 {A, B}, {B, C}로 분해하는 것이 올바른 분해이다.
: 함수 종속 관계에서 모든 결정자가 후보 키인 릴레이션
- 보이스/코드 정규화
: 다치 종속 A -≫ B 가 성립하는 릴레이션 내에 모든 속성이 A에 함수 종속이라면 제 4 정규형에 속한다.
- 다치 종속 (Multivalued Dependency)
: 릴레이션 내의 속성들의 부분 집합 A, B, C에 대해, 속성 쌍 (A, C) 값에 대응되는 B 값의 집합이 A 값에 만 종속되고 C 값에는 독립이라면 B는 A에 다치 종속이다. (A -≫ B)
- 제 4 정규화
: [Fagin의 정리] 릴레이션 R(A,B,C)에 다치 종속 A -≫ B | C 를 만족하는 속성 집합 A, B, C 가 존재하기만 하면, 두 프로젝션 R1(A, B)와 R2(A,C)는 무손실 분해이다.
: 존재하는 모든 조인 종속이 후보 키를 통해서만 만족되는 릴레이션
- 조인 종속 (Join Dependency)
: 릴레이션 R의 속성에 대한 n개의 부분집합 A1, A2, ..., An이 있을 때, 이 릴레이션 R이 자신의 프로젝션 A1, A2, ..., An을 모두 조인한 결과와 똑같다면 R은 조인 종속 *(A1, A2, ..., An)을 만족한다.
- 제 5 정규화
: 시스템 성능 향상, 개발 및 운영상 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 것
: 두 테이블이 조인되는 경우가 많아서 하나의 테이블로 합쳐 사용하는 것이 성능 향상에 도움이 될 경우 수행하는 반정규화
테이블 통합의 예시
: 테이블을 수직 또는 수평으로 분할하여 수행하는 반정규화
수평 분할의 예시
: 여러 테이블에서 데이터를 추출해서 사용해야 하거나, 다른 서버에 저장된 테이블을 이용해야 하는 경우 중복 테이블을 추가하는 반정규화
: 데이터를 처리할 때 데이터를 조회하는 경로를 단축하기 위해 자주 사용되는 속성을 추가하는 반정규화
3. 데이터베이스 구축 - 논리 데이터베이스 설계(정규화와 반정규화)
87. 정규화 (Normalization)
: 잘못 설계된 릴레이션 스키마(관계형 스키마)를 더 작은 속성 집합으로 분해하여 바람직한 형태의 스키마로 변환하는 것
- 정규화의 목적
- 정규화의 원칙
- 이상 (Anomaly)
: 데이터베이스 내에서 데이터들이 불필요하게 중복되어 릴레이션 조작 시에 발생하는 예기치 못한 곤란한 현상.
1. 삽입 이상 (Insertion Anomaly)
: 릴레이션에 데이터를 삽입할 때 원하지 않는 값들도 함께 삽입되거나, 삽입해야하는 현상
2. 삭제 이상 (Deletion Anomaly)
: 릴레이션에서 튜플을 삭제할 때 의도치 않은 값들도 함께 삭제되어 유지해야할 정보도 연쇄 삭제되고 따라서 정보의 손실이 일어나는 현상
3. 갱신 이상(Update Anomaly)
: 릴레이션 내의 한 튜플의 속성 값을 갱신할 때 중복된 여러 튜플 중 일부 튜플만 값이 바뀌어서 정보에 모순이 일어나는 현상
1) 제 1 정규형 (1NF)
: 릴레이션의 속한 모든 도메인이 원자값으로만 되어있는 정규형
2) 제 2 정규형 (2NF)
: 제 1 정규형에 속하는 릴레이션 중 기본 키가 아닌 모든 속성이 기본 키에 대해 완전 함수 종속인 릴레이션
- 함수 종속 (Functional Dependency)
: 릴레이션 R에서 X와 Y를 R이 가진 속성들의 부분 집합이라고 할 때, 시간에 관계 없이 속성 X의 값 각각에 대해 속성 Y의 값이 하나만 연관되어 있을 때 Y는 X에 함수 종속이다. (X → Y)
- 완전 함수 종속 (Full Functional Dependency)
: 릴레이션 R에서 X와 Y를 R이 가진 속성들의 부분 집합이라고 할 때, Y가 X에 함수 종속이면서 X의 진부분집합에는 함수 종속이 아닐 때 Y는 X에 완전 함수 종속이다.
- 제 2 정규화
: 제 1 정규형이면서 제 2 정규형이 아닌 릴레이션은 올바른 프로젝트 연산을 통해 두 개의 제 2 정규형 릴레이션으로 분해할 수 있다.
3) 제 3 정규형 (3NF)
: 제 2 정규형에 속하는 릴레이션 중 기본 키에 속하지 않는 모든 속성이 기본 키에 대해 이행적 함수 종속이 아닌 릴레이션
- 이행적 함수 종속 (Transitive Functional Dependency)
: 릴레이션 내의 속성들의 부분 집합 A, B, C에 대해, 함수 종속 관계 A → C가 성립할 때, A → B와 B → C가 성립하는 경우 C는 A에 이행적 함수 종속이다.
- 제 3 정규화
: 속성 A가 기본 키인 릴레이션에서 속성 집합 B, C에 대해 A → B, B → C, A → C가 성립한다면 {A, B}, {B, C}로 분해하는 것이 올바른 분해이다.
4) 보이스/코드 정규형 (BCNF; Boyce-Codd Normal Form)
: 함수 종속 관계에서 모든 결정자가 후보 키인 릴레이션
- 보이스/코드 정규화
5) 제 4 정규형 (4NF)
: 다치 종속 A -≫ B 가 성립하는 릴레이션 내에 모든 속성이 A에 함수 종속이라면 제 4 정규형에 속한다.
- 다치 종속 (Multivalued Dependency)
: 릴레이션 내의 속성들의 부분 집합 A, B, C에 대해, 속성 쌍 (A, C) 값에 대응되는 B 값의 집합이 A 값에 만 종속되고 C 값에는 독립이라면 B는 A에 다치 종속이다. (A -≫ B)
- 제 4 정규화
: [Fagin의 정리] 릴레이션 R(A,B,C)에 다치 종속 A -≫ B | C 를 만족하는 속성 집합 A, B, C 가 존재하기만 하면, 두 프로젝션 R1(A, B)와 R2(A,C)는 무손실 분해이다.
6) 제 5 정규형 (5NF)
: 존재하는 모든 조인 종속이 후보 키를 통해서만 만족되는 릴레이션
- 조인 종속 (Join Dependency)
: 릴레이션 R의 속성에 대한 n개의 부분집합 A1, A2, ..., An이 있을 때, 이 릴레이션 R이 자신의 프로젝션 A1, A2, ..., An을 모두 조인한 결과와 똑같다면 R은 조인 종속 *(A1, A2, ..., An)을 만족한다.
- 제 5 정규화
88. 반정규화 (Denormalization)
: 시스템 성능 향상, 개발 및 운영상 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 것
1) 테이블 통합
: 두 테이블이 조인되는 경우가 많아서 하나의 테이블로 합쳐 사용하는 것이 성능 향상에 도움이 될 경우 수행하는 반정규화
2) 테이블 분할
: 테이블을 수직 또는 수평으로 분할하여 수행하는 반정규화
3) 중복 테이블 추가
: 여러 테이블에서 데이터를 추출해서 사용해야 하거나, 다른 서버에 저장된 테이블을 이용해야 하는 경우 중복 테이블을 추가하는 반정규화
4) 중복 속성 추가
: 데이터를 처리할 때 데이터를 조회하는 경로를 단축하기 위해 자주 사용되는 속성을 추가하는 반정규화
'도서 개발 공부 > 정보 처리 기사 필기' 카테고리의 다른 글