정규화 = 이상 현상이 발생하지 않도록, 릴레이션을 분해하는 과정
- 릴레이션을 관련 있는 속성들로만 구성
- 관련 없는 함수 종속성은 별개의 릴레이션으로 표현
- 함수적 종속성을 판단하여 정규화
함수적 종속성 (FD, Functional Dependency)
- 릴레이션 내 모든 투플에서 하나의 속성(X)가 다른 속성(Y)을 결정함
X -> Y 로 표현 (X = 결정자 / Y = 종속자)
- X값에 따라 Y값이 정해지는 것!
기본 정규형
제 1정규형 (1NF)
= 릴레이션에 속한 모든 속성이 원자 값을 가져야함
- 제 1정규형을 만족해야 관계 데이터베이스의 릴레이션이 됨 (관계 db는 다중값 허용X)
- 제 1정규형 만족함에도 이상 현상이 발생하는 이유: 기본키에 완전 함수 종속되지 못한 속성이 있기 때문
제 2정규형 (2NF)
= 릴레이션이 제 1정규형에 속하고 + 기본 키가 아닌 모든 속성이 기본 키에 완전 함수 종속되야함
- 부분 함수 종속을 제거하고 모든 속성이 기본 키에 완전 함수 종속되도록 릴레이션 분해
- 완전 함수 종속 (FFD) = 종속자 Y가 결정자 X 집합 전체에 종속됨
예) 당첨여부는 {고객 아이디, 이벤트 번호}에 완전 함수 종속
- 부분 함수 종속(PFD) = 종속자 Y가 결정자 X의 일부분에도 함수적으로 종속됨
예) 고객나이는 {고객 아이디, 이벤트 번호}에 부분 함수 종속
- 제 2정규형 만족함에도 이상 현상이 발생하는 이유: 이행적 함수 종속이 존재하기 때문
제 3정규형 (3NF)
= 릴레이션이 제 2정규형에 속하고 + 기본 키가 아닌 모든 속성이 기본 키에 이행적 함수 종속이 되지 않아야함.
- 이행적 함수 종속 제거하기 위해 릴레이션 분해
- 이행적 함수 종속 (transitive FD)= X > Y / Y > Z / X > Z (이행적 함수 종속)
보이스/코드 정규형 (BCNF)
= 릴레이션이 제 3정규형에 속하고 + 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키여야함.
- 3.5 정규형 or 강한 제3규형으로 불림 : 후보키를 여러 개 가지고 있는 릴레이션에서 발생할 수 있는 해결하기 위해 제 3정규형을 보완함
- 후보키가 아닌 결정자를 제거하기 위해 릴레이션을 분해
*후보키 = 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합
'데이터베이스' 카테고리의 다른 글
[정리 노트] 관계형 데이터베이스 DB 설계 (개념적 설계, 논리적 설계) (1) | 2023.12.03 |
---|---|
Mysql 맥북 설치/실행 방법 - vs code, 터미널 (0) | 2023.11.07 |
정규화 = 이상 현상이 발생하지 않도록, 릴레이션을 분해하는 과정
- 릴레이션을 관련 있는 속성들로만 구성
- 관련 없는 함수 종속성은 별개의 릴레이션으로 표현
- 함수적 종속성을 판단하여 정규화
함수적 종속성 (FD, Functional Dependency)
- 릴레이션 내 모든 투플에서 하나의 속성(X)가 다른 속성(Y)을 결정함
X -> Y 로 표현 (X = 결정자 / Y = 종속자)
- X값에 따라 Y값이 정해지는 것!
기본 정규형
제 1정규형 (1NF)
= 릴레이션에 속한 모든 속성이 원자 값을 가져야함
- 제 1정규형을 만족해야 관계 데이터베이스의 릴레이션이 됨 (관계 db는 다중값 허용X)
- 제 1정규형 만족함에도 이상 현상이 발생하는 이유: 기본키에 완전 함수 종속되지 못한 속성이 있기 때문
제 2정규형 (2NF)
= 릴레이션이 제 1정규형에 속하고 + 기본 키가 아닌 모든 속성이 기본 키에 완전 함수 종속되야함
- 부분 함수 종속을 제거하고 모든 속성이 기본 키에 완전 함수 종속되도록 릴레이션 분해
- 완전 함수 종속 (FFD) = 종속자 Y가 결정자 X 집합 전체에 종속됨
예) 당첨여부는 {고객 아이디, 이벤트 번호}에 완전 함수 종속
- 부분 함수 종속(PFD) = 종속자 Y가 결정자 X의 일부분에도 함수적으로 종속됨
예) 고객나이는 {고객 아이디, 이벤트 번호}에 부분 함수 종속
- 제 2정규형 만족함에도 이상 현상이 발생하는 이유: 이행적 함수 종속이 존재하기 때문
제 3정규형 (3NF)
= 릴레이션이 제 2정규형에 속하고 + 기본 키가 아닌 모든 속성이 기본 키에 이행적 함수 종속이 되지 않아야함.
- 이행적 함수 종속 제거하기 위해 릴레이션 분해
- 이행적 함수 종속 (transitive FD)= X > Y / Y > Z / X > Z (이행적 함수 종속)
보이스/코드 정규형 (BCNF)
= 릴레이션이 제 3정규형에 속하고 + 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키여야함.
- 3.5 정규형 or 강한 제3규형으로 불림 : 후보키를 여러 개 가지고 있는 릴레이션에서 발생할 수 있는 해결하기 위해 제 3정규형을 보완함
- 후보키가 아닌 결정자를 제거하기 위해 릴레이션을 분해
*후보키 = 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합
'데이터베이스' 카테고리의 다른 글
[정리 노트] 관계형 데이터베이스 DB 설계 (개념적 설계, 논리적 설계) (1) | 2023.12.03 |
---|---|
Mysql 맥북 설치/실행 방법 - vs code, 터미널 (0) | 2023.11.07 |