정규화(Normalization)
- 기본적으로 데이터에 대한 중복성을 제거하여 준다
- 데이터를 분해하는 과정이다
- 데이터가 관심사별로 처리되는 경우가 많기 때문에 성능이 향상되는 특징이다
1NF(First Normal Form)
1NF를 만족하려면 도메인이 원자값이어야 한다.
2NF(Second Normal Form)
2NF를 만족하려면 부분적 함수 종속을 제거해야 한다.
3NF(Third Normal Form)
3NF를 만족하려면 이행적 함수 종속을 제거해야 한다. 이행적 종속이라는 것은 A -> B, B -> C가 성립할 때 A -> C가 성립되는 것을 의미한다.
BCNF(Boyce and Codd Normal Form)
BCNF를 만족하려면 결정자이면서 후보키가 아닌 것을 제거해야 한다.
반정규화(De-Normalization)
데이터베이스 성능 향상 등을 위해 정규화된 데이터를 의도적으로 정규형을 위배한 데이터 구조로 만드는 행위
일반적으로 정규화가 잘 되어 있으면 입력, 수정, 삭제의 성능이 향상되고 반정규화를 많이하면 조회의 성능이 향상된다고 인식될 수 있다. 그러나 데이터 모델링을 할 때 반정규화만이 조회 성능을 향상시킨다는 고정관념은 탈피되어야 한다. 정규화를 해서 성능이 저하되기는커녕 정규화를 해야만 성능이 향상되는 경우가 아주 많이 나타나기 때문이다.
참고
도서 : SQL 전문가 가이드
'프로그래밍 > DB' 카테고리의 다른 글
관계 (0) | 2021.09.15 |
---|---|
DDL과 DML, DCL, TCL (0) | 2021.09.14 |
인덱스(Index) (0) | 2021.09.14 |
트랜잭션 이해 2 - 격리, 단계, 수준 (0) | 2021.09.07 |
트랜잭션 이해 (0) | 2021.09.05 |