Database

[DB] 데이터베이스 정규화 (1NF, 2NF, 3NF) 개념 및 정리

pongic 2022. 10. 9. 17:03
반응형
정규화 (Normalization)

데이터베이스의 설계를 재구성하는 기술이다. 정규화를 통해 불필요한 데이터를 없앨 수 있고 삽입, 삭제, 갱신 시 발생할 수 있는 각종 이상현상들을 방지할 수 있다.

 

 

이상현상
  • 갱신 이상 (Update anomaly)
  • 삽입 이상 (Insertion anomaly)
  • 삭제 이상 (Deletion anomaly)

 

갱신 이상

동일한 데이터가 여러 행에 걸쳐 있을 때에 어느 데이터를 갱신해야 하는지에 대한 논리적 일관성이 없어 발생

다음과 같이 두 개의 레코드가 동일한 사람일 때 (519번) 갱신을 하는 경우 어떤 데이터를 해야 하는지에 대한 문제가 발생

 

삽입 이상

데이터 삽입을 못하는 경우

Dr.Newsome이 아직 가르칠 수업이 정해지지 않은 경우에는 데이터를 추가하지 못하는 상황이 발생한다. 수업을 NULL와 같은 값으로 지정하지 않는 이상 데이터를 추가할 수 없다.

 

삭제 이상

데이터의 특정 부분을 지울 때 의도치 않게 다른 부분들도 함께 지워지는 현상

한 직원 데이터의 수업 관련 데이터를 지우기 위해서는 레코드 전체가 사라져 결국에는 의도치 않게 직원의 다른 데이터들도 같이 삭제되는 현상이 발생한다.

 

 

 

정규화 과정

제 1정규화 (1NF)

테이블의 칼럼이 원자 값(하나의 값)을 갖도록 테이블을 분해하는 것이다.

현재 테이블은 속성 하나는 하나의 속성값만을 가져야 한다는 1차 정규형에 위배된다.

제 1정규화를 거치면 아래와 같다.

 

제 2정규화 (2NF)

제 1정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것이다. 완전 함수 종속이라는 것은 기본키의 부분집합이 결정자가 되어선 안된다는 것을 의미한다.

이 테이블에서 기본키는 (학번, 수업)으로 복합키이다. 그리고 (학번, 수업)인 기본키는 성적을 결정하고 있다.

 

강의실이라는 컬럼은 기본키의 부분집합인 수업에 의해 결정될 수 있다.

즉, 기본키(학번, 수업)의 부분키인 수업이 결정자이기 때문에 위의 테이블은 아래와 같이 분해하여 별도의 테이블로 관리하여 제 2정규화를 만족시킬 수 있다.

 

제 3정규화 (3NF)

제 2정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것이다. 이행적 종속이라는 것은 

A -> B, B -> C 가 성립할 때 A -> C 가 성립되는 것을 의미한다.

기존의 테이블에서 학번이 수업을 결정하고 있고 수업은 강의실을 결정하고 있다. 그렇기 때문에 아래와 같이 테이블을 분해해야 한다.

 

BCNF 정규화

제 3정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해하는 것이다.

특강 수강 테이블에서 기본키는 (학생 번호, 특강 이름)이다. 그리고 기본키는 교수를 결정하고 있는데 또한 여기서 교수는 특강 이름을 결정하고 있다. 

하지만 문제는 교수가 특강이름을 결정하는 결정자이지만 후보키가 아니라는 것이다. 그래서 BCNF 정규화를 만족시키기 위해서 테이블을 아래와 같이 분해한다.

 

 

참고할만한 사이트

https://www.w3schools.in/dbms/database-normalization

 

Database Normalization

Database normalization is a database schema design technique, by which an existing schema is modified to minimize redundancy and dependency of data. Normalization split a large table into smaller tables and define relationships between them to increases th

www.w3schools.in

https://www.guru99.com/database-normalization.html

 

What is Normalization in DBMS (SQL)? 1NF, 2NF, 3NF Example

Normalization in Database 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, 6NF. Normalization is a database design technique which organizes tables in a manner that reduces redundancy and dependency of data.

www.guru99.com

반응형