데이터 종속성과 정규화
정규화의 의미
데이터의 논리적 표현 : 고려해야 할 내용
- 속성들 사이에 존재하는 관계성(Relationship) : 데이터 종속성(Data Dependency)
- 효율적인 데이터 처리
- 데이터의 일관성 유지
정규화(Normalization)
자료 저장 공간을 최소화하고 데이터베이스 내의 데이터가
불일치 되는 위험을 최소화하여 좋은 데이터베이스 스키마를
설계하는 것을 목적으로 함
데이터베이스 스키마가 잘못 설계된 경우
-
중복저장의 이슈가 생길 수 있음
-
중복된 데이터의 저장으로 인해 저장 공간이 낭비된다는 문제점 이외에도 중복되어
저장된 데이터 떄문에 릴레이션의 수정, 상입, 삭제와 같은 조작을 할 때
여러 가지 곤란한 이상(Anomaly)현상이 생김
이상현상
- 삭제 이상
- 유용한 정보를 함께 삭제하지 않고는 어떤 정보를 삭제하는 것이 불가능한 것
- 삽입 이상
- 불필요한 정보를 함께 저장하지 않음
- 어떤 정보를 저장하는 것이 불가능하기에 원하지 않는 정보를 강제로 삽입해야 하는 것
- 기본키에는 널 값을 저장할 수 없기 때문에 릴레이션을 삽입하고자 한다면
임시로라도 값을 삽입해야 한다.
- 수정 이상
- 중복 데이터 중에서 일부만 갱신되어 정보의 모순이 발생하는 것
함수 종속
이상 현상들이 일어나는 근본적인 이유
=> 서로 다른 정보를 하나의 릴레이션으로 표현하려 하기 때문
정규화 (Normalization)
문제를 해결하기 위해서 종속성(Dependency)를 분석하여
하나의 릴레이션에는 기본적으로 하나의 종속성으로 표현되도록 분해
데이터의 관계성을 분석하는 목적
=> 데이터의 의미를 활용하여 좋은 데이터베이스 스키마를 설계하는 것
스키마 설계
- 속성들을 수집
- 이들 간에 존재하는 제약조건들을 식별
- 릴레이션으로 그룹
스키마 변환 (Schema Tranformation)
- 이미 만들어진 릴레이션들도 바람직한 형태의 릴레이션들로 다시 변환
스키마 변환은 다음과 같은 3가지 원리에 기초함
-
정보 표현의 무손실 (Nonloss Representation on Information)
- 하나의 스키마에서 다른 스키마로 변환시킬 경우 정보의 손실이 있어서는 안됨
-
최소의 데이터 중복성 (Minimal Data Redundancy) 허용
-
분리의 원칙 (Orinciple of Separation)
- 하나의 독립된 관계성은 별도의 릴레이션으로 분리시켜 표현
함수 종속 (FD : Functional Dependency)
어떤 릴레이션 R에서 X와 Y를 각각 R의 속성 집합의 부분집합일 경우에 속성 X의
각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관 되어 있을 때
Y는 X의 함수 종속
결정자 (Determinant)
주어진 릴레이션에서 다른 속성(또는 속성들의 집합)을
고유하게 결정하는 하나 이상의 속성
완전 함수 종속 (FFD : Full Functional Dependency)
일반적으로 릴레이션 R의 어떤 속성 Y가 다른 속성 X에 함수 종속이면서
X의 진부분 집합에는 함수 종속이 아닐 때 Y는 X에 완전 함수 종속
부분 함수 종속 (PFD : Partial Functional Dependency)
S의 부분집합으로서, S와 일치하지 않는 집합
=> 즉, 자기 자신을 제외한 부분 집합
함수 종속 다이어그램 (FD Diagram)
릴레이션 내의 속성들의 종속 관계를 보다 쉽게 이해하기 위해서는
이를 도식적으로 표현한 것을 말함
이름 <= (부분 함수 종속) = [학번, 과목명] = (완전 함수 종속) => 성적
정규화 과정
제 1정규형 (1NF: First Normal Form)
- 어떤 릴레이션 R에 속한 모든 도메인이 원잣값 (Atomic Value)
- 릴레이션의 속성값이 반복 집단이 없는 즉, 더 이상 분해될 수 없는 원잣값으로만 구성
- 반복 집합이 있는 비정규 릴레이션
(반복 집합: 한 개의 기본키 값에 대해서 두 개 이상의 값을 가질 수 있는 속성) - 반복 집합을 제거함
제 2정규형 (2NF: Second Normal Form)
- 어떤 릴레이션 R이 제 1정규형이고, 키에 속하지 않는 속성 모두가 키에 완전 함수 종속
- 모든 속성이 키에 완전 함수 종속임
- 부분 함수의 종속성을 제거함
제 3정규형 (3NF: Third Normal Form)
- 어떤 릴레이션 R이 제 2정규형이고,
모든 속성들이 기본키에 이행적 함수 종속(Transitive FD)을 제외
이행적 함수 종속성
- 3개의 속성에 존재하는 함수의 종속성을 의미
보이스 / 코드 정규화
- 삭제 이상 : 결정자가 후보키가 아닌 릴레이션의 삭제 이상
- 결정자 : 주어진 릴레이션에서 다른 속성을 고유하게 결정하는 하나이상의 속성
- 후보자 : 릴레이션을 구성하는 속성들 중에서 각 튜플을 유일하게 식별하기 위해 사용하는
하나 혹은 그 이상의 속성들의 집합 (유일성, 최소성) - 수정 이상 : 결정자가 후보키가 아닌 릴레이션에서의 갱신 이상
-
후보키가 아닌 결정자를 제거함
- 키가 아니면서 결정자 역할을 하는 속성과 그 결정에 함수적으로 종속하는 속성을 하나의 릴레이션에 넣음
- 결정자는 기본키가 됨
-
기존 릴레이션에 결정자를 남겨서 기본키의 구성교수가 되도록 함
- 새로운 릴레이션에 대한 외래키
정규화