[데이터베이스] 정규화의 원칙

Shinny·2022년 4월 11일
0
post-custom-banner

정규화의 원칙

1차 정규화: 1차 정규형은 각 로우마다 컬럼의 값이 1개씩만 있어야 한다. 이를 컬림이 원자값을 갖는다고 말하는데 만일 하나의 컬럼이 2개 이상의 값을 가지면 1차 정규형을 만족하지 못한다고 말한다. 그리고 2개의 값이 있었던 것을 1차 정규화하게 되면 데이터 redundancy가 증가하게 되는데, 이는 데이터의 논리적 구성을 위해 희생하는 것으로 볼 수 있다.

2차 정규화: 2차 정규형은 테이블의 모든 컬럼이 완전 함수적 종속을 만족하는 것이다. 즉 기본키 중에 특정 컬럼에만 종속된 컬럼(부분적 종속)이 없어야 한다는 것인데, 만일 테이블 컬럼이 Student, Age, Subject가 있다면 Age는 Subject와는 별개로 Student에만 종속되어 있다. 즉 Student 컬럼의 값을 알면 Age값을 알수 있기 때문에, Student와 Age, Student와 Subject 이렇게 테이블을 별도로 관리하여 제 2 정규형을 만족시킬 수가 있게 된다.

3차 정규화: 3차 정규형은 2차 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것이다. 여기서 이행적 종속이란 A -> B, B -> C가 성립할 때, A -> C가 성립되는 것을 의미한다. 이 또한 2차 정규화와 마찬가지로 테이블 분리로 해결 가능한데, 이를 통해 데이터가 논리적인 단위로 분리될 수 있고 데이터의 redundancy도 줄일 수 있게 된다.

BCNF : 이는 3차 정규형을 조금 더 강화한 버전으로 볼 수 있다. 이를 통해 3차 정규형으로 해결 불가능한 이상현상을 해결할 수 있는데, BCNF는 3차 정규형을 모두 만족하면서 모든 결정자가 후보키가 되도록 테이블을 분해하는 것이다.

profile
비즈니스 성장을 함께 고민하는 개발자가 되고 싶습니다.
post-custom-banner

0개의 댓글