320x100
320x100

정규형 (Normalization)

: 관계형 데이터 모델에서 데이터의 중복성을 제거하여, 이상 현상 (Anomaly)을 방지하고, 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정

 

- 이상 (Anomaly)

: 정규화를 거치지 않은 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 발생하는 예기치 않은 현상

: 삽입 이상, 삭제 이상, 갱신 이상이 있음

 

- 정규화의 장점

: 중복 데이터를 최소화하여 테이블 불일치 위험이 줄일 수 있음

: 수정, 삭제 시 이상 현상을 방지함으로써 데이터 구조의 일관성을 개선할 수 있음

: 데이터 삽입 시 테이블 구조 변경을 최소화 할 수 있음

: 한 테이블의 데이터 용량을 줄일 수 있음

 

- 정규화의 단점

: 테이블 분리로 인해 테이블간 JOIN 연산이 많아짐

: 구조에 따라 질의에 대한 응답속도가 빨리지거나 느려질 수 있음

: 조인이 많이 발생하여 성능 저하가 발생하면 반정규화가 필요

 

- 정규화의 단계

: 제 1 정규형 ~ 제 5 정규형 (1NF ~ 5NF)

 

 

 

 

 

제 1 정규형 (1NF)

: 각 컬럼이 하나의 속성만을 가진다

: 하나의 컬럼은 같은 종류나 타입을 가진다

: 각 컬럼이 유일한 이름을 가진다

: 컬럼의 순서가 상관 없어야 한다

 

- 정규화 이전

출처: https://code-lab1.tistory.com/48

 

- 정규화 이후

출처: https://code-lab1.tistory.com/48

: 각 컬럼이 원자 값을 갖도록 테이블을 분리

 

 

 

 

 

제 2 정규형 (2NF)

: 제 1 정규형을 만족해야 한다

: 모든 컬럼이 부분 종속이 없어야 한다 (완전 종속을 만족해야한다)

 

※ 부분 종속 (Partial Dependency)

: 테이블의 특정 속성 (종속자)이 기본키가 아닌 다른 속성에 종속되는 경우

: 기본키가 여러 개일 때, 한 기본키에만 종속되는 속성이 있는 경우

 

※ 완전 종속 (Full Dependency)

: 종속자가 기본키에만 종속되며, 기본키가 여러 개일 때 모든 기본키 속성으로만 종속자를 알 수 있어야함

: 기본키의 부분집합이 결정자가 되어서는 안된다

 

- 정규화 이전

출처: https://code-lab1.tistory.com/48

: 학생 번호와 과목이 기본키인데, 지도 교수의 경우 과목만 알면 알 수 있음

 

- 정규화 이후

출처: https://code-lab1.tistory.com/48

: 과목과 지도 교수 정보를 다른 테이블로 분해하여 완전 함수 종속성을 이행

 

 

 

 

 

 

제 3 정규형 (3NF)

: 제 2 정규형을 만족해야 한다

: 기본키를 제외한 속성들 간의 이행 함수 종속이 없어야 한다

 

※ 이행 종속 (Transitive Dependency)

: 테이블에 X, Y, Z라는 3개의 속성에 대해 X > Y, Y > Z라는 종속 관계가 있을때 X > Z가 성립되는 경우

: X를 알면 Y를 알고, Y를 통해 Z를 알 수 있는 경우

 

- 정규화 이전

출처: https://code-lab1.tistory.com/48

: ID를 통해 등급을 알 수 있는데, 등급을 통해서 할인율을 알 수 있다

 

- 정규화 이후

출처: https://code-lab1.tistory.com/48

: 등급과 할인율에 대한 속성을 테이블로 분리하여 이행 함수 종속을 제거

 

 

 

 

 

보이스 코드 정규형 (BCNF, Boyce-Codd Normal Form)

: 제 3 정규형을 강화한 정규형

: 제 3 정규형을 만족해야 한다

: 모든 결정자가 후보키 집합에 속해야한다

 

※ 후보키 (Candidate Key)

: 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합

: 기본키가 될 수 있는 후보로 유일성과 최소성을 동시에 만족해야함

 

※ 유일성

: 하나의 키로 특정 행을 바로 찾아낼 수 있는 속성

 

※ 최소성

: 키를 구성하는 속성들 중 꼭 필요한 최서한의 속성들로만 키를 구성하는 성질

 

- 정규화 이전

출처: https://code-lab1.tistory.com/48

: 과목은 기본키지만, 과목 > 지도교수는 성립하지 않는다 (같은 과목을 다른 교수가 가르칠 수 있기 때문)

: 그러나, 지도교수 > 과목은 성립하게 되기 때문에 후보키 집합이 아닌 속성 (지도교수)가 결정자가 되어버린 상황

: 위 경우 제 3 정규형은 만족한다

 

- 정규화 이후

출처: https://code-lab1.tistory.com/48

: 지도 교수와 과목에 대해 따로 테이블로 분리하여 해결한다

 

※ 보통의 경우 BCNF까지만 정규화를 수행한다. 그 이상의 정규화를 수행하면 정규화의 단점이 발생하기 때문 (테이블간 JOIN이 많아지는 문제)

 

 

 

 

 

제 4 정규형

: BCNF를 만족해야 한다

: 다치 종속이 없어야 한다

 

※ 다치 종속 (Multi-valued Dependency)

: 두 개의 속성이 1:N 관계로 대응하는 관계

: 독립적인 속성 X,Y가 있을때, X > Y 라는 종속성이 존재하는데 X는 단일 값인데 반해 Y는 다중 값인 경우

 

- 정규화 이전

출처: https://code-lab1.tistory.com/270

: 학생번호는 단일 값인데 반해 과목과 취미가 다중 값을 가진다

 

- 정규화 이후

출처: https://code-lab1.tistory.com/270

: 위 두 테이블은 여전히 다치 종속성을 가지지만, 2개 이상의 컬럼이 하나의 컬럼에 다치 종속되지 않기 때문에 제 4 정규형을 만족한다

 

 

 

 

 

 

제 5 정규형 (5NF, Project Join Normal Form(PJNF))

: 중복을 제거하기 위해 분해할 수 있을 만큼 전부 분해하는 것

: 제 4 정규형을 만족해야 한다

: 조인 종속이 없어야 한다

: 필요한 데이터가 사라지지 않는 무손실 분해가 되고, 불필요한 데이터가 생기지 않는 비부가적 분해가 된 릴레이션 (테이블)

 

※ 조인 종속 (Join Dependency)

: 한 테이블을 분해했다가 분해한 결과들을 다시 조인했을때 원래의 테이블과 동일한 경우

 

- 정규화 이전

출처: https://velog.io/@wisdom-one/%EC%A0%95%EA%B7%9C%ED%99%94Normalization

: 위 테이블의 경우 개발자 > 자격증, 개발자 > 언어, 자격증 > 언어가 연관이 있으므로 제 5 정규형에 위배된다

: 위 테이블을 분해하고 다시 조인하면 원래 테이블로 돌릴 수 있기 때문에 조인 종속성이 존재한다 (더 분해할 수 있는 여지가 남아있다는 의미)

 

- 정규화 이후

출처: https://velog.io/@wisdom-one/%EC%A0%95%EA%B7%9C%ED%99%94Normalization

: 위 상태의 경우 더 이상 분해할 수 없기 때문에 조인 종속성이 없으며 제 5 정규형에 만족한다

: 별다른 이점이 없어 잘 이용하지 않는 정규형

 

 

 

 

 

 

Reference

 

정규화 (1NF, 2NF, 3NF, BCNF, 4NF, 5NF)

1. 정의 Normalization 관계형 데이터 모델에서 데이터의 중복성을 제거하여 이상 현상(Anomaly)을 방지하고, 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정을 말한다. > #### 💡 이

velog.io

 

[DB] 정규화(Normalization)란? 정규화 예시, 1NF, 2NF, 3NF, BCNF

정규화(Normalization)란? 정규화는 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다. 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 이를 단계

code-lab1.tistory.com

 

10. 함수적 종속(Functional Dependency)

함수적 종속(Functional Dependency) 함수적 종속이란 어떤 릴레이션 R이 있을때 X와 Y를 각각 속성의 부분집합이라고 가정해봅니다. 여기서 X의 값을 알면 Y의 값을 바로 식별할 수 있고, X의 값에 Y의

dodo000.tistory.com

 

[DB] 키의 종류, 최소성과 유일성

각 행을 유일하게 식별할 수 있는 속성들의 집합이다.서로 구분만 할 수 있다면 '슈퍼키'라고 할 수 있다.학번 : 학번만 가지고 학생들을 구분할 수 있으므로 슈퍼키가 맞다.주민등록번호 : 주민

velog.io

 

[DB] 제 4정규형과 제 5정규형, 4NF와 5NF

정규화란? 정규화는 이상현상(Anomaly)이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다. 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 이를 단계별로

code-lab1.tistory.com

 

04 정규화 (Normalization) 5

- 4정규형 다가 종속 개념이 기반이 되는 정규형이다. 다가 종속(MVD: Multivalued Dependency): 한 릴레이션에 다가 속성(Multivalued Attributed)이 두 개 이상 존재할 때 발생할 수 있다. 즉 하나의 다 속성의

mangastorytelling.tistory.com

 

300x250
728x90