RUBY
[220614] SQL개발자 _ 01. 정규화 본문
정규화
(Normalization)
관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스
정규화의 기본 목표
관련이 없는 함수 종속성은 별개의 릴레이션으로 표현한다.
정규형 - 정규화 된 결과
- 기본 정규형
- 제 1 정규형
- 제 2 정규형
- 제 3 정규형
- BCNF(보이스/코드 정규형) - 고급 정규형
- 제 4 정규형
- 제 5 정규형
정규화 장점 - 이상 현상의 발생 가능성을 줄임
정규화 단점 - 연산 시간이 증가함
제 1 정규형
릴레이션에 속한 모든 속성의 도메인이 더 이상 분해되지 않는 원자값으로만 구성된 정규형이다.
제 2 정규형
릴레이션에 제 1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속 되면 제 2 정규형에 속한다.
제 1 정규형이 속하는 릴레이션이 제 2 정규형을 만족하게 하려면, 부분 함수 종속을 제거하고 모든 속성이 기본키에 완전 함수 종속되도록 릴레이션을 분해하는 정규화 과정을 거쳐야 한다.
- 완전 함수 종속
어떤 속성이 기본키에 대해 완전히 종속일 때 - 부분 함수 종속
어떤 속성이 기본키가 아닌 다른 속성에 종속되거나, 기본키가 여러 속성으로 구성되어 있을 경우 기본키를 구성하는 속성 중 일부만 종속될 때
제 3 정규형
릴레이션이 제 2 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제 3 정규형에 속한다.
- 이행적 함수 종속
- A →B, B→C인 경우 A→C가 성립될때
- 즉, A를 알면 B를 알고 그를 통해 C를 알 수 있는 경우를 의미
BCNF
릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이면 BCNF에 속한다.
- 하나의 릴레이션에 여러 개의 후보키가 존재할 수도 있는데, 이런 경우는 제 3 정규형까지 모두 만족하더라도 이상 현상이 발생할 수 있다. 이러한 이상 현상을 해결하기 위해 제 3 정규형보다 좀 더 엄격한 제약 조건을 제시한 것이 BCNF이다.
고급 정규형 (제 4 정규형, 제 5 정규형)
- 제 4 정규형
릴레이션이 BCNF를 만족하면서, 함수 종속이 아닌 다치 종속(MVD : Multi Valued Dependency)를 제거해야 만족할 수 있다. - 제 5 정규형
릴레이션이 제 4 정규형을 만족하면서 후보키를 통하지 않는 조인 종속(JD : Join Dependency)을 제거해야 만족할 수 있다.
실제로 데이터베이스를 설계할 때 모든 릴레이션이 무조건 제 5 정규형에 속하도록 분해해야 하는 것은 아니다.
오히려 그런 경우는 비효율적인 경우가 많다.
일반적으로 제 3 정규형이나 BCNF에 속하도록 릴레이션을 분해하여 데이터 중복을 줄이고 이상 현상이 발생하는 문제를 해결한다고 한다.
'자격증 > SQL 개발자' 카테고리의 다른 글
SQL개발자 - 제 1장. 데이터 모델링의 이해 (1) | 2022.09.03 |
---|---|
[220614] SQL개발자 _ 02. 반정규화 (0) | 2022.06.14 |
SQL개발자 _ 제 39회 기출문제(작성중) (0) | 2022.06.14 |
[220609] SQLD _ 14. 논리연산자 (0) | 2022.06.09 |
[220609] SQLD _ 13. 관계연산자(비교연산자) (0) | 2022.06.08 |
Comments