(1) 정규화
1) 개요
① 데이터베이스의 릴레이션이나 튜플을 불필요한 중복없이, 수정할 때 의도하지 않았던 불필요한 사실이 추가, 삭제, 갱신되는 일이 없도록 DB를 재구성하는 과정을 공식화한 과정
2) 필요성
① 중복에 따른 갱신이상 현상의 제거로 일관성 유지
ü (갱신이상, 삽입이상, 삭제이상 현상제거)
② 효율적인 검색이 가능
③ 중복의 제거로 인한 저장 공간의 최소화
④ 데이터 신규 발생시 DB 재구성의 필요성을 감소(유연한 구조)
3) 목적
① 정보의 중복을 피하기(최소화) 하기 위해
② 삽입, 삭제, 갱신 이상의 발생을 방지
③ 효율적인 데이터 조작
4) 기본 개념
① 하나 이상의 릴레이션을 두개 이상의 릴레이션으로 분해(decomposition) 시키는 과정을 포함
② 무손실 분해(lossless decomposition)
ü 분해한 릴레이션을 조인하여 저장 정보의 손실없이 원래의 릴레이션을 생성할 수 있는 것
5) 정규화 단계
(2) 함수적 종속성 (Functional Dependency)
1) 정의
① 정규화 과정에서 중요하게 이용되는 개념으로서 관계형 데이터베이스의 릴레이션에서 애트리뷰트간의 관계를 정의할 때 사용되는데 좋은 릴레이션을 판단하는 기준을 정하는 요소로 사용된다.
② 어떤 릴레이션 R에서 애트리뷰트 X의 값 각각에 대해 애트리뷰트 Y의 값이 오직 하나만 연관되어 있을 때 Y는 X에 함수적으로 종속된다.
③ 함수적 종속성은 애트리뷰트들 사이의 관계에 대한 제약조건으로 애트리뷰트 X가 Y의 결정자이면 Y는 X에 함수적으로 종속된다.
2) 함수적 종속성 표기
① X → Y
ü X는 Y의 결정자(determinant), Y는 X의 종속자(dependent)이다.
② 결정자(determinant)
ü 결정자는 주어진 릴레이션에서 다른 애트리뷰트를 고유하게 결정하는 하나 이상의 애트리뷰트이다.
ü 기본적으로 기본키는 결정자이다.
학번 | 이름 | 학년 |
700100 | 김아무개 | 1 |
700200 | 류아무개 | 1 |
700200 | 박아무개 | 2 |
700300 | 최아무개 | 3 |
700400 | 한아무개 | 3 |
학번 → 이름, 학번 → 학년 함수 종속성 성립. 이름 → 학번은 성립하지 않는다.
3) 종류
① 완전 함수적 종속성
ü 어떤 릴레이션 R에서 속성 X가 속성 집합일 때, 속성 Y가 속성 A에 함수적으로 종속하면서, 속성 X의 어떤 진부분 집합에도 함수적으로도 종속하지 않으면, 속성 Y가 속성 X에 완전하게 함수적으로 종속한다.
진부분 집합
예) 집합 A={1,3}의 진부분집합은 공집합, {1}, {3}으로 모두 3개다 |
ü 여러 개의 속성이 모여서 하나의 기본키를 이룰 경우 기본키 전체가 있어야지만 어떤 속성이 결정될 때 완전 함수적 종속이다.
② 부분 함수적 종속성
ü 완전하게 함수적으로 종속하지 않으면 부분 함수적 종속성을 갖는다.
ü 여러 개의 속성이 모여서 하나의 기본키를 이룰 경우, 기본키를 구성하는 부분 속성만으로도 결정되어지면 부분 함수적 종속이다.
③ 이행 함수적 종속성
ü X → Y 이고, Y → Z 일 때 X → Z를 만족하는관계를 이행적 함수 종속이라 한다.
‘학번’ → ‘지도교수’ 이고, ‘지도교수’ → ‘학과’ 일 때 ‘학번’ → ‘학과’를 만족
(3) 이상현상
1) 개념
① 데이터의 중복으로 인해 릴레이션을처리할 때 발생한느 곤란한 현상
② 데이터베이스 사용자의 의도와는 다르게 다른 데이터가 삽입, 삭제, 갱신되는 현상
학번 | 과목 | 수강료 |
700100 | 데이터베이스 | 10,200 |
700200 | 데이터통신 | 10,150 |
700200 | 운영체제 | 10,250 |
700300 | 전자계산기구조 | 10,100 |
700400 | 데이터베이스 | 10,200 |
2) 갱신이상(update anomaly)
① 릴레이션 R에서 특정 속성값 갱신시에 중복 저장되어 있는 속성중 하나만 갱신하고 나머지는 갱신하지 않아서 발생하는 데이터의 불일치 현상
② 예제
ü 데이터베이스의 수강료를 200원 인상할 경우 ‘700100’번 학생의 수강료만 갱신하고, ‘700400’번 학생의 수강료는 200원 인상하지 않은 경우
3) 삭제이상(delete anomaly)
① 릴레이션 R에서 튜플을 삭제할 경우, 원하지 않는 정보까지도 삭제되는 현상
② 예제
ü 학번이 ‘700200’인 학생을 삭제할 경우 ‘데이터통신’의 수강료가 10,150이라는 정보까지 잃게 되는 경우
4) 삽입이상(insertion anomaly)
① 릴레이션 R에 특정 튜플을 삽입시, 원하지 않는 불필요한 정보까지도 삽입해야 하는 현상. 그렇지 않으면 삽입이 되지 않는 현상
② 예제
ü ‘암호학’ 과목을 삽입하기 위해서는 ‘학번’ 이 기본키이므로 아무 학번이라도 함께 넣어야 하는 경우
→ 정규화 과정을 거쳐서 이러한 이상 현상을 줄여 나갈 수 있음
(4) 데이터 종속성과 정규화
1) 제1정규형 (1NF, first normal form)
① 모든 도메인의 값이 원자값 (atomic value) 를 가지고 있을 때 1차 정규형에 속한다.
② 반복/복수의 속성값 갖는 속성제거
반복집합이 있는 비정규 릴레이션
반복 집합을 제거하여 모든 속성값이 원자값으로 구성된 1NF로 만듬.
2) 제2정규형 (2NF, second normal form)
① 어떤 릴레이션 R이 제1정규형을 만족하면서, 키가 아닌 모든 속성이 기본키에 완전 함수적 종속인 릴레이션
② 부분 함수 종속성 제거
제1정규형 릴레이션에서 부분함수 종석성을 제거함.
모든 속성이 키에 대해서 완전 함수적 종속인 제2정규형 릴레이션을 만듬.
3) 제3정규형 (3NF, third normal form)
① 어떤 릴레이션 R이 2NF이고, 키에 속하지 않은 애트리뷰트들이 기본키에 이행적 함수 종속이 아닐 경우 제3정규형(3NF)에 속한다.
② 이행적 종속성 제거
제2정구형 릴레이션에서 이행적 함수 종속을 제거함.
이행적 함수 종속을 없앤 제3정규형 릴레이션을 만듬.
4) BCNF (boyce-codd normal form)
① 정의
ü 모든 결정자가 후보키(candidate key)인 관계
ü 결정자이면서 후보키가 아닌 것 제거
5) 제4정규형
① 다치종속성(multivalued dependency)
ü 릴레이션 R의 속성 X, Y, Z가 있을 때 (X, Y)에 대응하는 Z의 집합이 X값에만 종속되고, Y값에 무관하면 Z는 X에 다치종속이라 하고, X Y로 표기한다.
ü 다치종속성이란 속성들이 집합 값을 가지지 못하게 하는 제1정규형의 함수 종속성에 기인한다.
ü 다치종속의 예
이름 | 거래처 | 부양자 |
김사원 | SAMSUNG | 김부양 |
김사원 | SAMSUNG | 김부군 |
김사원 | LGU+ | 김부양 |
김사원 | LGU+ | 김부군 |
• 사원테이블에는 사원이 담당하는 거래처와 가족인 부양자가 각각 여러 개씩 존재한다.
• 거래처는 사원의 업무에 관련된 사항이며, 부양자는 사원의 급여에 관련된 사항이다. 거래처와 부양자 간에는 아무 관련성이 없다.
• 테이블의 일관성을 유지하기 위해서 사원마다 거래처와 부양 가족의 모든 가능한 조합들을 모두 포함해야 하며, 이로 인해서 거래처와 부양자가 여러 개 중복될 수 밖에 없다.
• 이런 제약 조건은 사원 테이블에 대한 다치 종속으로 표현된다. 두개의 독립적인 1:N 관계인 사원:거래처와 사원:부양자가 동일한 테이블에 존재할 때 다치 종속성이 발생한다.
• 자료의 성격에 따라서 사원:거래처 테이블과 사원:부양자 테이블로 분해한다면 중복은 사라진다.
이름 | 거래처 |
| 이름 | 부양자 |
김사원 | SAMSUNG |
| 김사원 | 김부양 |
김사원 | LGU+ |
| 김사원 | 김부군 |
6) 제5정규형
① 모든 조인 종속은 후보키를 통해서만 성립된다.
② 조인종속
ü 한 테이블을 분해했다가 분해된 결과들을 다시 조인하면 당연히 원래의 테이블로 복원된다고 기대하지만 그렇지 못한 경우가 있다. 다시 조인하면 예상하지 못했던 튜플들이 생성되는 경우가 발생한다.
ü 조인 종속(JD, join dependency)은 테이블을 분해한 결과를 다시 조인했을 때 원래의 테이블과 동일하게 복원되는 제약조건이다. 조인 종속성은 다치 종속의 개념을 더 일반화한 것이다.
'정보처리기사 > 데이터베이스' 카테고리의 다른 글
12. 데이터베이스 실기 기출문제풀이 (0) | 2017.08.01 |
---|---|
11. 데이터베이스 고급기능(1) (0) | 2017.08.01 |
09. 개체-관계(E-R) 모델 (0) | 2017.08.01 |
08. 데이터모델링 및 설계 (0) | 2017.08.01 |
07. SQL(Structure Query Language) (0) | 2017.08.01 |