본문 바로가기

DBMS

[DBMS] 08

정규화

- 삽입/수정/삭제의 이상현상을 제거

- 데이터의 중복 최소화

- 대부분 3차 정규화까지만 진행

1차 정규화(1NF)

- 하나의 컬럼에 값이 1개씩만 있어야 한다.

- 반복적인 컬럼 값이 나타나는 경우

(ex)

1. 반복적인 컬럼 값(검색이 힘들다)

2. 정규화 진행

2차 정규화(2NF)

- 테이블의 모든 컬럼이 서로 관계가 있어야 한다.

- 모든 컬럼이 서로 관계가 없는 경우

(ex)

1. 서로 관계가 없는 컬럼

2. 정규화 진행

3차 정규화(3NF)

(ex)

1. 중복 데이터 발생 가능

- 우편번호로 시, 구, 동을 알 수 있다.

- 중복된 데이터가 생길 가능성이 있다.

2. 정규화 진행

※ 데이터베이스에서 정규화가 필요한 이유

- 데이터베이스를 잘못 설계하면 불필요한 데이터 중복으로 인해 공간이 낭비된다.

이러한 현상을 "이상(Anomaly)"이라고 한다.


 

이상현상

이상 현상의 종류

1. 삽입 이상

- 새 데이터를 삽입하기 위해 불필요한 데이터도 삽입해야 하는 문제

2. 갱신 이상

- 중복되는 행 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제

3. 삭제 이상

- 행을 삭제하면 필요한 데이터까지 함께 삭제되는 문제

이상 현상 발생 이유

- 테이블이 정규화가 되어 있지 않기 때문이다.

- 정규화를 진행하기 위해서는 각 컬럼간의 관련성을 파악해야 하고,
   이 관련성을 "함수적 종속성(Functional Dependency)" 이라고 한다.

- 하나의 테이블에서는 하나의 함수적 종속성만 존재하도록 정규화한다.

(ex)

※ 이상 현상 예제

1. 삽입 이상

- 담당 프로젝트가 정해지지 않은 사원이 있다면,
   프로젝트코드에 NULL을 작성할 수 없으므로 이 사원은 테이블에 추가될 수 없다.
   따라서 '미정' 이라는 프로젝트 코드를 따로 만들어서 삽입해야 한다.

2. 갱신 이상

- 한 명의 사원은 반드시 하나의 부서에만 속할 수 있다.

   만약 "홍길동"이 보안팀으로 부서를 옮길 시 3개 모두 갱신해주지 않는다면

   개발팀인지 보안팀인지 알 수 없다.

3. 삭제 이상

- "이순신"이 담당한 프로젝트가 드랍된다면 이순신 행을 모두 삭제하게 된다.

   따라서 프로젝트에서 드랍되면 정보를 모두 드랍하게 된다.

'DBMS' 카테고리의 다른 글

[DBMS] 10  (0) 2021.11.03
[DBMS] 09  (0) 2021.11.02
[DBMS] 07  (0) 2021.10.31
[DBMS] 06  (0) 2021.10.30
[DBMS] 05  (0) 2021.10.29