정규화(Nomalization)

데이터 베이스 정규화란?

정규화 (Normalization)

데이터의 종복을 줄이고 무결성을 향상시키는 등 여러 목적을 달성하기 위해서 재디자인하는 것이다.

목적

  • 불필요한 데이터를 제거, 데이터의 중복을 최소화 하기 위해서

  • 데이터베이스 구조 확장 시 재디자인을 최소화

  • 다양한 관점에서의 query를 지원하기 위해서

  • 무결성 제약조건의 시행을 간단하게 하기 위해서

  • 각종 이상 현상(Anomaly) 을 방지하기 위해서, 테이블의 구성을 논리적이고 직관적으로 한다.

💡 이상현상이란?

정규화의 과정

제 1 정규화 (First Normal Form, 1NF)

테이블 컬럼이 원자값(하나의 값)을 갖도록 테이블을 분리시키는 것을 말한다.

  • 어떤 Relation에 속한 모든 Domain이 원자값(atomic value)만으로 되어 있다.

  • 모든 attribute에 반복되는 그룹(repeating group)이 나타나지 않는다.

  • 기본 키를 사용하여 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 한다.

제 2 정규화 (Second Normal Form, 2NF)

제 2정규화를 수행 했을 경우 테이블의 모든 컬럼이 완전 함수적 종속을 만족한다. (부분 함수적 종속을 모두 제거되었다.) 이를 이해하기 위해서는 부분 함수적 종속과 완전 함수적 종속이라는 용어를 알아야 한다.

  • 함수적 종속 X의 값에 따라 Y값이 결정될 때 X -> Y로 표현하는데, 이를 Y는 X에 대해 함수적 종속 이라고 한다. 예를 들어 학번을 알면 이름을 알 수 있는데, 이 경우엔 학번이 X가 되고 이름이 Y가 된다. X를 결정자이라고 하고, Y는 종속자라고 한다. 다른 말로 X가 바뀌었을 경우 Y가 바뀌어야만 한다는 것을 의미한다.

제 3 정규화 (Third Normal Form, 3NF)

테이블(Relation)이 제 3정규형을 만족한다는 것은 아래 두 가지 조건을 만족하는 것을 의미한다.

  • Relation이 제 2정규화 되었다.(The relation is in second normal form)

  • 기본 키(primary key)가 아닌 속성(Attribute)들은 기본 키에만 의존해야 한다.

출처 https://wkdtjsgur100.github.io/database-normalization/ https://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4_%EC%A0%95%EA%B7%9C%ED%99%94

Last updated