정규화(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